【发布时间】:2016-03-01 14:57:11
【问题描述】:
我有以下代码:
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 行 (第一行为空白)。我对最后一行的第三个标记感兴趣(因此 令牌=3 和跳过=2)。
当我从控制台窗口“本地”(在我的计算机中)运行此脚本时 它工作正常:我得到了我正在寻找的数据。
如果脚本是从 SYSVOL 运行的,它将无法正常工作。好像没有 跳过前 2 行(skip=2 不起作用?)因为我在输出中得到 2 行
SafeSign Version = xxxx(从第一行获取第三个令牌) SafeSign Version = yyyy(从第 2 行获取第 3 个令牌)
这是为什么呢?是否与令牌的顺序有关,跳过?这是 我唯一能想到的,但如果是的话,为什么作为一部分运行时很重要 登录 (SYSVOL),但如果在本地运行则不会?
提前致谢!
【问题讨论】:
-
VALUE_NAME!应该是!VALUE_NAME!。 -
粘贴/编辑代码时出错。这 !在那里。
-
实际上我没有得到一个空行作为
reg query输出的第一行;我只得到两行:第一行包含查询的密钥,然后是一个空行...所以我无法重现您的问题... -
我在屏幕上显示 4 行(CMD 控制台):第 1 和第 4 行为空,第 2 和第 3 行带有信息。如果我将输出重定向到 txt 文件并在编辑器中打开它,我只会得到 2 行信息和第 3 行空(我相信是 CR)。必须用十六进制编辑器检查
标签: batch-file for-loop token options operator-precedence