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

[注册表类] 【已解决】求助 批处理对注册表中模糊路径的编辑

[复制链接]
发表于 2023-4-17 12:25:38 | 显示全部楼层 |阅读模式
本帖最后由 jimmy2008317 于 2023-4-20 08:52 编辑

大神,能帮忙给改一下这个吗
   目的:导入一个U盘上的【X:\Windows\System32\config\SYSTEM】系统文件到注册表,作为HKEY_LOCAL_MACHINE 下的子项wtgsys
   修改这个子项中【wtgsys\ControlSet001\Enum\USB\VID_XXXX&ID_XXXX\XXXXXXXX】的几个值
   然后卸载wtgsys项
   
   困难:"VID_XXXX&PID_XXXX" 和 后面的"XXXXXXXX”每个电脑都不一样
             其中"VID_XXXX&PID_XXXX" 可以通过别的软件获得,但后面的"XXXXXXXX” 就不行(【hklm\wtgsys\ControlSet001\Enum\USB\VID_XXXX&PID_XXXX】路径下只有XXXXXXXX这一个项)

           您能给一下如何寻找路径中XXXX吗(【hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%^&PID_%PID%】路径下只有XXXX这一个项)

    附:有办法通过批处理获得U盘的VID、PID吗
   万分感谢

   目前代码:
  1. @echo off
  2. color b
  3. reg unload HKEY_LOCAL_MACHINE\wtgsys
  4. cls
  5. title 启动WTG系统拔出冻结(测试版)
  6. echo 启动WTG系统拔出冻结(测试版)

  7. ping /n 2 127.1>nul
  8. echo 加载注册表
  9. echo (如果电脑上仅有一个WTG系统,直接按enter,否则输入对应盘盘符 格式“X:”)
  10. set /p in=

  11. for %%a in (E: F: G: H: I:) do (
  12.      if exist %%a\ (
  13.         if "%%a"=="%in%" goto inload
  14.      )else echo 无%%a盘
  15. )

  16. for %%a in (E: F: G: H: I:) do (
  17. if exist %%a\ (
  18.         echo 在%%a盘加载
  19.         reg load HKEY_LOCAL_MACHINE\wtgsys %%a\Windows\System32\config\SYSTEM
  20.         )else echo 无%%a盘
  21. )

  22. :ID
  23. ping /n 5 127.1>nul
  24. cls
  25. echo 请输入VID 例:174C
  26. set /p VID=
  27. echo 请输入PID 例:55AA
  28. set /p PID=
  29. echo 请输入MSFT序列号  例:60SSFD42521AF031BB8
  30. set /p MSFT=
  31. if "%VID%"=="" goto err
  32. if "%PID%"=="" goto err
  33. if "%MSFT%"=="" goto err
  34. cls
  35. echo 请确认
  36. echo VID: %VID%
  37. echo PID: %PID%
  38. echo 序列号: %MSFT%
  39. pause

  40. reg add hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%^&PID_%PID%\%MSFT% /v DeviceDesc  /d "@usbstor.inf,%genericbulkonly.devicedesc%;USB Mass Storage Device" /f
  41. reg add hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%^&PID_%PID%\%MSFT% /v Capabilities /t REG_DWORD /d "148" /f
  42. reg add hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%^&PID_%PID%\%MSFT% /v Service /t REG_SZ /d USBSTOR /f
  43. reg add hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%^&PID_%PID%\%MSFT% /v Mfg /t REG_SZ /d "@usbstor.inf,%generic.mfg%;Compatible USB storage device" /f

  44. reg unload HKEY_LOCAL_MACHINE\wtgsys

  45. echo 冻结完成

  46. ping /n 5 127.1>nul
  47. exit

  48. :err
  49. echo 输入为空
  50. goto ID

  51. :inload
  52. echo 在%in%盘
  53. reg load HKEY_LOCAL_MACHINE\wtgsys %in%\Windows\System32\config\SYSTEM
  54. goto ID
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-4-17 14:06:32 | 显示全部楼层

  1. for /f "usebackq delims=" %%a in (`reg query "hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%^&PID_%PID%"`) do echo %%a
复制代码

评分

参与人数 1技术 +1 收起 理由
jimmy2008317 + 1 乐于助人

查看全部评分

发表于 2023-4-17 16:33:13 | 显示全部楼层
回复 1# jimmy2008317


打开CMD窗口,执行命令:
  1. reg query HKEY_LOCAL_MACHINE\wtgsys\ControlSet001\Enum\USB\VID_XXXX&PID_XXXX /s
复制代码
结果发出来,说明一下需要获取哪部分字符串?

如果需要上传文件,可以用阿里云盘或百度网盘。

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
 楼主| 发表于 2023-4-17 17:48:29 | 显示全部楼层
