Board logo

标题: [注册表类] 【已解决】求助批处理获取注册表键值 [打印本页]

作者: 不知道是谁    时间: 2022-5-13 16:20     标题: 【已解决】求助批处理获取注册表键值

本帖最后由 不知道是谁 于 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
复制代码

作者: flashercs    时间: 2022-5-13 17:06

  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 (
  4.   for %%k in (%%j) do (
  5.     set s=%%k
  6.     goto break
  7.   )
  8. )
  9. :break
  10. echo %s%
  11. pause
复制代码

作者: 不知道是谁    时间: 2022-5-13 22:07

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





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