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

Обновлено: 06.07.2024

Если аргумент какой-либо команды содержит пробелы (или знаки табуляции) то Bash интерпретирует их как множественные аргументы. Вот, например, команда echo:

Но ошибкой будет считать, что команда такая "умная", что в точности воспроизводит введенный текст. Это не так:

На самом деле команда интерпретирует любое количество пробелов (и знаков табуляции) как один пробел; а пробел как разделитель между аргументами. Так как по умолчанию команда echo печатает стандартный вывод в одну строку, то и результат будет одинаковым с любым количеством пробелов.

Другие команды по умолчанию печатают свой вывод обработки каждого аргумента с новой строки, например команда printf:

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

Как же заставить команду включить пробелы (и знаки табуляции) в свой стандартный вывод? Тут возможны два пути:

1. Маскировка при помощи обратного слэша (\). По-английски называется Escaping, а управляющие символы, начинающиеся с обратного слэша, Escapе-символами (само слово "escapе" переводится как исчезать, скрываться). Вот пример маскировки пробела:

Механизм такой маскировки прост: при помощи специального символа, обратного слэша, мы лишили пробела его значения как разделителя между аргументами, и теперь он интерпретируется Bash только как часть текста.

2. Закавычивание. Если заключить аргумент в кавычки, двойные или одинарные, то он всегда будет интерпретирован в качестве единого выражения. Например:

Такой же механизм работает и с командами, принимающими имена файлов в качестве аргумента. Имена файлов ведь тоже могут содержать пробелы; для примера создадим файл по имени text file и попытаемся просмотреть его при помощи команды cat:

А интересно, справится ли с этой задачей автозавершение?

Автозавершение выбрало вариант маскировки. Это не удивительно, ведь маскировать приходится не только пробелы, но и управляющие символы, с которыми кавычки не справятся.

Пока мы рассматривали только пробелы внутри аргумента команды. Лишние же пробелы перед командой, между командой и опциями, между опцией и аргументом, как правило, игноририруются. Если только иное поведение специально не оговорено в синтаксисе команды.

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

Командная строка представляет собой программное средство ввода команд пользователем и получения результатов их выполнения на экране. В современных операционных системах семейства Windows, командную строку обеспечивает стандартное приложение cmd.exe , так же называемое командным процессором, интерпретатором команд и консолью. Приложение ”Командная строка” предоставляет пользователю текстовый интерфейс для ввода команд и получения результатов их выполнения. Фактически, командная строка является программным эмулятором классической консоли первых компьютерных систем, представляющей собой терминал с клавиатурой, используемый оператором в качестве средства общения с компьютером. Как и во времена первых компьютеров, командная строка поддерживает стандартное устройство ввода – клавиатуру, и стандартное устройство вывода – дисплей. Пользователь вводит команды с клавиатуры и получает результаты их выполнения на экране дисплея.

Запуск командной строки.

Для запуска командной строки можно воспользоваться одним из следующих способов:

Пуск - Выполнить (или клавиши Win+R) введите cmd и нажмите клавишу Enter;

Пуск - Поиск - Командная строка. Также, для запуска командной строки можно использовать заранее подготовленный ярлык, ссылающийся на исполняемый файл %SystemRoot%\system32\cmd.exe ( обычно – C:\Windows\system32\cmd.exe). Выполнение некоторых команд требует повышенных привилегий, поэтому, приложение командной строки должно быть запущено с использованием пункта контекстного меню ”Запуск от имени администратора”, вызываемого правой кнопкой мышки.

Настройка командной строки.

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

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

Использование буфера обмена.

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

Настройки командной строки в Windows 10

В режиме выделения мышью, контекстное меню не используется, а текст выделяется с использованием левой кнопки мышки. Копирование и вставка выполняется при нажатии правой кнопки мышки. При включенном режиме ”Разрешить сочетания клавиш с CONTROL”, можно использовать стандартные сочетания клавиш:

- CTRL+C (CTRL+Insert) – скопировать выделенный текст.

- CTRL+V (Shift+Insert) – вставить выделенный текст.

Использование истории команд и горячих клавиш.

