Чем заменить пробел в командной строке windows
Как я могу использовать пробелы в командной строке Windows?
В этом случае одинарные кавычки не подходят. Вы должны добавить кавычки вокруг каждого пути, а также заключить всю команду в кавычки:
Да, каждый путь должен быть заключен в кавычки. Кроме того, вся команда должна была быть снова заключена в другую пару кавычек. Теперь это работает! Спасибо! @sakra у меня тоже не работает. "" C: \ Program Files \ WinRAR \ WinRAR.exe "а "C: \ Вери Табани yedekler \ Dedicated_Pokemon_Pets_DB_Backup_2014_7_10_7_2.rar" -ri1 -mt2 -m5 "C: \ Вери Табани yedekler \ Dedicated_Pokemon_Pets_DB_Backup_2014_7_10_7_2.bak"" @sakra Я хочу исключить файл с именем с пробелами CEEMEA & LATAM.doc . Что я должен делать? "C:\Program Files\WinRAR\rar" a -agmmddyy -x*CEEMEA & LATAM.doc ".rar" работал для меня, но без внешних кавычек: "C: \ Program Files (x86) \ WinRar \ Rar.exe" a "D: \ Hello 2 \ File.rar" "D: \ Hello 2 \"Я только что выяснил, что для случая, когда путь включает использование символов пробела, например, когда мне нужно получить доступ к приложению, xyz расположение которого:
Чтобы запустить это из командной строки Windows, вам нужно использовать
Если двойные кавычки не решают проблему, попробуйте, например,
получить список альтернативных имен файлов или каталогов. Пример вывода:
1.XML, в своих командах. Например:
Это простой способ. Никаких двойных двойных кавычек. Знаете ли вы, что короткий 8.3 является опцией NTFS и может быть отключен? Не надейся на это.Обведите пути, содержащие пробелы, двойными кавычками.
Тогда проблема заключается в том, что на Rar.exe самом деле является синтаксис аргумента . Вы можете использовать это неправильно. Может попробовать "D:\Hello 2\" или "D:\Hello 2" вместо "D:\Hello 2\*.*" ? cmd / C "C: \ Program Files (x86) \ WinRar \ Rar.exe" a D: \ Hello \ File.rar D: \ Hello *. * (без пробелов, и это работает), но как иметь дело с пробелами? @JAB, если вам нужно исключить файл с именем с пробелами вроде CEEMEA & LATAM.doc . Что это должно быть? "C:\Program Files\WinRAR\rar" a -x*CEEMEA & LATAM.doc ".rar"Попробуйте указать сложные имена путей в двойных кавычках (и в конце добавить расширения файлов).
CMD интерпретирует текст с двойными кавычками («xyz») как одну строку, а текст внутри одинарных кавычек («xyz») - как команду. Например:
FOR %% A in ('dir / b / s * .txt') do ('команда')
FOR %% A in ('dir / b / s * .txt') do (вывод "%% A")
И еще одна хорошая вещь, cmd не * чувствителен к регистру, как Bash. Так что "New fiLE.txt" и "new file.TXT" похожи на это.
* Примечание: переменные %% A в приведенном выше регистре чувствительны к регистру (%% A не равно %% a).
Есть ли в именах файлов подчеркивания? Как 'имя_файла' против 'имени файла'Я предпочитаю заключить команду, в () которой действует, batch что делает его немного легче читать:
это работало для меня в командном файле
Просто добавьте кавычку
Пример: «C: \ Users \ Имя пользователя»
Надеюсь, это решено!
То же самое было сказано уже полдюжины раз. Какую дополнительную ценность это добавляет?Вы должны попробовать использовать кавычки.
Это не надежно. В некоторых случаях (см. Microsoft.com/resources/documentation/windows/xp/all/proddocs/… - Обработка кавычек) вместо этого выполняется файл "C: \ Program.bat".Пробелы в командной строке (в командной строке оболочки VBA)
У меня была очень похожая проблема, которая в итоге приводила к пробелу в командной строке при автоматизации через VBA для получения содержимого из командного окна в текстовый файл. Эта тема была одной из многих, которые я нашел на этом пути, но это не совсем помогло мне найти решение.
Так что это может помочь другим с подобной проблемой: так как синтаксис с кавычками всегда трудно понять правильно, я думаю, что показ некоторых конкретных примеров всегда полезен. Дополнительная проблема, возникающая при использовании командной строки в VBA через оболочку, заключается в том, что строка кода часто не выдает ошибку, если что-то идет не так: на самом деле миг черного окна commend вводит в заблуждение, заставляя думать, что что-то было сделано.
Как пример . скажем, у меня есть папка с текстовым файлом в нем, как в
Пробел в имени папки дает проблему.
Нечто подобное будет работать, если предположить, что папка AlansFolder существует
Это не сработает. (Это не ошибка).
Включение пар цитат вокруг пути заставит его работать
(Кстати, если текстового файла не существует, то это будет сделано).
Оглядываясь назад, мы видим, что мое решение связано примерно с некоторыми уже предоставленными ..
Преобразование этой строки кода в заданную вручную команду мы бы
Это похоже на работу
Это работает также
Эта окончательная форма также работает и связана с решением от сакры… » Вы должны добавить кавычки вокруг каждого пути, а также заключить всю команду в кавычки «… ..
Я пишу сценарий пакетного файла с помощью среды командной строки Windows и хочу изменить каждое вхождение некоторого текста в файле (например. "FOO") с другим (ex. "БАР.)" Как это сделать проще всего? Любые встроенные функции?
многие ответы здесь помогли указать мне в правильном направлении, однако ни один из них не подходил для меня, поэтому я публикую свое решение.
у меня есть Windows 7, который поставляется со встроенным PowerShell. Вот скрипт, который я использовал для поиска / замены всех экземпляров текста в файле:
- powershell запускает powershell.exe, который включен в Windows 7
- -Command ". " является arg командной строки для в PowerShell.exe, содержащий команду для запуска
- (gc myFile.txt) читает содержание myFile.txt ( gc сокращенно от Get-Content команда)
- -replace 'foo', 'bar' просто запускает команду replace для замены foo С bar
- | Out-File myFile.txt передает выходные данные в файл myFile.txt
в PowerShell.exe должен быть частью вашего оператора PATH уже, но если нет, вы можете добавить его. Расположение его на моей машине C:\WINDOWS\system32\WindowsPowerShell\v1.0
просто использовать пердеть ("F ind A nd R eplace T ext" утилита командной строки):
отличная бесплатная программа для замены текста в большом наборе файлов.
будет просматривать замены рекурсивно в файлах этого Perl распределение.
единственная проблема: значок веб-сайта пердеть не совсем со вкусом, изысканный или элегантный;)
Replace-заменить подстроку с помощью подстановки строк Описание: для замены подстроки другой строкой используйте функцию подстановки строк. Приведенный здесь пример заменяет все вхождения "teh" орфографические ошибки на "the" в строковой переменной str.
создать файл заменить.vbs:
использовать этот пересмотренный скрипт (который мы будем называть replace.ВБС) просто введите следующую команду из командной строки:
cscript replace.vbs "C:\Scripts\Text.txt" "Jim " "James "
Он использует комбинацию FOR , FIND и CALL SET .
строки, содержащие символы среди "&<>]|^ может рассматриваться неправильно.
Примечание - обязательно см. обновление в конце этого ответа для ссылки на улучшенный JREPL.Летучая мышь, которая заменяет REPL.Летучая мышь!--11-->
JREPL.BAT 7.0 и выше изначально поддерживает unicode (UTF-16LE) через /UTF опция, а также любой другой набор символов, включая UTF-8, через ADO.
REPL.BAT просто читает stdin, выполняет поиск и замену регулярных выражений JScript и записывает результат в stdout.
вот тривиальный пример того, как замените foo на bar в тесте.txt, предполагая REPL.BAT находится в вашей текущей папке, или еще лучше, где-то в пределах вашего пути:
возможности JScript regex делают его очень мощным, особенно способность текста замены ссылаться на захваченные подстроки из текста поиска.
я включил ряд опций в утилиту, которые делают ее довольно мощной. Например, объединение M и X опции позволяют изменять двоичные файлы! The M многострочная опция позволяет выполнять поиск по нескольким строкам. The X опция расширенного шаблона подстановки предоставляет escape-последовательности, которые позволяют включить любое двоичное значение в текст замены.
вся утилита могла быть написана как чистый JScript, но гибридный пакетный файл устраняет необходимость явно указывать CSCRIPT каждый раз, когда вы хотите использовать утилиту.
вот REPL.Bat скрипт. Полная документация встроена в скрипт.
ВАЖНОЕ ОБНОВЛЕНИЕ
я прекратил развитие REPL.Бат, и заменил его на JREPL.ЛЕТУЧАЯ МЫШЬ. Эта новая утилита имеет все ту же функциональность REPL.Летучая мышь, плюс многое другое:
- поддержка Unicode UTF-16LE через собственные возможности cscript unicode и любой другой набор символов (включая UTF-8) через ADO.
- чтение непосредственно из / запись непосредственно в файл: нет необходимости трубы, перенаправление или команда перемещения.
- включить пользовательский JScript
- средство перевода подобно unix tr, только оно также поддерживает поиск regex и JScript replace
- отбросить несоответствующий текст
- префикс выходных строк с номером строки
- и многое другое.
как всегда, полная документация встроена в сценарий.
первоначальное тривиальное решение теперь даже проще:
Например, что является альтернативой этой команде без кавычек:
Причина, по которой я не хочу использовать кавычки, заключается в том, что эта команда работает:
но эта команда НЕ работает:
Проблема в том, что когда я меняю свое имя пути на путь с пробелами в нем, мне нужно процитировать все это. Например:
Вы имели в виду, что у вас есть веская причина для того, чтобы не использовать кавычки. @slhck Не волнуйся, моя клавиша Shift и клавиша № 2 в порядке! Я использую команду, которая не позволяет использовать символы подстановки, когда они появляются внутри кавычек, вот и все! Вы пробовали старое 8.3 форматирование имени (DOCUMEЭто почти все работает для меня, но вы, возможно, пробовали line5 . выходя в пробел с символом каретки (^)
Или, например, ниже, где каретка действительно имеет все значение.
Снизу выглядит так, будто символ каретки может быть вашим ответом, см. Строку 3 ниже.
@ Chinggis6 интересно .. это не работает и для DIR. И copy, и dir встроены в команды . хотя и CD тоже. Хотя copy и dir принимают имя файла в качестве параметра. Может быть стоит спросить на форумеЯ обнаружил, что цитирование только одной части локации работает. В твоем случае:
Хотя при этом используются кавычки, важно отметить, что звездочки находятся за кавычками, поэтому они по-прежнему функционируют правильно.
Кроме того, если кто-то хочет быть минималистичным, он может заключать в кавычки только пробел или только символы, содержащие пробел, например, C: \> документы «cd» и «настройки» (хотя в этом примере cd не нужно экранировать пробелы) Большое спасибо. Я мог бы проголосовать 4 или 5 раз, если это возможно .. @Sayka Вопрос задал вопрос: «Как избежать пробелов в командной строке в Windows, не используя кавычки? » @barlop Конечно, но причина отсутствия кавычек заключалась в том, что звездочка не выполняет свою работу, когда она находится внутри кавычек. Решение, которое я дал, позволяет избежать этой проблемы, потому что звездочки находятся за кавычками. Этот ответ не соответствует букве вопроса, но соответствует духу вопроса (т. Е. Работает по назначению).Несмотря на ответы, создающие иллюзию, что это работает, на самом деле вы не можете пробираться через пробелы в обычные аргументы cmd. Это легко доказать:
Сохранить " echo %1 " как test.bat . Этот пакетный файл выведет первый аргумент, который нам передает cmd.
Теперь попробуйте и запустите test.bat , установив значение %1 в foo bar . (Обратите внимание, что между foo и bar . Есть пробел )
Методом проб и ошибок в течение нескольких лет и понимаем, что сделать это невозможно . Люди предложат избежать использования ^ , но не test.bat foo^ bar будут выводить foo bar .
Таким образом, нет никакого способа получить выходные данные foo bar , и самое близкое, что мы можем получить - это запуск, test.bat foo" "bar который производит foo" "bar , или запуск, test.bat "foo bar" который производит "foo bar" .
Теперь, причина , по которой другие ответы появляются на работу, потому что cd делает это собственный дополнительный синтаксический, расходящиеся от поведения обычного передачи аргумента (обычный %1 , %2 , %3 и т.д. в обычных пакетных файлов).
Например, рассмотрим своеобразную команду:
Почему это работает? Это связано с тем, что он cd сам делает нечто эквивалентное объединению 7 обычных аргументов в один логический. Согласно нормам прохождения аргументов cmd, мы видим 7 аргументов:
Это как будто cd соединило все 7 аргументов в один логический, делая что-то похожее array.join(" ") , что приводит к пути:
Обратите внимание, что это поведение свойственно cd только (и некоторым другим функциям). Это не имеет ничего общего с обычной передачей аргументов.
Действительно, cd имеет еще одну особенность. Помните, мы говорили выше, что не можем получить вывод foo bar ? Ближайший вывод, который мы можем получить, запустив:
который производит foo" "bar , или:
который производит "foo bar" , или:
который производит "foo "bar , или:
который производит foo" bar" , или:
который производит "foo b"ar , или:
который производит fo"o bar" , или:
который производит fo"o ba"r , или:
который производит "fo"o" bar" , или:
который производит "f""o""o"" ""b""a""r" , или даже:
Все приведенные выше примеры имеют одно сходство, которое они произведут foo bar после того, как мы урежем " символы. cd Автор, должно быть, тоже понял это . если бы мы пришли к выводу cd об особом поведении, которое обрезает все, что " он получает , позволяя всем этим командам работать:
Я пытаюсь выполнить команду cmd.exe с разрывом строки или новой строкой в составе команды, как показано ниже:
Но каждая новая строка выполняет команду, а не продолжает команду на следующей строке.
Так как же ввести символ новой строки или создать многострочную команду в cmd.exe?
Используйте ^ персонажа как побег:
Я предполагаю, что вы используете cmd.exe из Windows XP или аналогичный. Это не фактический DOS. Если вы используете настоящую DOS (MS-DOS, Win3.1, Win95, Win98, WinME), то я не верю, что есть выход для перевода строки. Вам нужно будет запустить собственную оболочку. cmd.exe предложит вам "More?" каждый раз, когда вы нажимаете ввод с ^ конца в конце строки, просто нажмите ввод еще раз, чтобы фактически выйти / вставить новую строку.
Это то, что вы предлагаете, это позволяет мне вводить больше текста на новой строке. Это не сохраняет символ новой строки. То, что я хочу, это то, что между «текст» и «что угодно» является новой строкой. Как-то так: «text \ nwhwhat» Следует отметить, что если в тексте есть пробелы, вам нужно будет заключить их в кавычки. Кроме того, убедитесь, что вы добавили заключительную кавычку, в противном случае символ каретки будет игнорироваться как символ перехода и обрабатываться как текст. Наконец, вам нужно будет помещать кавычки вокруг текста в каждой строке, содержащей пробелы (делайте это, даже если он не содержит пробелов, чтобы быть в безопасности), и ставить каркас после закрывающей кавычки для каждой строки, которая продолжается. Я попал сюда, пытаясь найти способ добавить новые строки в комментарии SHUTDOWN.EXE команды. Я закончил тем, что использовал что-то вроде этого: shutdown -s -t 900 -c "foo bar"^ > Больше? "baz"^ > Больше? "test that." Это сработало.Используйте Alt коды с цифровой клавиатурой
Этот символ перевода строки можно ввести как код Alt в CLI, используя цифровую клавиатуру: при включенной NumLock, удерживая нажатой клавишу ALT, введите 10 на цифровой клавиатуре, прежде чем выпускать ALT. Если вам также нужен CR, наберите их оба с помощью Alt + 13, а затем Alt + 10: ♪◙
Примечание: это не будет работать в командном файле.
Пример использования:
Вы пытаетесь прочитать переменные окружения% PATH% или% CLASSPATH%, чтобы получить быстрый обзор того, что там и в каком порядке, но path возвращаемая стенка текста не читается. Тогда это то, что вы можете быстро набрать:
Читайте также: