skip选项不适用于for循环,批处理脚本

时间:2015-11-27 11:53:03

标签: batch-file for-loop token options operator-precedence

我有以下代码:

for /F "tokens=3 skip=2 usebackq" %%A in (`"REG QUERY !KEY_NAME! /v VALUE_NAME!"`) do (
    set SafeSignVersionValue=%%A
    @echo SafeSign Version = !SafeSignVersionValue! >> %USERNAME%.txt
)       

它是在我们域中的每个用户登录时执行的脚本的一部分 (它位于SysVol文件夹中)。 reg查询的结果是3行 (第1行为空白)。我对最后一行的第三个标记感兴趣(因此 tokens = 3并跳过= 2)。

当我在本地运行此脚本时#39; (在我的电脑中)从控制台窗口 它工作正常:我得到了我正在寻找的数据。

如果脚本是从SYSVOL运行的,则它无法正常工作。似乎没有 跳过前2行(skip = 2不工作?)因为我在输出中得到2行

SafeSign Version = xxxx(从第1行获取第3个令牌)   SafeSign Version = yyyy(从第二行获取第三个令牌)

为什么?是否与令牌的顺序有关,跳过?它是 只有我能想到的东西,但如果是的话,为什么在作为一部分运行时很重要 登录(SYSVOL),但如果在本地运行它不会?

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果您正在寻找最后一行的第三个值。你可以不用SKIP就可以做到。 最后一行将是最后一次评估。

试试这样:

for /F "tokens=3" %%A in ('REG QUERY !KEY_NAME! /v !VALUE_NAME!') do set "SafeSignVersionValue=%%A"

@echo SafeSign Version = !SafeSignVersionValue! >> %USERNAME%.txt