从批处理文件中执行所有.reg文件

时间:2012-06-08 16:31:32

标签: batch-file batch-processing

我有以下脚本执行当前目录中的所有.reg文件。问题是我在该文件夹中也有子目录,我也想执行这些reg文件。我不确定我应该使用什么开关。我尝试使用/s返回驱动器的所有.reg文件。

这是我的批处理文件的样子:

rem @echo off
cls
SET folder=%~dp0
for %%i in ("%folder%*.reg") do (regedit /s "%%i")
echo done
pause
EXIT

这就是文件/目录结构的样子:

Folder1
   batchfile.bat -> user double clicks or executes from command prompt
   1.reg
   2.reg
   3.reg
   Folder2
      4.reg
      5.reg

我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

我认为您需要使用for开关进行递归/R循环:

for /R "%folder%" %%i in (*.reg) do (regedit /s "%%i")

答案 1 :(得分:0)

你实际上并没有说出你的问题是什么,所以不用修复你的脚本就是我要做的事情:

@echo off
set folder=%~dp0
for /f "usebackq" %%i in (`dir /s /b *.reg`) do (
        regedit /s "%%i"
)

regedit上的/s脚本用于静默模式。它告诉regedit不要通过对话框询问用户确认。 for循环是导致批处理文件遍历所有子目录的原因,而不是{restit上的/s开关。

来自Microsoft's Knowledge Base

[/s|-s]
When a filename is specified on the command line, this switch is used to 
suppress any informational dialog boxes that would normally be displayed.
This is useful when the Setup program for an application wants to execute
REGEDIT.EXE with a .REG file, but does not want the user to be confused by
any dialog boxes that are displayed.