回复 3# Batcher


    好了https://imgse.com/i/p9Ppmp4
    麻烦您了
 楼主| 发表于 2023-4-17 17:52:50 | 显示全部楼层
回复 2# newswan

            好像不行

   https://imgse.com/i/p9P9gIK
发表于 2023-4-17 18:03:42 | 显示全部楼层
回复 4# jimmy2008317


试试这样能否获取到
  1. @echo off
  2. for /f "delims=" %%i in ('reg query HKEY_LOCAL_MACHINE\wtgsys\ControlSet001\Enum\USB\VID_174C^&PID_55AA /s ^| findstr "wtgsys"') do (
  3.     set "MyStr=%%~nxi"
  4.     goto :ShowReg
  5. )

  6. :ShowReg
  7. echo,%MyStr%
  8. pause
复制代码
发表于 2023-4-17 21:12:58 | 显示全部楼层
回复 5# jimmy2008317


刚才复制你的文本,里面是不是多了个 ^
 楼主| 发表于 2023-4-18 12:11:21 | 显示全部楼层
回复 7# newswan


    删了之后可以找到路径了,但能不能把%%a赋值到一个全局量上
    https://imgse.com/i/p9Pb191
    是输出的代码有问题吗
    输出就是  0

  1. for /f "usebackq delims=" %%a in (`reg query "hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%&PID_%PID%"`) do echo %%a & set /a ph="%%a"
  2. echo %ph%
  3. PAUSE
  4. ping /n 5 127.1>nul
  5. PAUSE
复制代码
 楼主| 发表于 2023-4-18 12:13:31 | 显示全部楼层
本帖最后由 jimmy2008317 于 2023-4-18 12:21 编辑

回复 6# Batcher

     您的代码打完后显示一个“此处不应有X”(一闪而过,X看不清)
     截到了:https://imgse.com/i/p9PqCDO
    2楼的思路似乎可以(回复在8楼)
发表于 2023-4-18 14:42:56 | 显示全部楼层
回复 8# jimmy2008317


改成这样试试:
  1. for /f "usebackq delims=" %%a in (`reg query "hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%&PID_%PID%"`) do (
  2.     echo,%%a
  3.     set "ph=%%a"
  4.     goto :ShowReg
  5. )

  6. :ShowReg
  7. echo,%ph%
  8. pause
复制代码
发表于 2023-4-18 14:48:23 | 显示全部楼层
回复 9# jimmy2008317


6楼代码改成这样:
  1. @echo off
  2. for /f "delims=" %%i in ('reg query "HKEY_LOCAL_MACHINE\wtgsys\ControlSet001\Enum\USB\VID_174C&PID_55AA" /s ^| findstr "wtgsys"') do (
  3.     set "MyStr=%%~nxi"
  4.     goto :ShowReg
  5. )

  6. :ShowReg
  7. echo,%MyStr%
  8. pause
复制代码
发表于 2023-4-18 15:47:57 | 显示全部楼层
回复 8# jimmy2008317
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION

  3. for /f "usebackq delims=" %%a in (`reg query "hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%&PID_%PID%"`) do (
  4.         echo %%a
  5.         set "ph=%%a"
  6.         echo !ph!
  7. )
复制代码
 楼主| 发表于 2023-4-18 17:43:48 | 显示全部楼层
本帖最后由 jimmy2008317 于 2023-4-18 18:01 编辑

回复 11# Batcher

    现在结果是:Batcher大神改的newsman大神的代码 成功了,newsman大神的在输出时不能去掉 ' "" ' 因此在后面的部分无法使用
          感谢两位大神的帮助
          附:有办法获得电脑上插着的唯一U盘的 VID、PID号吗
发表于 2023-4-18 22:43:24 | 显示全部楼层
回复 13# jimmy2008317


test-usb-1.bat
  1. # & cls & @cd /d "%~dp0" & powershell -c "Get-Content '%~0' | Out-String | Invoke-Expression " & pause & exit /b
  2. Get-CimInstance -ClassName Win32_USBHub | ForEach-Object {
  3.     if (($_.Status -eq "OK") -and ($_.Name -eq "USB 大容量存储设备")) {
  4.         $MyVID = $_.PNPDeviceID.Substring(8,4)
  5.         $MyPID = $_.PNPDeviceID.Substring(17,4)
  6.     }
  7. }
  8. "VID is " + $MyVID
  9. "PID is " + $MyPID
复制代码
请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
 楼主| 发表于 2023-4-19 12:30:36 | 显示全部楼层
回复 14# Batcher


    似乎不行
https://imgse.com/i/p9FC3SU

不过在网上找到一个思路
  https://imgse.com/i/p9FCdFx
  这个好像能读取到VID、PID、序列号(序列号就不需要了)
  这样有可能吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 22:47 , Processed in 0.023967 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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