Всем привет!
Недавно начал изучать язык 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.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.
Если перестановка ОС — это просто.
Автор:
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 »
Hakeel 0 / 0 / 0 Регистрация: 05.01.2021 Сообщений: 1 |
||||
1 |
||||
Ошибка в синтаксисе в команды05.01.2021, 14:59. Показов 3047. Ответов 2 Метки bat, batch, batch file, cmd, error, windows (Все метки)
Привет всем. Пишу интересную утилиту для windows. Но это не важно. Код:
0 |
b0gus 719 / 319 / 132 Регистрация: 17.03.2014 Сообщений: 803 |
||||
05.01.2021, 23:06 |
2 |
|||
1) set /a меняем на set
0 |
4332 / 2122 / 661 Регистрация: 26.04.2015 Сообщений: 6,823 |
|
06.01.2021, 02:37 |
3 |
+ ни одна переменная в if … (тут) после ее назначения в set /p не раскроется, нужно: setlocal enabledelayedexpansion, ищите читайте что это, вы разработчик, надо знать детали до мелочей
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
06.01.2021, 02:37 |
Помогаю со студенческими работами здесь Ошибка в синтаксисе Ошибка в синтаксисе Ошибка в синтаксисе Ошибка в синтаксисе if (isset($siteuri)) {$siteuri="da";} else {$siteuri="nu";} Ошибка в синтаксисе Ошибка в синтаксисе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 3 |
Синтаксическая ошибка сообщения об ошибке рядом с неожиданным токеном `(‘ возникает в среде типа Unix, Cygwin и в интерфейсе командной строки в Windows. Эта ошибка, скорее всего, будет вызвана при попытке запустить сценарий оболочки, который был отредактирован или созданный в старых системах DOS / Windows или Mac.
Это сообщение об ошибке также появляется, когда вы вводите команды в командной строке Linux для повседневных задач, таких как копирование файлов вручную и т. Д. Основные причины появления этого сообщения об ошибке либо из-за неправильного синтаксиса, либо из-за проблемы ОС при интерпретации команд другой системы / оболочка.
Что вызывает синтаксическую ошибку рядом с неожиданным токеном `(‘?
Причины этого сообщения об ошибке очень разнообразны и не могут быть перечислены в одной статье, так как существуют тысячи возможных ошибок синтаксиса при выполнении команд. Основные причины этой ошибки:
- Неверный синтаксис при выполнении любой команды на любой платформе. Либо вы неправильно используете команду, либо ввели неправильный синтаксис.
- Оболочка несовместима между системами Unix / DOS.
- Возникли проблемы с запуском сценария оболочки bash из другого источника .
В этой статье мы предполагаем, что вы знаете основы программирования и имеете представление о том, что делаете. Если вы новичок, лучше всего следовать подробным инструкциям по языку / команде, которую вы пытаетесь выполнить. Вероятно, вы ошиблись в синтаксисе.
Решение 1. Проверка синтаксиса и формата команд
Первая и основная причина, по которой вы можете получить это сообщение об ошибке, — это неправильный синтаксис в вашем коде или несоблюдение точного формата команд. Каждая команда имеет предопределенный формат, который вы можете увидеть в ее документации. Некоторые параметры являются необязательными, другие — обязательными.
Кроме того, следует уделять особое внимание дополнительному пространству , использованию двойных кавычек и обязательным параметрам. Если какие-либо из них отсутствуют или были объявлены неправильно, вы не сможете выполнить свой код.
Например, вместо следующего кода
[mycom7] # ./ctopo.sh um_test1 [(1,2), (2,1)]
Вам нужно выполнить его как
[mycom7] # ./ctopo.sh um_test1 "[(1,2), (2,1)]"
Также убедитесь, что вы правильно выполняете свои команды / сценарий оболочки, если он занимает несколько строк.
Из-за типа параметра необходимы двойные кавычки. Дополнительное пространство также может испортить ваш код и вызвать сообщение об ошибке. Убедитесь, что вы проверили официальную документацию команды, которую вы выполняете, и посмотрите, есть ли там проблема.
Решение 2. Устранение неполадок сценария оболочки
Если вы используете сценарий оболочки, который работает в исходной системе, но возвращает ошибку в целевой системе, вы можете устранить неполадки сценария, проверив переменные, которые хранятся во время выполнения, а затем посмотреть, что вызывает проблему. Это очень частая причина, поскольку в некоторых случаях оболочка пытается интерпретировать непечатаемый символ.
Попробуйте запустить оболочку с параметром vx. Это покажет нам, какие команды выполняются и какие значения хранятся в скрипте. Здесь вы можете устранять неполадки и диагностировать, что не так.
Например, выполните скрипт в терминале после включения vx как:
# sh -vx ./test_script5.sh
Вы можете проверить содержимое скрипта, используя команду cat как:
# cat test_script5.sh
Решение 3. Использование команды dos2unix.exe
В текстовых файлах Windows / DOS новая строка представляет собой комбинацию символа возврата каретки ( r), за которым следует перевод строки ( n). В Mac (до Mac OS X) для переноса строки использовался простой возврат каретки ( r). Unix / Linux и Mac OS X используют перевод строки ( n). Если вы используете Cygwin, он не сможет обработать сценарии, созданные DOS / Windows и более ранними версиями Mac из-за дополнительного символа возврата каретки ( r).
Здесь вы можете создать команду ‘dos2unix.exe’, которая преобразует скрипт в правильный формат, а затем вы можете выполнить его без каких-либо проблем.
В заключение вам необходимо изучить свои команды и тип используемой платформы и убедиться, что нет никаких расхождений. Поскольку мы не можем охватить все возможные варианты, у вас будет представление о том, какие ошибки могут возникнуть и как их исправить.