标题: [注册表类] BAT未提取到注册表值的IF判断闪退,求指导,谢谢 [打印本页]
作者: Nano 时间: 2018-6-24 16:57 标题: BAT未提取到注册表值的IF判断闪退,求指导,谢谢
本帖最后由 Nano 于 2018-6-24 23:32 编辑
- set "str=HKEY_CURRENT_USER\Software\iStock\System"
- for /f "tokens=2*" %%a in ('reg query "%str%" /v PrevUserID 2^>nul') do set "a=%%b"
- set /a uid1=%a%
- if defined uid1 (
- echo 从注册表提取用户ID%uid1%成功.
- if %uid1%==100058 set UiD2=201579
- if %uid1%==201579 set UiD2=100058
- )else (
- echo 未检测到用户ID%uid1%.
- set uid1=100058
- set UiD2=201579
- )
复制代码
错误提示 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 - 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
复制代码
把这个赋值命令放到代码的第一行
作者: 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
- @echo off
- setlocal enabledelayedexpansion
- set "uid1="
- set "UiD2="
- set "str=HKEY_CURRENT_USER\Software\iStock\System"
- for /f "tokens=2*" %%a in ('reg query "%str%" /v PrevUserID 2^>nul') do (
- set "uid1=%%b"
- )
- if "!uid1!" neq "" (
- echo 从注册表提取用户ID!uid1!成功.
- if !uid1!==100058 (
- set UiD2=201579
- )
- if !uid1!==201579 (
- set UiD2=100058
- )
- ) else (
- echo 未检测到用户ID!uid1!.
- set uid1=100058
- set UiD2=201579
- )
- echo !uid1!
- echo !UiD2!
- pause
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |