用批处理脚本读取带有系统变量的文本文件?

时间:2014-10-10 06:16:01

标签: cmd batch-file

我有一个文本文件param.txt,如下所示:

"SaveOnExit","true"
"tmp_dir","%tmp%\app"
"GUID","ab0809eda345febca"

我想通过批处理(Win7)读取此文件并将其回显到具有“已翻译”系统变量的新文件,例如

"SaveOnExit","true"
"tmp_dir","C:\Users\user\AppData\Local\Temp\app"
"GUID","ab0809eda345febca"code here

我见过用于解析的样本

@echo off
FOR /F "tokens=1" %%G IN (param.txt) DO @echo %%G

不幸的是,没有转换系统变量%temp%。 输出保持与原始文件相同。 我玩了SETLOCAL EnableExtensions和EnableDelayedExpansion而没有任何结果。 由于要求尽可能简单地使用VBS,Powershell或其他工具是不可取的。

有没有办法按要求获得输出? 感谢

1 个答案:

答案 0 :(得分:1)

@echo off
    setlocal enableextensions disabledelayedexpansion

    (for /f "usebackq delims=" %%a in ("inputfile.txt") do (
        call echo(%%a
    )) > outputfile.txt

要扩展readed行内的变量引用,需要强制解析器处理变量的内容。您可以使用call命令在该行上强制执行aditional解析以扩展变量。