Batch file 跳过选项不在for循环、批处理脚本中工作

Batch file 跳过选项不在for循环、批处理脚本中工作,batch-file,for-loop,token,options,operator-precedence,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文件

我有以下代码:

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行为空)。我对最后一行的第三个标记感兴趣(因此 令牌=3,跳过=2)

当我从控制台窗口“本地”(在我的计算机中)运行此脚本时 它工作正常:我得到了我正在寻找的数据

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

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

为什么呢?这和代币的顺序有关吗,斯基普?这是最重要的 我能想到的唯一一件事是,如果是的话,为什么作为一部分跑步很重要 登录(SYSVOL),但如果在本地运行,则不会


提前谢谢

如果要查找最后一行的第三个值。你不用跳过就可以做到。 最后一行将是最后一次求值

试着这样做:

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

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

VALUE\u NAME应该是
!重视你的名字。粘贴/编辑代码时出错。这个在那里。实际上我没有得到一个空行作为
reg query
输出的第一行;我只得到两行:第一行包含查询的键,后面是空行。。。所以我无法重现您的问题…我在屏幕上看到4行(CMD控制台):第一行和第四行为空,第二行和第三行为信息。若我将输出重定向到txt文件并在编辑器中打开它,我只会得到两行信息,第三行是空的(我相信是CR)。我得和hex Editor核实一下。它不起作用。我得到两行评价。但是,它确实可以处理类似的reg查询。为什么呢?我不知道:(