找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 82154|回复: 24

[注册表类] 【已解决】批处理如何判断某个注册表项下面是不是空的,然后执行一些东西

[复制链接]
发表于 2015-10-10 12:55:53 | 显示全部楼层 |阅读模式
本帖最后由 solan 于 2015-10-30 20:03 编辑
  1. @echo off
  2. reg query "HKEY_CURRENT_USER\Software\Unigraphics Solutions\NX" /v
  3. if errorlevel 1 (
  4.        tasklist | find "ugslmd.exe"
  5.        if not errorlevel 1 (goto x1) else (goto x2)
  6. )else goto exit
  7. :x1
  8. ..........
  9. :x2
  10. .........
复制代码
这是我写的代码,但是不成功。我先说明一下,注册表项NX下面有好多个子项比如8.5、A、B等等,

当我卸载了8.5、A和B等等软件后NX下面空了,批处理怎么判断呢,如果空了就执行x1或x2卸载共用的文件;如果不空,哪怕还有一个子项就退出exit
麻烦老师指点一二
发表于 2015-10-10 13:22:16 | 显示全部楼层
空和非空这两种情况下分别执行 reg query "HKEY_CURRENT_USER\Software\Unigraphics Solutions\NX" /v
根据返回结果的不同来判断
不要根据 errorlevel 来判断
 楼主| 发表于 2015-10-10 13:57:02 | 显示全部楼层
回复 2# DAIC
执行代码
  1. @echo off
  2. reg query "HKEY_CURRENT_USER\Software\Unigraphics Solutions\NX"
  3. pause
复制代码
如果不空时,执行结果如下:

如果空,执行结果如下:

请问下面的代码怎么写,谢谢
 楼主| 发表于 2015-10-10 15:05:56 | 显示全部楼层
我学得还不行啊,求大神帮忙写一下,拜托啦
 楼主| 发表于 2015-10-10 16:25:06 | 显示全部楼层
我写成这样也不行
  1. @echo off
  2. for /f "tokens=2" %%a in ('reg query "HKEY_CURRENT_USER\Software\Unigraphics Solutions\NX"') do set /a n=%%a
  3. if %n%=0 (goto exit) else (
  4. tasklist | find "ugslmd.exe
  5. if not errorlevel 1 (goto x1) else (goto x2)
  6. )
  7. :x1
  8. .....
  9. :x2
  10. .....
复制代码
 楼主| 发表于 2015-10-10 16:27:27 | 显示全部楼层
祈求大神出现,一举成功
 楼主| 发表于 2015-10-10 16:38:51 | 显示全部楼层
NX下面有子项时,执行下面代码
  1. @echo off
  2. reg query "HKEY_CURRENT_USER\Software\Unigraphics Solutions\NX"
  3. pause
复制代码
结果是

执行下面代码
  1. @echo off
  2. for /f "tokens=2" %%a in ('reg query "HKEY_CURRENT_USER\Software\Unigraphics Solutions\NX"') do set /a n=%%a
  3. echo %n%
  4. pause
复制代码
结果是
发表于 2015-10-10 16:55:21 | 显示全部楼层
回复 3# solan
  1. @echo off
  2. reg query "HKEY_CURRENT_USER\Software\Unigraphics Solutions\NX" | findstr "HKEY"
  3. if errorlevel 1 (
  4.     goto :end
  5. ) else (
  6.     tasklist | findstr "ugslmd.exe" && goto :x1 || goto x2
  7. )

  8. :x1
  9. echo x1
  10. goto :end

  11. :x2
  12. echo x2
  13. goto :end

  14. :end
  15. pause
复制代码
发表于 2015-10-10 21:41:14 | 显示全部楼层
这个位置非卸载位置,自行查询卸载注册表详细路径
 楼主| 发表于 2015-10-11 08:44:55 | 显示全部楼层
本帖最后由 solan 于 2015-10-30 20:03 编辑

回复 9# /zhqsystem/zhq
这个我知道,但是这个是准对某系列软件的某个版本,卸载软件我已经写好代码了。

我这个软件有多种版本,允许多版本共存。都在Unigraphics Solutions下面的NX里面,比如A、B、9.0或其他的,Unigraphics Solutions下面还有一个子项Running Applications,这是原版软件这样的(以后他们的新版软件我估计也是这样),我刚好想利用这个特点,来判断NX下面还有没有子项,如果还有就不动而退出,如果没有就删除多版本共用的所有文件。
 楼主| 发表于 2015-10-11 08:51:11 | 显示全部楼层
我制作的是精简版,用inno打包的,由于inno的技术含量相对比较高,想完全靠inno的脚本来达到上述的功能,我目前还做不到,所以想借助批处理来解决
 楼主| 发表于 2015-10-11 09:06:07 | 显示全部楼层
8楼的代码有部分写错了,我改过来后,加上我的后续代码还是不能通过,也就是达不到我上面说的要求
 楼主| 发表于 2015-10-11 09:07:29 | 显示全部楼层
希望版主在百忙之中帮我看看,多谢了
 楼主| 发表于 2015-10-11 09:20:08 | 显示全部楼层
本帖最后由 solan 于 2015-10-30 19:59 编辑

@echo off
reg query "HKEY_CURRENT_USER\Software\Unigraphics Solutions\NX" | findstr "HKEY"
if errorlevel 1 (
    goto exit
) else (
    tasklist | findstr "ugslmd.exe" && goto x1 || goto x2
)

:x1   
........
goto x2

:x2   
........
exit[/code]
发表于 2015-10-11 17:51:24 | 显示全部楼层
现在还达不到10楼所说的要求,我贴上更改后的详细代码,请版主帮我再更改一下
solan 发表于 2015-10-11 09:20

倒是要说清楚还有哪些地方没有达到要求?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 12:13 , Processed in 0.021725 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表