Для вызова ранее введенных команд используются клавиши со стрелками Стрелка Вверх - на одну команду назад и Стрелка Вниз - на одну команду вперед. Кроме того, можно использовать функциональные клавиши:

F1 - посимвольный вызов последней введенной команды. Каждое нажатие F1 приводит к последовательной подстановке в поле ввода одного символа из предыдущей команды.

F3 - вызов предыдущей команды.

F4 - удалить до символа. Выполняется удаление текста от текущей позиции курсора до заданного символа.

F5 и F8 - вызов буфера ранее введенных команд. Вывод по нажатию клавиши F5 прекращается когда будет отображена первая введенная команда текущей сессии.

F7 - отображение ранее введенных команд в отдельном окне в виде списка. Для выполнения нужной команды нужно выбрать ее, используя клавиши со стрелками, и нажать ENTER

F9 - выполнить команду, номер которой запрашивается. Номер команды в списке истории можно получить при использовании F7 .

В Windows 10 / Windows Server 2016 появились возможности, отсутствующие в предыдущих реализациях командной строки:

- Изменение прозрачности окна консоли при нажатии комбинаций CTRL + Shift + - или CTRL + Shift + + .

- Включение / выключение полноэкранного режима при нажатии CTRL+Enter .

- Расширение возможностей выделения текста и редактирования:

Shift+Home – выделить текст от текущего положения курсора до начала строки.

Shift+End – выделить текст от текущего положения курсора до конца строки.

- Быстрое перемещение по буферу экрана и поиск по контексту:

CTRL+Home – перейти в начало буфера экрана

CTRL+End – перейти в конец буфера экрана.

CTRL+Стрелка Вверх - перемещение на 1 строку вверх.

CTRL+Стрелка Вниз - перемещение на 1 строку вниз.

CTRL+F - открыть диалог поиска текста в буфере экрана.

Окно командной строки в Windows 10 можно закрыть с помощию стандартной комбинации клавиш - ALT+F4 .

Для отключения новых возможностей CMD, необходимо в свойствах приложения установить галочку ”Использовать прежнюю версию консоли (требуется перезапуск)”

Автодополнение путей файлов

В командной строке Windows можно выполнять подстановку имен файлов и каталогов при нажатии клавиши Tab . Например, для перехода, в каталог с длинным именем Program Files наберите начальную часть имени каталога

CD Pro и нажмите Tab. В строке ввода должна появиться команда :

CD "Program Files"

Как видим, выполняется подстановка недостающей части имени каталога, а в тех случаях, когда в нем имеется символ пробела, добавляются еще и двойные кавычки.

Если имеется несколько совпадающих начальных частей имен файлов или каталогов, при каждом нажатии клавиши Tab будет подставляться следующее по алфавитному порядку имя. Для возврата на предыдущее - используется комбинация Shift+Tab

Перенаправление данных стандартного ввода /вывода консоли.

Как уже упоминалось, в качестве стандартного устройства ввода командной строки используется клавиатура, а в качестве устройства вывода – дисплей. Однако, существует возможность перенаправления ввода-вывода на другие устройства c использованием операторов перенаправления:

ping –n 5 localhost > nul - выполнить пинг петлевого интерфейса 5 раз с перенаправлением вывода в фиктивное устройство nul . Вывод результатов выполнения команды подавляется. Подобный прием используется для организации задержки в командных файлах, поскольку пинг петлевого интерфейса выполняется почти мгновенно, а интервал между пингами равен одной секунде, время выполнения данной команды определяется значением параметра -n

Нередко, вывод одной команды нужно передать в качестве вводимых данных для другой, т.е. объединить команды в последовательную цепочку:

ping -n 100 microsoft.com | find "Превышен интервал" - результат выполнения команды ping -n 100 microsoft.com передается в виде входных данных для команды поиска строк ( find ), содержащих текст "Превышен интервал".

ping -n 100 microsoft.com | find "Превышен интервал" > C:\ping-ya.txt - то же, что и в предыдущем примере, но с перенаправлением выводимых результатов выполнения команды в текстовый файл.

Каждому открытому файлу или устройству соответствует свой дескриптор ( handle ) который представляет собой неотрицательное число, значение которого используется породившим поток ввода-вывода процессом. По умолчанию, для всех процессов, в том числе и для командного интерпретатора cmd.exe :

