Ввод путей с пробелами
Хитрость заключается в двойных кавычках. Сделайте эмпирическое правило заключать в двойные кавычки все пути к файлам, которые вы вводите в командной строке.
Следующая команда не будет выполняться. В пути есть пробел, и в этом месте команда прерывается, и командная строка считает, что вы ввели новую команду или параметр.
Замыкающие пробелы в 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""Пробелы в значениях переменных.
Если переменной необходимо присвоить значение пробела, то можно использовать тот же прием, который использовался в начале этой страницы
С переменной, в значении которой есть один или несколько пробелов, можно работать как и обычно
В тех случаях, когда по синтаксису пробел не должен находиться в этом месте, используют окаймляющие кавычки
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).
Источник



