批处理脚本 - 将变量的所有内容写入文件

Batch Script - Writing all contents of Variable into a File

正在将变量的内容加载到文本文件中。

Echo %var% > Temp.txt

上面的代码工作正常,但是如果变量中定义了两行,它会在终端中打印第一行并将第二行打印到文本文件中。 有没有办法将变量的所有内容写入文本文件? 例如:

变量:

 123
 234

只有234写入了Temp.txt,但是我想要123和234写入Temp.txt,一个在另一个下面

而且,有什么方法可以从批处理脚本将数据加载到 Excel 文件中吗?如果是这样,想要一些基本示例。

编辑: 变量var是这样定义的:

FOR /F "Tokens=1*" %%A IN ('REG QUERY "HKCU\....."') DO (
        IF NOT "!var!"=="" SET "var=!var! && Echo."
        SET "var=!var!%%A"
)
Echo %var% >> Temp.txt

尝试将数据写入 excel 文件

awk 'BEGIN{ OFS="|";打印"Column1|Column2|Column3|Column4|Column5|Column6"}; NR > 1{print "IND", "INR", $6, $7, $8, $9;}' Inputdata.txt > Output.xls

setlocal enabledelayedexpansion
>temp.txt echo !var!
endlocal

变量中包含的特殊字符如换行符或回车returns需要延迟扩展才能正确处理。

简单使用

( echo %var% ) > temp

但是您的变量不包含多行文本,它包含多个 ECHO 指令。

对于真正的多行文本,您需要使用换行符。

setlocal EnableDelayedExpansion
SET LF=^


REM Two empty lines are required
set "var="
FOR /F "Tokens=1*" %%A IN ('REG QUERY "HKCU\....."') DO (
        IF defined var SET "var=!var!!LF!"
        SET "var=!var!%%A"
)
Echo !var! >> Temp.txt
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%A IN (123 234) DO (
        IF NOT "!var!"=="" SET "var=!var! && Echo."
        SET "var=!var!%%A"
)
ECHO %var%
echo========================
Echo %var% >> u:\Temp.txt
ECHO =======================
(Echo %var% )>> u:\Temp2.txt
ECHO =======================
SET var

GOTO :EOF

也许这会让您了解正在发生的事情。

解决方案是(Echo %var% )>> u:\Temp2.txt

其中 >> 可以是 > 以重新创建而不是追加。

U: 是我的 RAMdrive