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

17

Мне нужно передать строку параметров AB CD в командный файл из командной строки. Этот параметр относится к имени файла.

Если я использую AB CD , скрипт просто выбирает первую часть и возвращает Unable to find the file AB.txt

Если я ставлю цитату вокруг своих параметров, например "AB CD" , я получил

"AB CD".txt 
Illegal characters in path.
    
задан magdmartin 05.09.2013 в 16:57
источник

2 ответа

32

вы можете использовать% ~ 1 вместо% 1

например, test.bat с:

echo %~1

, тогда появится вызов test "abc de" :

abc de
    
ответ дан Mali 05.09.2013 в 17:12
источник
  • , что я нашел по этому вопросу: stackoverflow.com/questions/473117/... –  magdmartin 05.09.2013 в 17:13
10

что вы можете сделать, это

>batch.bat "ab cd.txt"

Когда параметры содержат пробелы, вы можете заключить их в кавычки.

    
ответ дан Murtuza Kabul 05.09.2013 в 17:01
источник
  • две вещи, я не могу добавить расширение в мои параметры, поскольку он используется где-то в моем командном скрипте else без расширения файла. Во-вторых, когда я добавляю цитату, в имени файла добавляются (см. Последний пример моих вопросов) –  magdmartin 05.09.2013 в 17:03
  • Ну, в этом случае, я думаю, проблема заключается не в передаче параметров, а в программировании в пакетном файле. Вы можете проверить это, создав простой командный файл с помощью этого простого эхо-сигнала% 1, это будет отражать полное имя «ab cd». Это означает, что вы правильно передаете параметры, но где-то в пакетном файле оно не обрабатывается должным образом. Где-то он пытается воссоздать имя файла, разрывая его и добавляя расширение. –  Murtuza Kabul 05.09.2013 в 17:06
  • согласен. Мне действительно нужно использовать% ~ 1 вместо% 1 в моем скрипте –  magdmartin 05.09.2013 в 17:11
  • Вы должны либо использовать% ~ p1 для пути, либо% ~ n1 для имени файла, а не только% ~ 1 –  Murtuza Kabul 05.09.2013 в 17:16
  • или их комбинации –  Murtuza Kabul 05.09.2013 в 17:16