Как использовать пробелы в командной строке? – windows |

Как использовать пробелы в командной строке? – windows

Пробелы в приглашении приветствовать (в строке командного кода оболочки VBA)

У меня была очень похожая проблема, которая в итоге оказалась пробелом в командной строке при автоматизации через VBA для получения содержимого из командного окна в текстовый файл. Эта тема была одной из многих, которые я поймал по пути, и которые не совсем помогли мне найти решение.

Таким образом, это может помочь другим справиться с подобной проблемой: поскольку синтаксис с кавычками всегда сложно понять, я думаю, что показ некоторых конкретных примеров всегда полезно. Дополнительная проблема, с которой вы сталкиваетесь при использовании командной строки в VBA через оболочку, заключается в том, что в строке кода часто не возникает ошибок, когда что-то идет не так: на самом деле мигание черного окна приветствия вводит в заблуждение, заставляя думать, что что-то было сделано.

В качестве примера… скажем, у меня есть папка с текстовым файлом, например,

C: Папка Alans test1.txt ( https://imgur.com/FELSdB6)

Пробел в имени папки дает проблему.

Примерно так будет работать, если папка Alans Folder существует.

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent() Shell "cmd.exe /c ""ipconfig /all > C:AlansFoldertest1.txt"""
End Sub

Это не сработает. (Это не ошибка).

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent() Shell "cmd.exe /c ""ipconfig /all > C:AlansFoldertest1.txt"""
End Sub

Включение пар цитат вокруг пути заставит его работать

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent() Shell "cmd.exe /c ""ipconfig /all > ""C:Alans Foldertest1.txt"""""
End Sub

(Кстати, если текстового файла не существует, то он будет создан).

Оглядываясь назад, мы можем увидеть, что мое решение действительно приблизительно связано с некоторыми уже данными.

Преобразовав эту строку кода в заданную вручную команду, мы получили бы

ipconfig /all > "C:Alans Foldertest1.txt"

Кажется, это работает

:/>  Особенности работы средства проверки системных файлов (SFC.exe) в среде Windows RE

Это также работает

ipconfig /all > C:AlansFoldertest1.txt

Это не

ipconfig /all > C:AlansFoldertest1.txt

Эта окончательная форма также работает и связана с решением сакра… “. Вы должны добавить кавычки вокруг каждого пути, а также заключить всю команду в кавычки “…..

cmd.exe /c "ipconfig /all > "C:Alans Foldertest1.txt""

Как использовать пробелы в командной строке? – windows |

Если двойные кавычки не решают проблему, попробуйте, например,

dir /X ~1 c:

получить список альтернативных имен файлов или каталогов. Пример вывода:

11/09/2021 12:54 AM 8,065 DEFAUL~1.XML Default Desktop Policy.xml
06/12/2021 03:49 PM <DIR> PROGRA~1 Program Files
10/12/2021 12:46 AM <DIR> PROGRA~2 Program Files (x86)

Теперь используйте короткие 8-символьные имена файлов или папок в 5-м столбце, например, PROGRA ~ 1 или DEFAUL ~ 1.XML, в своих командах. Например:

set JAVA_HOME=c:PROGRA~1Javajdk1.6.0_45 

Пробел в командах ввода cmd

Итак, у меня есть сценарий, который захватывает список пользователей, а затем устанавливает пароль для всех из них, достаточно простой? Однако, когда я получаю список пользователей, использующих выход wmic (который преобразуется в скорректированный формат с использованием цикла), каждый пользователь получает результат, аналогичный

 "Administrator "
"Guest "
"DefaultAdmin "
...

теперь этот список необходимо использовать в цикле для установки паролей, которые являются простыми для цикла для установки паролей, однако, когда вы используете этих пользователей в командной строке, они видят их как

 net user "Administrator " Password

в этом случае администратор не имеет 6 мест

Мой вопрос: как мне удалить пробелы после имен без ручного перехода в текстовый документ?

 (for /F "skip=1 delims=" %%X in ('wmic UserAccount where "LocalAccount=True" get Name') do (
for /f "delims=" %%Y in ("%%X") do (echo %%Y)
))>AllUsers.txt