Alimentando entrada de múltiplas linhas (aqui documentos) para comandos em scripts cmd.exe

1

No Bash, posso fazer algo assim

somecmd << END
a lot of 
text here
END

para alimentar a entrada de um comando diretamente de um script. Eu preciso fazer o mesmo em arquivos em lotes CMD.exe (scripts .cmd). É possível?

    
por Krumelur 12.01.2016 / 16:18

3 respostas

1

Acredito que você pode usar um único caractere ^ para cada linha.

EG:

echo This is a really long ^
text message that spans multiple ^
lines

retorna:

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
    
por 12.01.2016 / 16:22
2

É simples, mas não tão limpo quanto no Unix / Linux. Tente isto:

(@echo.a lot of
@echo.text here
) | somecmd

Observe que . após a instrução echo permite iniciar uma linha com espaços em branco. O símbolo @ é necessário para evitar que a instrução echo seja enviada para somecmd . Você pode eliminar o símbolo @ assim:

echo off
(echo.a lot of
echo.text here
) | somecmd
echo on
    
por 17.08.2017 / 17:07
0

Até agora, não encontrei nenhuma solução para esse problema!

Eu tenho apenas uma solução alternativa para definir alguns scripts BAT.

Usando meu script, a solução para o seu problema se parece com isso

call INIT-TRAMEX.bat

%assign-sysout% FILE.SYSOUT.TXT

%w% a lot of 
%w% text here

somecmd <%sysout%

Mas em todos os casos, a indirecção direta é impossível.

INIT-TRAMEX.bat file define %ASSIGN-SYSOUT% e %W% variables

::******************************************************************************
::* 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
O script

ASSIGN-SYSOUT define a variável %sysout% e cria um arquivo vazio. Contém as seguintes linhas

set sysout=%1
@echo.>%sysout%
del %sysout%

WRITE-TEXT script contém as seguintes linhas

IF "%1"=="" goto line
echo %* >>%sysout%
goto quit

:line

echo. >>%sysout%

:quit

Usando essas dicas, o script DOS é mais legível.

    
por 18.09.2018 / 12:50