[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[注册表类] BAT未提取到注册表值的IF判断闪退,求指导,谢谢

本帖最后由 Nano 于 2018-6-24 23:32 编辑
  1. set "str=HKEY_CURRENT_USER\Software\iStock\System"
  2. for /f "tokens=2*" %%a in ('reg query "%str%" /v PrevUserID 2^>nul') do set "a=%%b"
  3. set /a uid1=%a%
  4. if defined uid1 (
  5.     echo 从注册表提取用户ID%uid1%成功.
  6.     if %uid1%==100058 set UiD2=201579
  7.     if %uid1%==201579 set UiD2=100058
  8. )else (
  9.     echo 未检测到用户ID%uid1%.
  10.     set uid1=100058
  11.     set UiD2=201579
  12. )
复制代码
错误提示 C:\>set /a uid1=
找不到操作数。
此时不应有 set。

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "uid1="
  4. set "UiD2="
  5. set "str=HKEY_CURRENT_USER\Software\iStock\System"
  6. for /f "tokens=2*" %%a in ('reg query "%str%" /v PrevUserID 2^>nul') do (
  7.     set "uid1=%%b"
  8. )
  9. if "!uid1!" neq "" (
  10.     echo 从注册表提取用户ID!uid1!成功.
  11.     if !uid1!==100058 (
  12.         set UiD2=201579
  13.     )
  14.     if !uid1!==201579 (
  15.         set UiD2=100058
  16.     )
  17. ) else (
  18.     echo 未检测到用户ID!uid1!.
  19.     set uid1=100058
  20.     set UiD2=201579
  21. )
  22. echo !uid1!
  23. echo !UiD2!
  24. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 6# Batcher


      echo 未检测到用户ID%uid1%.
    set uid1=100058
    set UiD2=201579

这个不是没用了,能实现echo 未检测到用户ID%uid1%给UiD2赋值么

TOP

  1. set "uid1=100058"
复制代码
把这个赋值命令放到代码的第一行
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4# Batcher
1.txt为空值,对应注册表键值为空,可不可以实现检测注册表有对应值取其值为变量值,没有则变量赋值为100058

TOP

回复 3# Nano
  1. reg query "HKEY_CURRENT_USER\Software\iStock\System" /v PrevUserID > 1.txt
复制代码
把 1.txt 压缩之后传上来,我测试一下
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 Nano 于 2018-6-24 23:32 编辑

回复 2# Batcher
按此修改执行错误为:C:\>for /F "tokens=2*" %a in ('reg query "HKEY_CURRENT_USER\Software\iStock\System" /v PrevUserID 2>nul') do set "uid1=%b"
此时不应有 set。

TOP

为什么要使用 %a% 这个中间变量呢?直接在 for 循环里面设置 set "uid1=%%b" 可以吗
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表