Подача многострочного ввода (здесь документы) командам в сценариях cmd.exe
В Bash я могу сделать что-то подобное
somecmd << END
a lot of
text here
END
кормить ввод команды напрямую из скрипта. Мне нужно сделать то же самое в пакетных файлах CMD.exe (сценарии.cmd). Является ли это возможным?
3 ответа
Я считаю, что вы можете использовать один ^
символ для каждой строки.
НАПРИМЕР:
echo This is a really long ^
text message that spans multiple ^
lines
возвращает:
C:\Users\Jonno>echo This is a really long ^
More? text message that spans multiple ^
More? lines
This is a really long text message that spans multiple lines
Это просто, но не так чисто, как в Unix/Linux. Попробуй это:
(@echo.a lot of
@echo.text here
) | somecmd
Обратите внимание, что .
после выражения echo позволяет начинать строку с пробелов. @
символ необходим для предотвращения отправки оператора echo somecmd
, Вы можете устранить @
обозначим таким образом:
echo off
(echo.a lot of
echo.text here
) | somecmd
echo on
До сих пор я не нашел решения этой проблемы!
У меня есть только обходной путь в определении некоторых BAT-скриптов.
Используя мой скрипт, решение вашей проблемы выглядит следующим образом
call INIT-TRAMEX.bat
%assign-sysout% FILE.SYSOUT.TXT
%w% a lot of
%w% text here
somecmd <%sysout%
Но во всех случаях прямое косвенное обращение невозможно.
INIT-TRAMEX.bat
файл определяет %ASSIGN-SYSOUT%
а также %W%
переменные
::******************************************************************************
::* INIT-TRAMEX.bat
::******************************************************************************
@echo OFF
set scriptdir=c:\Scripts
set ASSIGN-SYSOUT=call %scriptdir%\AssignSysout.bat
set WRITE-TEXT=call %scriptdir%\WriteText.bat
set W=call %scriptdir%\WriteText.bat
ASSIGN-SYSOUT
скрипт определяет %sysout%
Переменная и создайте пустой файл. Он содержит следующие строки
set sysout=%1
@echo.>%sysout%
del %sysout%
WRITE-TEXT
скрипт содержит следующие строки
IF "%1"=="" goto line
echo %* >>%sysout%
goto quit
:line
echo. >>%sysout%
:quit
Используя эти советы, DOS-скрипт более читабелен.