Автор:
Louise Ward
Дата создания:
5 Февраль 2021
Дата обновления:
11 Июнь 2023
В командной строке Windows при попытке скопировать, переместить или переименовать файл или каталог с пробелом вы можете получить сообщение «Неверный синтаксис команды». сообщение об ошибке. Это сообщение об ошибке генерируется, когда командная строка Windows не понимает синтаксис команды, поскольку он не отформатирован должным образом. Чтобы решить эту проблему, заключите в кавычки любое имя файла или имя каталога пробелами. Например, если бы у нас был каталог или имя файла под названием «компьютерная надежда», вы должны ввести следующие команды. В этом первом примере мы копируем файл «computer hope.txt» в каталог Hope. Если файл не заключен в кавычки, вы получите сообщение «Неверный синтаксис команды». сообщение об ошибке. скопируйте «компьютер надежда.txt» надежда
Затем следующая команда переместит файл «computer hope.txt» в каталог Hope. Опять же, без кавычек вы получите сообщение об ошибке. переместить «компьютер надежда.txt» надежда
Наконец, следующая команда переименует тот же файл в пример file.txt, который также имеет пробел в имени файла. переименуйте «компьютер» hope.txt «в» example file.txt »
Содержание
Копирование файла с пробелом
Перемещение файла с пробелом в имени файла
Переименование файла с пробелом в имени файла
…Ошибка в синтаксисе команды
Раздел форума:
Автор темы:
При вводе в cmd.exe команды ren cd %USERPROFILE%Рабочий столЯрлык для TOTALCMD.ink TotalCmd.ink выбивает Ошибка в синтаксисе команды. Мне кажется, что проблема здесь в пробелах в имени. Но как её решить? Может можно их заменить каким-нибудь другим символом? Если кто-то знает ответ, помогите, пожалуйста.
В пути с пробелами путь должен быть в кавычках: «С:Program files» например, а не С:Program files
Кстати, нужно ещё поменять и расширение — не ink, а lnk.
Всем спасибо за помощь, но у меня все равно что-то не получается.
>В пути с пробелами путь должен быть в кавычках…
Прописываю: ren «cd %USERPROFILE%Рабочий столЯрлык для TOTALCMD.Ink» TotalCmd.Ink теперь выбивает «Синтаксическая ошибка в имени файла, имени папки или метке тома»
ИМХО, дело в том, что аргументом к cd должен быть путь к папке, а не к файлу.
А если прописать так:
chcp 1251
cd %USERPROFILE%
cd «Рабочий стол»
ren «Ярлык для TOTALCMD».Ink TotalCmd.Ink будет работать?
Должно. Попробуйте. Если нет — сообщите, будем разбираться.
Кавычка должна быть ПОСЛЕ cd, я же писал — путь, а не команда
И ren всесте с сd в отдой строке нельзя, все по порядочку, по командочке.
Сначала в нужный каталог, потом дальше… т.е. расписать все на бумаге словами, столбиком, а потом все переводить в команды, и если заработает — начинать оптимизировать, наводить красоту.
>Сначала в нужный каталог, потом дальше…
С путем разобрался, я в папке Рабочй Стол, возникла другая проблема, я прописываю: ren «Ярлык для TOTALCMD».Ink TotalCmd.Ink выбивает «Не удается найти указанный файл»
ren «Ярлык для TOTALCMD.Ink» TotalCmd.Ink
Кавычки после полного имени файла, с расширением.
>ren «Ярлык для TOTALCMD.Ink» TotalCmd.Ink
Все равно выбивает «Не удается найти указанный файл», хотя он там есть
Фениксу. Кавычек я не ставлю ещё cо времён CP/M. Всё всегда переименовывалось. Но 1) убедись, что файл Ярлык для TOTALCMD.Ink у тебя в текущем дире действительно есть, для чего введи dir Ярлык для TOTALCMD.Ink или, что ИМХО лучше, dir *TOTALCMD.* 2) убедись, что кириллица в имени файла нигде не путается с латиницей. (Не накололи ли тебя на 1-ое апреля?) А вообще, чтобы переименовать ярлык, щёлкни по нему на рабочем столе правой кнопкой, выбери «Переименовать» и именуй, как хошь.
CD здесь ни к чему.
chcp 1251
ren «%USERPROFILE%Рабочий столЯрлык для TOTALCMD.lnk» TotalCmd.lnk
Проверено, работает.
2 Phoenix:
> Все равно выбивает «Не удается найти указанный файл», хотя он там есть
Так может он уже переименован, поэтому и не находит?
2 mike (old student):
> Кавычек я не ставлю ещё cо времён CP/M.
Не стоит давать советов, в которых не уверены. Если путь к файлу содрежит пробел, то в Windows надо ОБЯЗАТЕЛЬНО закавычить.
> вообще, чтобы переименовать ярлык, щёлкни по нему на рабочем столе правой кнопкой, выбери «Переименовать» и именуй, как хошь.
Mike, как модно говорит «вы жжОте непадецки» Видимо человеку надо именно так, а не иначе.
Огромное спасибо всем кто помог мне, и особенно Sens’у
>CD здесь ни к чему.
chcp 1251
ren «%USERPROFILE%Рабочий столЯрлык для TOTALCMD.lnk» TotalCmd.lnk
>Если путь к файлу содрежит пробел, то в Windows надо ОБЯЗАТЕЛЬНО закавычить.
ОК, глюканул.
>Видимо человеку надо именно так.
Батник, видимо, разрабатывает.
На экране церез 10 минут после включения кмпа начинает мигать кажд. 2 сек.окно CWindowssystem32cmd.exe, то черное, то белое,в черном — слова Ошибка в синтаксисе команды и все. Остальное работает.Что делать? ПОМОГИТЕ!
>Остальное работает.Что делать? ПОМОГИТЕ
Вирус — лечить!
Следующий вопрос будет «Чем и как». Потом «где взять»…
Меня умиляют эти вопросы. Ответ на них один: обратитесь к специалисту. Как в той персидской басне: старик пришел к соседу и просит у него меру для зерна, тот отвечает: «Иди к другому, у меня нет сита».
— Почему? Я прошу меру?
— У тебя трясутся руки, ты просыпешь зерно на пол. Придешь за совком и веником. Соберешь. Зерно надо будет просеять. А сита у меня нет. Иди к другому.
Эдуард > Следующий вопрос будет «Чем и как». Потом «где взять»…
Почти любой вирус лечится просто — перестановкой OC.
>У тебя трясутся руки, ты просыпешь зерно на пол. Придешь за совком и веником. Соберешь. Зерно надо будет просеять. А сита у меня нет. Иди к другому.
>Почти любой вирус лечится просто — перестановкой OC.
Если перестановка ОС — это просто.
Can someone explain to me why this command reports «The syntax of the command is incorrect.»? The first part runs fine by itself, so I know it’s not that. And the second part looks to be correct according to help find
C:Program FilesApache Software FoundationApache2.2logs>type error.log ^| find /C "2010"
I was wondering if it might have to do with line endings in the file, but even something as simple as this gives me the same error:
C:Program FilesApache Software FoundationApache2.2logs>echo "Test1" > test.log
C:Program FilesApache Software FoundationApache2.2logs>echo "Test2" >> test.log
C:Program FilesApache Software FoundationApache2.2logs>echo "Test3" >> test.log
C:Program FilesApache Software FoundationApache2.2logs>type test.log
"Test1"
"Test2"
"Test3"
C:Program FilesApache Software FoundationApache2.2logs>type test.log ^| find /C "test"
The syntax of the command is incorrect.
C:Program FilesApache Software FoundationApache2.2logs>type test.log ^| find /C "Test"
The syntax of the command is incorrect.
Всем привет!
Недавно начал изучать язык Java. Пишу простенькую программу, в которой функция получает два параметра из командной строки. Первый аргумент — число, второй — строка. Проблема в том, что когда я ввожу символ, например «>», вылезает «ошибка в синтаксисе команды». Получаемую строку я записываю в String. Вопрос: как сделать так, чтобы из командной строки можно было читать любые символы?
Код:
public static void main(String args[]){
double degree = Double.parseDouble(args[0]);
System.out.println(degree);
String str = args[1];
System.out.println(str);
}
задан 24 сен 2017 в 21:32
user248155user248155
1432 золотых знака4 серебряных знака12 бронзовых знаков
2
Символ >
— особенный.
command > a
На языке командной строки (как bash, так и cmd.exe) это означает:
- Выполнить программу
command
. - Всё, что она «печатает» (т.е. выводит в стандартный поток вывода, stdout) перенаправить
- … и писать в файл
a
вместо его прошлого содержимого. Если файла нет — создать новый.
Поэтому когда вы передаёте командной строке вот такое:
java helloworld >
Она это воспринимает так:
- Выполнить
java helloworld
- И перенаправить вывод
- Куда? А никуда. Ошибка в синтаксисе команды!
Поэтому делайте так:
java helloworld ">"
ответ дан 29 сен 2017 в 5:30
Nick Volynkin♦Nick Volynkin
33.6k24 золотых знака128 серебряных знаков217 бронзовых знаков
2
Содержание
- . Ошибка в синтаксисе команды
- Раздел форума:
- Автор темы:
- Статья [CMD] Как диагностировать проблему или ошибки в синтаксисе, когда Bat-файл «вылетает»?
- Dragokas
- Неправильный синтаксис команды?
- 2 ответа
- Ошибка синтаксиса в команде copy con (cmd)
- 2 ответа 2
- Всё ещё ищете ответ? Посмотрите другие вопросы с метками cmd или задайте свой вопрос.
- Похожие
- Подписаться на ленту
. Ошибка в синтаксисе команды
Раздел форума:
admin 31 марта, 2008 — 20:38
Автор темы:
Al 1 апреля, 2008 — 05:11
SF 1 апреля, 2008 — 13:44
Phoenix 1 апреля, 2008 — 20:04
>В пути с пробелами путь должен быть в кавычках…
Прописываю: ren «cd %USERPROFILE%Рабочий столЯрлык для TOTALCMD.Ink» TotalCmd.Ink теперь выбивает «Синтаксическая ошибка в имени файла, имени папки или метке тома»
SF 1 апреля, 2008 — 20:22
Phoenix 1 апреля, 2008 — 20:34
cd «Рабочий стол»
ren «Ярлык для TOTALCMD».Ink TotalCmd.Ink будет работать?
SF 1 апреля, 2008 — 21:34
Al 2 апреля, 2008 — 08:06
Al 2 апреля, 2008 — 08:08
Сначала в нужный каталог, потом дальше. т.е. расписать все на бумаге словами, столбиком, а потом все переводить в команды, и если заработает — начинать оптимизировать, наводить красоту.
Phoenix 2 апреля, 2008 — 14:56
С путем разобрался, я в папке Рабочй Стол, возникла другая проблема, я прописываю: ren «Ярлык для TOTALCMD».Ink TotalCmd.Ink выбивает «Не удается найти указанный файл»
SF 2 апреля, 2008 — 15:22
Кавычки после полного имени файла, с расширением.
Phoenix 3 апреля, 2008 — 13:23
Все равно выбивает «Не удается найти указанный файл», хотя он там есть
mike 3 апреля, 2008 — 14:26
Sens 3 апреля, 2008 — 14:28
ren «%USERPROFILE%Рабочий столЯрлык для TOTALCMD.lnk» TotalCmd.lnk
> Все равно выбивает «Не удается найти указанный файл», хотя он там есть
Так может он уже переименован, поэтому и не находит? 😉
Sens 3 апреля, 2008 — 14:41
> Кавычек я не ставлю ещё cо времён CP/M.
Не стоит давать советов, в которых не уверены. Если путь к файлу содрежит пробел, то в Windows надо ОБЯЗАТЕЛЬНО закавычить.
> вообще, чтобы переименовать ярлык, щёлкни по нему на рабочем столе правой кнопкой, выбери «Переименовать» и именуй, как хошь. 🙂
Mike, как модно говорит «вы жжОте непадецки» 😉 Видимо человеку надо именно так, а не иначе.
Phoenix 3 апреля, 2008 — 21:00
>CD здесь ни к чему.
ren «%USERPROFILE%Рабочий столЯрлык для TOTALCMD.lnk» TotalCmd.lnk
mike 4 апреля, 2008 — 01:10
>Видимо человеку надо именно так.
Батник, видимо, разрабатывает.
Инна К)) 16 мая, 2009 — 14:46
Логик 17 мая, 2009 — 00:27
Эдуард 18 мая, 2009 — 10:35
Меня умиляют эти вопросы. Ответ на них один: обратитесь к специалисту. Как в той персидской басне: старик пришел к соседу и просит у него меру для зерна, тот отвечает: «Иди к другому, у меня нет сита».
— Почему? Я прошу меру?
— У тебя трясутся руки, ты просыпешь зерно на пол. Придешь за совком и веником. Соберешь. Зерно надо будет просеять. А сита у меня нет. Иди к другому.
Логик 18 мая, 2009 — 16:14
Почти любой вирус лечится просто — перестановкой OC.
>У тебя трясутся руки, ты просыпешь зерно на пол. Придешь за совком и веником. Соберешь. Зерно надо будет просеять. А сита у меня нет. Иди к другому.
Источник
Статья [CMD] Как диагностировать проблему или ошибки в синтаксисе, когда Bat-файл «вылетает»?
Dragokas
Very kind Developer
Как запустить Batch-файл с протоколированием?
Как диагностировать проблему или ошибки в синтаксисе, когда Bat-файл не работает или «вылетает».
Чтобы увидеть ошибки в синтаксисе, которые приводят к критическому завершению Batch-файла,
необходимо запустить его из CMD.exe (интерпретатора).
Как?
Этап 1. Подготовка:
Если у Вас в скрипте указана директива для скрытия вывода выполняемых команд:
иначе будет сложно определить, какая команда вызывает «падение» скрипта или ошибку.
Этап 2. Выполнение скрипта с перенаправлением вывода в файл протокола
Вариант 1. Для систем Windows XP и ниже:
ПУСК -> Выполнить (либо Win + R), вводим CMD, нажимаем
Откроется маленькое черное окно — консоль.
В нем Вы увидите путь к каталогу, в котором будут выполняться команды в данный момент.
Вам нужно перейти в каталог, где расположен бат-файл.
Например, Вам нужно запустить Batch-файл с именем script.cmd, расположенном в папке temp на диске C,
тогда вводим команды:
(ввод каждой строки подтверждаем клавишей )
После ввода первой строки Вы увидете на экране приглашение вида:
c:temp>
что свидетельствует об успешном переходе в каталог c:temp
Вариант 2. Для систем Windows Vista и выше (переход в папку с батником сразу):
1. Перейдите на уровень выше от каталога, где находится Batch-файл
(иными словами: Вам нужно видеть пиктограмму значка папки, в которой находится Batch-файл)
Если Вы видите перед собой сам Batch-файл, достаточно нажать BackSpace (кнопка «стирания»).
2. Наведите указатель мыши на папку с Batch-файлом.
Нажмите и удерживайте кнопку «Shift». Вместе с этим нажмите правую кнопку мыши.
3. Выберите пункт «Открыть окно команд».
Например, Вам нужно запустить Batch-файл с именем script.cmd, расположенном в папке temp на диске C,
тогда вводим команду:
Этап 3. Анализ файла-протокола.
После завершения работы Batch-файла в папке C:temp будет создан файл log.txt
Передайте его специалистам, либо при наличии достаточного опыта проведите анализ самостоятельно.
Данный файл сохраняется в кодировке OEM-866, поэтому открывать его нужно в соответствующем редакторе: http://www.cyberforum.ru/cmd-bat/thread738351.html
Как правило, критические ошибки указаны в самом конце протокола и они предваряют команду, которая их вызвала.
Этап 4. (опционально)
Если бат-файл содержит цикл или является очень большим, полезным также будет подготовить лог уже с командой @echo off
Добавьте ее в самое начало кода и повторите всю процедуру.
Альтернатива вызову батника из-под интерпретатора.
В самом начале кода пишем:
Источник
Неправильный синтаксис команды?
Я новичок в партии и поэтому не могу понять, почему я получаю синтаксическую ошибку ??
Это просто проект «для развлечения», но я хотел бы понять, почему я получаю эту досадную ошибку!
2 ответа
Сначала прочтите ответ на Почему не выводится строка с ‘echo% var%’ после использования ‘set var = text’ в командной строке? В нем объясняется, как правильно присвоить строковое значение переменной среды. Неправильно set variable = value , который присваивает SPACE значение переменной среды с именем variable SPACE и для этого причина того, что после этой командной строки нет переменной среды с именем переменная .
Совершенно неверно в большинстве случаев также set %variable%=value , потому что эта командная строка присваивает значение переменной среды с именем, определенным значением переменной среды переменная .
Во-вторых, все ссылки на переменные среды, сделанные с помощью синтаксиса %variable% в командном блоке, начинающемся с ( и заканчивающемся совпадающим ) , расширяются на текущее значение переменной среды перед командой, использующей командный блок выполняется вообще. Это означает, что все %variable% заменяются текущим значением указанной переменной среды, которое не имеет значения, если переменная с именем переменная еще не определена.
Давайте посмотрим, что на самом деле выполняется cmd.exe для такого командного блока, как:
Реально выполненные командные строки:
Результатом является выход из выполнения командного файла cmd.exe с сообщением об ошибке:
Это можно увидеть, запустив пакетный файл без @echo off или с @echo ON из окна командной строки вместо двойного щелчка по пакетному файлу. См. Также отладка командного файла.
Программист пакетного файла всегда должен учитывать, как на самом деле выполняются командные строки после обработки строк в пакетном сценарии, а не как они записаны в пакетном файле, особенно при использовании %variable% который динамически изменяет код во время выполнения скрипта.
Рабочий код рассматриваемого примера кода:
Этот пакетный файл сначала настраивает локальную среду с включенными расширениями команд, как здесь требуется, и отключением отложенного расширения переменных среды, поскольку в приведенном ниже коде не требуется. Параметры EnableExtensions DisableDelayedExpansion при использовании команды setlocal могут быть опущены, поскольку расширения команд включены по умолчанию, а отложенное раскрытие отключено по умолчанию при запуске нового командного процесса, как это делается при двойном щелчке по пакетному файлу. Но всегда желательно явно определять среду, необходимую для командного файла. Прочтите этот ответ для получения подробной информации о командах SETLOCAL и ENDLOCAL .
Следующая строка присваивает первую строку файла a.txt переменной среды hostname1 , если этот файл вообще существует в текущем каталоге, который, конечно, может отличаться от каталога командного файла в зависимости от того, как командный файл был запущен. для исполнения cmd.exe .
Команда FOR с опцией /F обычно используется для чтения текстового файла построчно и присвоения строк, прочитанных из файла, переменным среды. Но set /P variable= также можно использовать, чтобы просто назначить первую строку file.xt переменной среды variable .
Четвертая командная строка проверяет, определена ли сейчас переменная hostname1 , что не так, если файл a.txt не существует в текущем каталоге или этот файл начинается с пустой строки. Переменная среды hostname1 определяется со значением 0 , если не определена после третьей строки.
Затем для визуальной проверки выводится текущее значение переменной hostname1 .
Затем для сравнения строк с учетом регистра используются три условия IF . Строки для сравнения заключены в двойные кавычки, что делает командный файл более безопасным при выходе из выполнения из-за синтаксической ошибки, зависящей от строки, считанной из файла a.txt . Но это решение по-прежнему не на 100% отказоустойчиво, см. Ответ на Как остановить интерпретатор команд Windows от выхода из выполнения командного файла при неправильном вводе пользователем ? для получения подробной информации о том, как получить код пакетного файла без сбоев при использовании set /P со строковым значением, введенным пользователем или прочитанным из файла, который каждый пользователь может редактировать перед запуском пакетного файла.
Строковые значения, присвоенные hostname02 и hostname03 , фиксированы в коде, и поэтому эти строковые значения могут быть напрямую записаны также в файл a.txt без необходимости ссылаться на переменные среды hostname02 и hostname03 , определенные внутри командных блоков, которые потребовали бы отложенного расширения переменных среды.
Оператор перенаправления >> и имя файла записываются в начале строки, чтобы действительно записать в файл a.txt только 1 или 2 без конечного пробела, если есть нет конечных пробелов в двух командных строках echo в пакетном файле. При использовании echo 1 >>a.txt пространство между 1 и >> также будет записано в файл a.txt . И echo 1>>a.txt вообще не будет записывать 1 в файл a.txt . Подробнее читайте в статье Microsoft о Использование операторов перенаправления команд. Командный процессор Windows переформатирует >>a.txt echo 1 в echo 1 1>>a.txt перед выполнением этой командной строки. Итак, >>a.txt в начале строки после пробелов отступа для лучшей читаемости перемещается интерпретатором команд Windows при синтаксическом анализе в конец командной строки с вставкой 1 (пробел и один) слева от оператора перенаправления >> .
VBScript выполняется либо с cscript.exe — консольной версией хоста сценариев Windows, либо с wscript.exe — GUI хоста сценариев Windows. Команда CALL не подходит для выполнения сценария VBScript. Таким образом, командный файл использует wscript.exe для запуска сценария VBScript, отображающего только простое окно сообщения.
Чтобы понять используемые команды и то, как они работают, откройте окно командной строки, выполните там следующие команды и внимательно прочитайте все страницы справки, отображаемые для каждой команды.
Источник
Ошибка синтаксиса в команде copy con (cmd)
Здравствуйте. Сегодня столкнулся с очень страннім вопросом. Создал каталог Network (в Documents and Settings используя md). Перешел в него используя cd. После этого уже в Network через вышеупомянутый md cоздал в нем подкаталог New. И тут началось самое интересное: надо в каталоге New создать файл с расширением *.doc. Пишу copy con C:Documents and SettingsNetworkNew1.doc ошибка в синтаксисе. Если написать copy con C:1.doc — создает. Обошел проблему, перейдя через cd в сам каталог New, а в нем copy con 1.doc. Дело в текущем каталоге? Если да то почему находясь в Network можно создать файл в C:, но не можна в C:Documents and SettingsNetworkNew? Помогите пожалуйста.
2 ответа 2
Вобщем я сделал все иначе чем в первый раз. Во первых, я не бегал по каталогам используя cd, а создавал подкаталоги прописывая абсолютные пути. Во вторых, взял пути в кавычки, как мне и посоветовали.
Всё ещё ищете ответ? Посмотрите другие вопросы с метками cmd или задайте свой вопрос.
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.12.20.41044
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник