如何在Windows批处理文件中嵌入文本文件

时间:2016-11-06 15:51:28

标签: windows batch-file

我需要创建一个写文本文件的批处理文件(可能包括变量)。在使用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'例程有一个完整的解决方案,但对于临时使用来说似乎太复杂了。我正在寻找一种快速而简单的方法。

2 个答案:

答案 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
...

基本上,每一行必须以插入符号(^)和空行终止。

相关问题