0 ( STDIN ) – дескриптор стандартного ввода (ввод с клавиатуры).

1 (STDOUT) – дескриптор стандартного вывода (вывод на экран).

Для задания перенаправления в существующие дескрипторы используется амперсанд (&), затем номер требуемого дескриптора (например, &1):

Если дескриптор не определен, то по умолчанию оператором перенаправления ввода будет ноль (0), а оператором перенаправления вывода > будет единица.

Объединение нескольких команд в цепочку

В командной строке Windows существует возможность последовательного выполнения нескольких команд в зависимости от результатов их выполнения. Для чего используются символы объединения команд - & (амперсанд) и | (вертикальная черта)

& - одиночный амперсанд используется для разделения нескольких команд в одной командной строке. Например:

&& - условное выполнение второй команды. Она будет выполнена, если код завершения (значение которого передается в стандартную переменную ERRORLEVEL) первой команды равен нулю, т.е. команда выполнена успешно.

команда1 && команда2 - выполняется команда1 , а команда2 выполняется, только если первая была выполнена успешно. Например:

Двойная вертикальная черта || - условное выполнение второй команды. Если первая команда завершилась с кодом возврата не равным нулю (неуспешно), то выполняется команда, следующая за двойной вертикальной чертой.

команда1 || команда2 - если команда1 выполнена неуспешно, то запускается на выполнение команда2

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

Логика условной обработки команд, реализуемая с помощью конструкций && и || действует только на ближайшую команду, то есть, при вводе команды

TYPE C:\plan.txt && DIR & COPY /?

команда COPY /? запустится в любом случае, независимо от результата выполнения команды TYPE C:\plan.txt . Но, несколько команд можно сгруппировать с помощью скобок. Например, есть 2 командные строки:

TYPE C:\plan.txt && DIR & COPY /?

TYPE C:\plan.txt && (DIR & COPY /?)

В первой из них символ условной обработки && действует только на команду DIR, во второй — одновременно на две команды: DIR и COPY. В качестве наглядного эксперимента, попробуйте выполнить вторую команду при условиях наличия и отсутствия файла C:\plan.txt . Для создания пустого файла можно воспользоваться копированием из фиктивного устройства nul :

copy nul C:\plan.txt

Для удаления файла используется команда erase c:\plan.txt или del C:\plan.txt

Командные файлы

Командные файлы (сценарии, скрипты) – это обычные текстовые файлы с заранее подготовленным набором команд для их выполнения командным процессором cmd.exe . Стандартно, такие файлы имеют расширение .bat или .cmd . Строки командных файлов могут содержать специфические команды самого процессора команд, например - FOR, ECHO, REM и т.п. или имена исполняемых модулей – reg.exe, sc.exe, auditpol.exe., которые можно использовать без расширения – reg, sc, auditpol. Пример простого командного файла:

REM Создается текстовый файл со списком каталога Windows
dir C:\Windows > %TEMP%\winlist.txt
REM выполняется задержка на 5 секунд
ping -n 5 localhost > nul
REM Файл открывается в редакторе WordPad
write %TEMP%\winlist.txt
REM После завершения работы Wordpad, текстовый файл удаляется.
erase C:\winlist.txt

Строки, начинающиеся с REM являются комментариями. В качестве примера, используются команды для работы с файловой системой и выполняется запуск приложения графической среды – текстового редактора Wordpad (write.exe) с передачей ему параметра командной строки (имя файла). Язык командных файлов довольно примитивен и не в полной мере соответствует требованиям сегодняшнего дня, однако, он является самым простым средством автоматизации рутинных действий и используется большинством системных администраторов и грамотных пользователей. Работа с командными файлами – это отдельная тема, более подробно изложенная на странице Командные файлы

Прочие материалы для освоения работы в командной строке Windows:

Есть ли другой способ указать местоположение без пробела в нем?

ОТВЕТЫ

Ответ 1

вы должны иметь возможность использовать

  • "c:\Program Files" (обратите внимание на кавычки)
  • c:\PROGRA ~ 1 (обозначение короткого имени)

