我需要创建一个写文本文件的批处理文件(可能包括变量)。在使用bash的Unix中,这是微不足道的:
#!/bin/bash
ver="1.2.3"
cat > file.txt <<EOL
line 1, ${ver}
line 2
line 3
...
EOL
使用批处理文件执行此操作的最简单方法是什么?
注意:在heredoc for Windows batch?使用'heredoc'例程有一个完整的解决方案,但对于临时使用来说似乎太复杂了。我正在寻找一种快速而简单的方法。
答案 0 :(得分:5)
如果只有一个数据块(文本)
,那么下面的工作正常@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
来解析变量行时,您将失去这一优势。
答案 1 :(得分:2)
我找到的最容易和最简单的方法如下:
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
...
基本上,每一行必须以插入符号(^)和空行终止。