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

[技术讨论] 还有没有比这更好的批处理读取开机启动项注册表

  1. @echo off&color 0e
  2. echo/&echo 读取开机启动项代码
  3. reg query "hklm\software\wow6432node">nul 2>nul&&(echo/&echo 读取系统64位开机启动项
  4. for /f "tokens=1,* delims=(" %%i in ('reg query "hklm\software\wow6432node\microsoft\windows\currentversion\run" /z') do (
  5. for /f "tokens=1,* delims=) " %%k in ('echo=%%j') do (
  6. if "%%k"=="1" echo=字符串值: %%~dpnxl
  7. if "%%k"=="3" echo=二进制值: %%~dpnxl
  8. if "%%k"=="4" echo=dword[32-bit]值: %%~dpnxl
  9. if "%%k"=="11" echo=dword[64-bit]值: %%~dpnxl
  10. if "%%k"=="7" echo=多字符串值: %%~dpnxl
  11. if "%%k"=="2" echo=可扩充字符串值: %%~dpnxl
  12. ))
  13. )
  14. echo/&echo 读取系统开机启动项
  15. for /f "tokens=1,* delims=(" %%i in ('reg query "hklm\software\microsoft\windows\currentversion\run" /z') do (
  16. for /f "tokens=1,* delims=) " %%k in ('echo=%%j') do (
  17. if "%%k"=="1" echo=字符串值: %%~dpnxl
  18. if "%%k"=="3" echo=二进制值: %%~dpnxl
  19. if "%%k"=="4" echo=dword[32-bit]值: %%~dpnxl
  20. if "%%k"=="11" echo=dword[64-bit]值: %%~dpnxl
  21. if "%%k"=="7" echo=多字符串值: %%~dpnxl
  22. if "%%k"=="2" echo=可扩充字符串值: %%~dpnxl
  23. ))
  24. echo/&echo 读取用户开机启动项
  25. for /f "tokens=1,* delims=(" %%i in ('reg query "hkcu\software\microsoft\windows\currentversion\run" /z') do (
  26. for /f "tokens=1,* delims=) " %%k in ('echo=%%j') do (
  27. if "%%k"=="1" echo=字符串值: %%~dpnxl
  28. if "%%k"=="3" echo=二进制值: %%~dpnxl
  29. if "%%k"=="4" echo=dword[32-bit]值: %%~dpnxl
  30. if "%%k"=="11" echo=dword[64-bit]值: %%~dpnxl
  31. if "%%k"=="7" echo=多字符串值: %%~dpnxl
  32. if "%%k"=="2" echo=可扩充字符串值: %%~dpnxl
  33. ))
  34. pause
复制代码
另外如何提取前边的值名,不用延迟变量,提取一晚了没提取出来,关键是值名称包含空格(多少个空格未知)

回复 2# DAIC


多谢坛友指导,真没想到用多重判断
其实我只是完善下以前大神的各种代码达到更好的效果

TOP

回复 4# DAIC

Energy Management    REG_SZ    C:\Program Files (x86)\Lenovo\Energy Manageme
1 3gr a    REG_SZ "C:\Program Files\qq\"
Skytel    REG_SZ    C:\Program Files\Realtek\Audio\HDA\Skytel.exe
这只是例子非正常标准环境
只提取REG_SZ前边的内容,在不用第三方和延迟变量情况下提取,红色标注为要提取的内容拆分了N次居然没有成功

TOP

回复 6# 9zhmke
只是用的一种而已我写的一般是同时检测如果达不到要求就会自动删除注册表信息的主项和对应文件夹这个有没有此项都无所谓,只是会多余显示64位开机启动项这个名称

TOP

回复 9# pcl_test

依然感谢PCL大神解答,不过这样会多出无用的临时文件,已经很少用临时文件信息来读取了(避开到不创建任何一个临时的文件),不过大神,这是不是VBS,在正常批处理中没见过这些while(!WScript.StdIn.AtEndOfStream){.........},对VBS一点都不懂

TOP

回复 11# pcl_test


   只要不借助延迟变量,第三方,临时文件,就是好代码,诚恳请大神发下代码,虽然看不懂不过这个键值名称提取真的很重要,微软那么多zhuan家居然没考虑到注册表提取会这么麻烦

TOP

回复 13# pcl_test

我倒.例子在5楼了

TOP

本帖最后由 /zhqsystem/zhq 于 2015-7-12 01:24 编辑

回复 15# pcl_test

hklm\software\microsoft\windows\currentversion\run
hkcu\software\microsoft\windows\currentversion\run
hklm\software\wow6432node\microsoft\windows\currentversion\run
任意选择一个,我也做伸手党,实在是办法用尽了也没弄出来

TOP

返回列表