Board logo

标题: [注册表类] BAT未提取到注册表值的IF判断闪退,求指导,谢谢 [打印本页]

作者: Nano    时间: 2018-6-24 16:57     标题: 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。
作者: Batcher    时间: 2018-6-24 17:01

为什么要使用 %a% 这个中间变量呢?直接在 for 循环里面设置 set "uid1=%%b" 可以吗
作者: Nano    时间: 2018-6-24 22:45

本帖最后由 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。
作者: Batcher    时间: 2018-6-25 08:19

回复 3# Nano
  1. reg query "HKEY_CURRENT_USER\Software\iStock\System" /v PrevUserID > 1.txt
复制代码
把 1.txt 压缩之后传上来,我测试一下
作者: Nano    时间: 2018-6-26 14:31

回复 4# Batcher
1.txt为空值,对应注册表键值为空,可不可以实现检测注册表有对应值取其值为变量值,没有则变量赋值为100058
作者: Batcher    时间: 2018-6-26 15:24

  1. set "uid1=100058"
复制代码
把这个赋值命令放到代码的第一行
作者: Nano    时间: 2018-6-26 15:36

回复 6# Batcher


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

这个不是没用了,能实现echo 未检测到用户ID%uid1%给UiD2赋值么
作者: Batcher    时间: 2018-6-26 17:33

  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
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2