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

Ввод путей с пробелами

Хитрость заключается в двойных кавычках. Сделайте эмпирическое правило заключать в двойные кавычки все пути к файлам, которые вы вводите в командной строке.

Следующая команда не будет выполняться. В пути есть пробел, и в этом месте команда прерывается, и командная строка считает, что вы ввели новую команду или параметр.

Замыкающие пробелы в bat / cmd файлах.

Если значение переменной должно содержать один или более замыкающих пробелов – используйте для этого следующий прием:

(Окаймляющий знак # используется тут при выводе значения для того, что бы стало видно наличие замыкающего пробела в значении переменной ) С другой стороны, если в предыдущем примере не использовать кавычек, то результат будет тот же. Вот и возникает соблазн написать в короткой форме.

Но есть еще аспект – когда этот пробел появился там не по вашему желанию. Например, вы скопировали участок кода с сайта, или при редактировании значения остался пробел, который вы не видите. А теперь представьте, что значение такой переменной используется (как это однажды было в моей практике) при формировании имени архивного файла или списка аргументов, передаваемых внешней программе.

Искаженное значение переменной может доставить массу хлопот. Поэтому возьмите себе за правило – перед сохранением bat файла удалять в нем замыкающие пробелы. Например, в редакторе Notepad для этого есть специальная функция – Правка – Операции с пробелами – Убрать Замыкающие Пробелы. Это сохранит вам нервы, время и пространство на диске )).

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

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

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

:/>  «Инструкции по настройке размещения клавиатуры на компьютере и переназначению клавиш (особенно для тех, у кого нет физического ввода с клавиатуры)»

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

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

C: Alans Folder test1.txt ( https://imgur.com/FELSdB6 )

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

Нечто подобное будет работать, если предположить, что папка AlansFolder существует

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

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

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:Alans Foldertest1.txt

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

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

Пробелы в значениях переменных.

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

:/>  CCleaner - как отключить автозапуск?

С переменной, в значении которой есть один или несколько пробелов, можно работать как и обычно

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

Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).

Источник