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查询。为什么呢?我不知道:(