在 Bash 中,我可以做这样的事情
somecmd << END
a lot of
text here
END
直接从脚本向命令提供输入。我需要在 CMD.exe 批处理文件 (.cmd 脚本) 中执行相同操作。可以吗?
答案1
^
我相信每一行都可以使用一个字符。
例如:
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
答案2
它很简单,但看起来不像 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
答案3
到现在为止,我还没有找到解决这个问题的方法!
我只有解决方法定义一些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 脚本更具可读性。