Как передать текст с новой строкой в ​​качестве параметра в файл bat? - PullRequest
5 голосов
/ 22 февраля 2012

Если я передаю такой текст:

first line
second line

в файл .bat, он принимает первую строку только в качестве значения параметра.

Как это исправить?Спасибо

Ответы [ 2 ]

2 голосов
/ 26 марта 2012

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

Лучше всего определить переменную среды, которая содержит две строки текста, включая новую строку. Затем передайте имя переменной в качестве аргумента пакету, а затем разрешите пакетному файлу получить доступ к значению с помощью отложенного расширения.

test.bat:

@echo off
setlocal enableDelayedExpansion
echo !%1!

Из командной строки:

>set multiLine=hello^
More?
More? world

>test multiLine
hello
world

Для всех, кто заинтересован, вот обсуждение, инициированное Jeb относительно новых строк в параметрах пакета: http://www.dostips.com/forum/viewtopic.php?t=1768

0 голосов
/ 20 сентября 2012

Вы можете получить доступ ко всем параметрам, но только если пакетные файлы запускаются с cmd /c, напр.как действие перетаскивания.

@echo off
setlocal EnableDelayedExpansion
echo !cmdcmdline!

Но если вы запустите командный файл из приглашения, это не будет работать, поскольку cmdcmdline содержит только то, как был запущен cmd.exe, в этом случае это обычно что-то вроде "C:\Windows\system32\cmd.exe".

...