如何在Windowsbatch file中embedded文本文件

我需要创build一个写文本文件(可能包括variables)的batch file。 在使用bash的Unix中,这是微不足道的:

#!/bin/bash ver="1.2.3" cat > file.txt <<EOL line 1, ${ver} line 2 line 3 ... EOL 

用batch file做这件事最简单的方法是什么?

注意:有一个完整的解决scheme,在Windows批处理的heredoc中使用“heredoc”例程? 但是对于临时使用来说似乎太复杂了。 我正在寻找一个快速简单的方法。

如果只有一个数据块(文本),下面的工作正常,

 @ECHO OFF set string=beautyful REM get linenumber for Data: for /f "tokens=1 delims=:" %%a in ('findstr /n /b "REM StartData" "%~f0"') do set ln=%%a REM print Data (use call to parse the line and evaluate variables): (for /f "usebackq skip=%ln% delims=" %%a in ("%~f0") do call echo %%a)>"new.txt" type "new.txt" goto :eof REM StartData hello %string% world line 2 line 3 

如果数据中没有变量,请忽略该call 。 优点:不需要逃脱任何东西。 即使通常有毒的字符工作(而不是for循环,你也可以使用more +%ln% "%~f0" )。 可悲的是,当你使用call来分析变量的行时,你放弃了这个优点。

我发现最简单和最不混乱的方式如下:

 set ver=1.2.3 ( echo ^ line 1, %ver%^ line 2^ line 3^ ... ) > file.txt 

运行我得到的脚本:

 C:\> type file.txt line 1, 1.2.3 line 2 line 3 ... 

基本上,每条线都必须加上一个脱字符(^)和一个空行。