Попробуйте c: \ > dir/x (в оболочке dos)

Отображаются короткие имена сгенерированный для имен файлов не-8dot3. Формат имеет формат /N с короткое имя, вставленное перед длинным имя. Если короткое имя отсутствует, пробелы отображаются на своем месте.

Ответ 2

Никогда не указывайте это местоположение жестко. Используйте переменные среды %ProgramFiles% или %ProgramFiles(x86)% .

При их указании всегда указывайте в кавычках, потому что Microsoft может содержать в них пробелы или другие специальные символы.

Ответ 3

Используйте следующие обозначения:

  • Для " C:\Program Files" используйте " C:\PROGRA ~ 1"
  • Для " C:\Program Files (x86)" используйте " C:\PROGRA ~ 2"

Спасибо @lit за ваш идеальный ответ в комментарии ниже:

Используйте переменные окружения % ProgramFiles% и % ProgramFiles (x86)%

Ответ 4

Я думаю, что причина, по которой предполагают использование имени C:\PROGRA ~ 1, получила downvotes, состоит в том, что эти имена рассматриваются как устаревшая функция Windows, которую можно забыть, что также может быть нестабильным, по крайней мере, между различными установками, хотя, вероятно, не на той же машине.

Кроме того, как заметил кто-то в комментарии к другому ответу, Windows может быть настроена так, чтобы не иметь имен устаревшей версии 8.3 в файловой системе вообще.

Ответ 5

В оболочке Windows (при использовании CMD.exe) используется% ProgramFiles%, чтобы указать папку Program Files, независимо от того, где она находится. Так как стандартный файловый менеджер Windows учитывает такие переменные среды, как это, если программа была хорошо написана, она должна поддерживать это.

Кроме того, можно было бы использовать относительные адреса. Если установленная вами программа установлена ​​правильно, она уже должна находиться в папке Program Files, поэтому вы можете просто ссылаться на файл конфигурации как. \Config_file.txt, если она находится в том же каталоге, что и программа, или.. \other_program\config_file.txt, если его в каталоге отличается от другой программы. Это применимо не только к Windows, но и практически для каждой современной операционной системы и будет работать правильно, если у вас установлен "Start In", или вы запускаете его непосредственно из своей папки.

Ответ 6

Должен быть способ использования полного пути c:\program files . Часто он включает инкапсуляцию строки в кавычки. Например, в командной строке windows;

не запускается Internet Explorer, но

Ответ 7

Вы можете попробовать использовать короткое имя файла (возможно, c:\PROGRA~1 ), но вы действительно не рассказываете нам много деталей.

Другой возможной возможностью было бы поставить кавычки по всему пути, "c:\program files\Path\configfile.ini"

Ответ 8

Иногда вы можете указать имя файла.

Некоторые программы будут терпеть кавычки. Поскольку вы не предоставляли какую-либо конкретную программу, невозможно определить, будут ли кавычки работать для вас.

Ответ 9

Попробуйте окружить путь в кавычках. i.e "C:\Program Files\Appname\config.file"

Ответ 10

Вы можете использовать следующие методы для указания C:\Program Files без пробела для программ, которые не могут обрабатывать пробелы в путях к файлам:

Ответ 11

Вы можете попробовать:

Ответ 12

В 64-битных окнах, возможно

Ответ 13

Это предоставит список только каталогов, а также предоставит их "короткие имена".

Ответ 14

Существует много способов избежать проблем с пространством, некоторые из них уже упоминались:

В командной строке, в определении ярлыка, в файлах bat и в большинстве программ, используя путь api в Windows, вы можете попробовать окружить путь к вашему файлу двойными кавычками, подобными этому:

