标题: [注册表类] 批处理如何根据文件名导出注册表项? [打印本页]
作者: 282842712474 时间: 2008-8-12 09:04 标题: 批处理如何根据文件名导出注册表项?
搜索当前指定目录的.sys文件,并依次赋予变量a
然后运行
REG EXPORT "HKLM\SYSTEM\CurrentControlSet\Services\“a”" AppBkUp.reg
Services\后面部分就是a变量。
a可能有多个,因此REG EXPORT "HKLM\SYSTEM\CurrentControlSet\Services\“a”" AppBkUp.reg
会运行多次。
请问这个bat该怎样写?
作者: pusofalse 时间: 2008-8-12 09:12
for %%a in (*.sys) do reg export "hklm\system\currentcontrolset\services\%%a" appbkup,reg
看下是不是这个意思。另外请修改标题,不要用这种“万能”类的。
作者: 282842712474 时间: 2008-8-12 09:22
有两个问题:
1.我需要指定目录,比如C:\windows
2.忘记了说,a为当前的sys,但是要去掉后缀,即有22.sys,就是a=22
作者: pusofalse 时间: 2008-8-12 09:41
for %%a in (c:\windows\*.sys) do reg export "hklm\system\currentcontrolset\services\%%~na" appbkup,reg
如果是别的路径,只需替换()中的c:\windows\
看下这样对否。
作者: 282842712474 时间: 2008-8-12 10:19
成功,
假如我需要为每一个a都生成一个reg文件,那要怎样做?
假如有两个a,就生成1.reg和2.reg,类推...
就是替换掉appbkup,reg,分别用1.reg,2.reg来表示
至于reg的命名,就用阿拉伯数字传递下去
作者: pusofalse 时间: 2008-8-12 10:22
- @echo off
- for %%a in (c:\windows\*.sys) do (
- set/a n+=1
- call reg export "hklm\system\currentcontrolset\services\%%~na" %%n%%.reg
- )
- pause
复制代码
[ 本帖最后由 pusofalse 于 2008-8-12 11:02 编辑 ]
作者: 282842712474 时间: 2008-8-12 10:53
假如把指定的目录替换成
搜索指定目录下的含有名字“sata”字眼的文件夹
并且把注册表放在C:\reg
作者: 282842712474 时间: 2008-8-12 10:56
还有楼上的代码不成功,只是生成了一个“!n!.reg”
作者: pusofalse 时间: 2008-8-12 10:58
- @echo off
- if not exist c:\reg md c:\reg
- for /f "delims=" %%a in ('dir/b/s/ad *sata*') 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\
复制代码
[ 本帖最后由 pusofalse 于 2008-8-12 11:12 编辑 ]
作者: pusofalse 时间: 2008-8-12 11:01
原帖由 282842712474 于 2008-8-12 10:56 发表
还有楼上的代码不成功,只是生成了一个“!n!.reg”
oh....sorry 太粗心了。已经修改。
作者: 282842712474 时间: 2008-8-12 11:09
测试环境,当前目录下有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\
提示:找不到文件
作者: pusofalse 时间: 2008-8-12 11:11
忘记加""了 再试下。。
...
for %%a in ("%folderpath%\*.sys") do (
... ..
其他不变
作者: 282842712474 时间: 2008-8-12 11:23
信息
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
请按任意键继续. . .
作者: pusofalse 时间: 2008-8-12 11:26
我觉得没有出错啊。。。
路径是其中包含ata字串的。
而且运行时,这不是没有出错信息吗。
作者: 282842712474 时间: 2008-8-12 13:39
但是最后你没有生成注册表
作者: batman 时间: 2008-8-12 13:51
请楼主引以注意了:
通观了楼主与pusofalse版主的对话贴,本人不得不指出导致问题迟迟得不到有效解决
的根本问题在于,楼主没有一次性把你要解决的问题和达到的目的描述清楚,而是一直在左
改右改,这样叫别人怎么帮助你?在论坛发贴求助的那么多,要是每个人都如同你一样,大
家不知道要白白浪费多少时间和精力,所以请楼主在以后发贴求助时注意这一点了。
作者: 282842712474 时间: 2008-8-12 15:27
我只是想渐进解决而已
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |