我需要创建一个批处理文件,用于编写文本文件(可能包括变量)。在Unix中使用bash可以轻松实现:
#!/bin/bash
ver="1.2.3"
cat > file.txt <<EOL
line 1, ${ver}
line 2
line 3
...
EOL
如何使用批处理文件来完成这个最简单的任务?
注意:在heredoc for Windows batch?中有一个完整的解决方案,但似乎对于临时使用来说过于复杂。我正在寻找一种快速简单的方法。
我需要创建一个批处理文件,用于编写文本文件(可能包括变量)。在Unix中使用bash可以轻松实现:
#!/bin/bash
ver="1.2.3"
cat > file.txt <<EOL
line 1, ${ver}
line 2
line 3
...
EOL
如何使用批处理文件来完成这个最简单的任务?
注意:在heredoc for Windows batch?中有一个完整的解决方案,但似乎对于临时使用来说过于复杂。我正在寻找一种快速简单的方法。
@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
。优点:不需要转义任何字符,甚至通常有问题的字符也能正常工作(你也可以使用more +%ln% "%~f0"
代替for
循环)。遗憾的是,当你使用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
...
基本上,每行都必须以插入符号 (^) 和一个空行结束。