Как использовать пробелы в командной строке? – 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"Кажется, это работает
Это также работает
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