Для той же категории программного обеспечения вы также можете использовать короткое имя (унаследованное от DOS и ограниченное до 8 символов для каждого уровня

В файлах свойств java и вам нужно либо избежать пробела, добавив \before (обратите внимание, что вам также нужно сбежать\или заменить его на /):

Ответ 15

В качестве альтернативы другим ответам вы можете использовать символические ссылки.

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

Символическая ссылка создаст что-то похожее на ярлык для папки, но другие приложения видят ее как фактическую папку.

Вот как вы это делаете:

  • Запустите cmd от имени администратора
  • Используйте эту команду: mklink /D "C:\LinkToProgramFiles" "C:\Program Files"

А затем вы начинаете использовать "C:\LinkToProgramFiles" в приложениях, которые не могут обрабатывать пробелы. (Эту ссылку можно увидеть в проводнике Windows как папку с символом ярлыка)

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

Ответ 16

Использовать сгенерированное короткое имя (C:\Progra ~ 1) или окружать путь кавычками.

Ответ 17

Вы можете просто создать папку ProgramFiles на локальном D или локальном C, чтобы установить те приложения, которые могут быть установлены в имя папки, в которой есть SPACES/Characters.

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

play -Dconfig.file=conf/dev.conf не работает, как использовать разные application.conf в командной строке play? играть-2.2.1

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

Я только что выяснил, что для случая, когда путь включает использование пробелов, например, когда мне нужно получить доступ к приложению xyz , какое местоположение :

Чтобы запустить это из приглашения windows cmd, вам необходимо использовать

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

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

Заключите пути, содержащие пробелы, в двойные кавычки.

Я предпочитаю заключать команду в () , которая действительна batch , что немного облегчает чтение:

Попробуйте указать сложные пути в двойных кавычках (и включить расширения файлов в конце для файлов.)

CMD интерпретирует текст с двойными кавычками ("xyz") как одну строку, а текст в одинарных кавычках ('xyz') как команду. Например:

FOR %%A in ('dir /b /s *.txt') do ('command')

FOR %%A in ('dir /b /s *.txt') do (echo "%%A")

И одна хорошая вещь: cmd чувствителен к регистру not*, как и bash. Так что "Новый fiLE.txt" и "новый file.TXT" для него одинаковы.

*Note: Переменные %%A в приведенном выше случае чувствительны к регистру (%%A не равно %%a).

это сработало для меня в batch file

Просто добавьте Кавычки

Пример: "C:\Users\User Имя"

Надеюсь, это было решено!

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

Я собираюсь поднять список изменений многих локально разработанных пакетов debian. Я использую 'Ansible' для вызова 'dch' из пакета devscripts. Я использую Ansible, потому что у меня уже есть пути subversion к пакетам, перечисленным в переменной Ansible. Я хотел бы иметь возможность ввести.

Вы должны попробовать использовать кавычки.

Пробелы в командной строке Commend (в строке командного кода VBA Shell)

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

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

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

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

Что-то вроде этого будет работать, если предположить, что папка AlansFolder существует

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

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

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

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

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

Это, кажется, работает

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

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

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

C:\Windows\system32>cd c:\Program Files\MongoDB\Server\3.2\bin

c:\Program Files\MongoDB\Server\3.2\bin>mongo теперь вызов командной строки mongo.exe

Похожие вопросы:

Как я могу открыть hg в командной строке в любом каталоге? Я попробовал установить classpath. Но ничего не работает.. Мне нужно использовать Hg, как показано на рисунке ниже, где бы я ни находился в.

Я пытаюсь использовать Redgate Ants memory profiler с командной строкой. Я видел страницу redgate в командной строке, но не нашел ее очень информативной. У кого-нибудь есть более подробное описание.

play -Dconfig.file=conf/dev.conf не работает, как использовать разные application.conf в командной строке play? играть-2.2.1

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

Я собираюсь поднять список изменений многих локально разработанных пакетов debian. Я использую 'Ansible' для вызова 'dch' из пакета devscripts. Я использую Ansible, потому что у меня уже есть пути.

Я использую Mac. Я скомпилировал байт-код run , он может работать со строковым вводом в командной строке, например: ./run Here is a text input Чтобы проверить run , я пишу inputs.txt , который.

SoapUI может быть запущен из командной строки с некоторым набором параметров : testrunner.bat -FPDF -RJUnit-Style HTML Report -cmy test case c:\my projects\my-project.xml И утверждается, что: D .

Я пытаюсь запустить python в своей командной строке. Расположение моего каталога python таково C:\Users\Samarth\AppData\Local\Programs\Python\Python37-32 Теперь я хочу запустить python в другом.

Читайте также: