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

[注册表类] 【已解决】求助批处理获取注册表键值

本帖最后由 不知道是谁 于 2022-5-13 22:26 编辑

一个绿色程序,有好几个版本,自身不带一键卸载功能,所以想写个一键清理的批处理
但发现居然搞不定,希望大佬们能提供一些思路,谢谢

版本1:
会在 HKCU\Software\Microsoft\Windows\CurrentVersion\Run 建立启动项 ABC
如果文件是在没有空格的路径上,生成的值为 C:\Users\Administrator\Desktop\111.exe  1
如果文件中在带空格的路径上,生成的值会带引号 ”C:\Users\Administrator\Desktop\A A\111.exe“  1

版本2:
会在 HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run 建立启动项 ABC
不区分空格,生成的值都会带引号 ”C:\Users\Administrator\Desktop\111.exe“  1

现在是不想要后面的数字1,只想要 C:\Users\Administrator\Desktop\111.exe
  1. @echo off
  2. set Key=HKCU\Software\Microsoft\Windows\CurrentVersion\Run
  3. for /f "tokens=2,*" %%i in ('reg query "%Key%" /v "ABC" 2^>nul') do echo %%j
  4. pause
复制代码

回复 2# flashercs


    看了之后才感觉原来这么简单,陷入思维误区了,一直在想着怎么用 delims 和 tokens 达成期望的效果,居然把 for %variable in (set) do command 给忘了
  1. @echo off
  2. set Key1=HKCU\Software\Microsoft\Windows\CurrentVersion\Run
  3. set Key2=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  4. set Key3=HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
  5. call :GetInfo
  6. echo 名称:%FileName%
  7. echo 路径:%FilePath%
  8. taskkill /f /im %FileName% >nul 2>nul
  9. pause & exit
  10. :GetInfo
  11. for %%i in (%Key1% %Key2% %Key3%) do (
  12.     for /f "tokens=2*" %%j in ('reg query "%%i" /v "ABC" 2^>nul') do (
  13.         for %%l in (%%k) do (
  14.             if %%l EQU 1 goto :eof
  15.             set FilePath=%%~l
  16.             set FileName=%%~nxl
  17.         )
  18.     )
  19. )
复制代码

TOP

返回列表