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

[注册表类] 批处理如何根据文件名导出注册表项?

搜索当前指定目录的.sys文件,并依次赋予变量a
然后运行
REG EXPORT "HKLM\SYSTEM\CurrentControlSet\Services\“a”" AppBkUp.reg
Services\后面部分就是a变量。
a可能有多个,因此REG EXPORT "HKLM\SYSTEM\CurrentControlSet\Services\“a”" AppBkUp.reg
会运行多次。
请问这个bat该怎样写?

我只是想渐进解决而已

TOP


请楼主引以注意了:
  通观了楼主与pusofalse版主的对话贴,本人不得不指出导致问题迟迟得不到有效解决
的根本问题在于,楼主没有一次性把你要解决的问题和达到的目的描述清楚,而是一直在左
改右改,这样叫别人怎么帮助你?在论坛发贴求助的那么多,要是每个人都如同你一样,大
家不知道要白白浪费多少时间和精力,所以请楼主在以后发贴求助时注意这一点了。
***共同提高***

TOP

但是最后你没有生成注册表

TOP

我觉得没有出错啊。。。
路径是其中包含ata字串的。
而且运行时,这不是没有出错信息吗。
心绪平和,眼藏静谧。

TOP

信息


D:\BoJoneBackup>if not exist c:\reg md c:\reg

D:\BoJoneBackup>for /F "delims=" %a in ('dir/b/s/ad *ata*') do set "folderpath=%
a"

D:\BoJoneBackup>set "folderpath=D:\BoJoneBackup\DriversVIA Serial ATA Controller
- 3149"

D:\BoJoneBackup>set "folderpath=D:\BoJoneBackup\DriversVIA ATA Channel"

D:\BoJoneBackup>set "folderpath=D:\BoJoneBackup\Desktop\AusLogicsVisualStyler_En
\AusLogicsVisualStyler_En\Data"

D:\BoJoneBackup>set "folderpath=D:\BoJoneBackup\Desktop\SeaVoyage3DScreensaver\S
ea Voyage 3D Screensaver\App\Data"

D:\BoJoneBackup>set "folderpath=D:\BoJoneBackup\Desktop\SeaVoyage3DScreensaver\S
ea Voyage 3D Screensaver\App\Data\catalog"

D:\BoJoneBackup>for %a in ("D:\BoJoneBackup\Desktop\SeaVoyage3DScreensaver\Sea V
oyage 3D Screensaver\App\Data\catalog\*.sys") do (
set/a n+=1
call reg export "hklm\system\currentcontrolset\services\%~na" c:\reg\%n%.reg
)

D:\BoJoneBackup>start c:\reg\

D:\BoJoneBackup>pause
请按任意键继续. . .

TOP

忘记加""了 再试下。。
...
for %%a in ("%folderpath%\*.sys") do (
... ..

其他不变
心绪平和,眼藏静谧。

TOP

测试环境,当前目录下有DriversVIA Serial ATA Controller - 3149文件夹

代码:
@echo off
if not exist c:\reg md c:\reg
for /f "delims=" %%a in ('dir/b/s/ad *Serial ATA *') do set "folderpath=%%a"
for %%a in (%folderpath%\*.sys) do (
   set/a n+=1
   call reg export "hklm\system\currentcontrolset\services\%%~na" c:\reg\%%n%%.reg
)
start c:\reg\

提示:找不到文件

TOP

原帖由 282842712474 于 2008-8-12 10:56 发表
还有楼上的代码不成功,只是生成了一个“!n!.reg”

oh....sorry  太粗心了。已经修改。
心绪平和,眼藏静谧。

TOP

  1. @echo off
  2. if not exist c:\reg md c:\reg
  3. for /f "delims=" %%a in ('dir/b/s/ad *sata*') do set "folderpath=%%a"
  4. for %%a in ("%folderpath%\*.sys") do (
  5.    set/a n+=1
  6.    call reg export "hklm\system\currentcontrolset\services\%%~na" c:\reg\%%n%%.reg
  7. )
  8. start c:\reg\
复制代码

[ 本帖最后由 pusofalse 于 2008-8-12 11:12 编辑 ]
心绪平和,眼藏静谧。

TOP

还有楼上的代码不成功,只是生成了一个“!n!.reg”

TOP

假如把指定的目录替换成

搜索指定目录下的含有名字“sata”字眼的文件夹

并且把注册表放在C:\reg

TOP

  1. @echo off
  2. for %%a in (c:\windows\*.sys) do (
  3.      set/a n+=1
  4.      call reg export "hklm\system\currentcontrolset\services\%%~na" %%n%%.reg
  5. )
  6. pause
复制代码

[ 本帖最后由 pusofalse 于 2008-8-12 11:02 编辑 ]
心绪平和,眼藏静谧。

TOP

成功,

假如我需要为每一个a都生成一个reg文件,那要怎样做?

假如有两个a,就生成1.reg和2.reg,类推...

就是替换掉appbkup,reg,分别用1.reg,2.reg来表示

至于reg的命名,就用阿拉伯数字传递下去

TOP

for %%a in (c:\windows\*.sys) do reg export "hklm\system\currentcontrolset\services\%%~na" appbkup,reg

如果是别的路径,只需替换()中的c:\windows\
看下这样对否。
心绪平和,眼藏静谧。

TOP

返回列表