批处理脚本 - 将变量的所有内容写入文件
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
正在将变量的内容加载到文本文件中。
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