将多行输入(此处为文档)提供给 cmd.exe 脚本中的命令

将多行输入(此处为文档)提供给 cmd.exe 脚本中的命令

在 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 脚本更具可读性。

相关内容