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

Posted

技术标签:

【中文标题】通过批处理脚本读取带有系统变量的文本文件?【英文标题】:Reading text files with system variables by batch script? 【发布时间】:2014-12-05 05:56:59 【问题描述】:

我有一个文本文件 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】:
@echo off
    setlocal enableextensions disabledelayedexpansion

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

要在读取的行内展开变量引用,您需要强制解析器处理变量的内容。您可以使用call 命令强制对行进行附加解析以扩展变量。

【讨论】:

以上是关于通过批处理脚本读取带有系统变量的文本文件?的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本或R脚本中参数含有空格的处理方法

批处理脚本读取一个列表并为每个分配一个变量

批处理脚本上的数组

Java 处理PDF文档:页眉页脚水印背景附件

如何逐行读取批处理文件中多余字符的文本文件?允许限制行长。(Windows,批处理脚本)

shell脚本之awk工具的使用