我有以下代码:
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),但如果在本地运行它不会?
提前致谢!
答案 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