1

現在のディレクトリ内のすべての .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

ここで何が欠けていますか?

4

2 に答える 2

2

forスイッチを使用した再帰ループが必要だと思います/R

for /R "%folder%" %%i in (*.reg) do (regedit /s "%%i")
于 2012-06-08T18:37:04.133 に答える
0

あなたは実際にあなたの問題が何であるかを言わなかったので、スクリプトを修正する代わりに、私がしたことは次のとおりです。

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

また、/sregedit のスクリプトはサイレント モード用です。ダイアログボックスでユーザーに確認を求めないようにregeditに指示します。forループは、バッチ ファイルがすべてのサブディレクトリをループする原因であり、regedit のスイッチではありません/s

Microsoft のナレッジ ベースから:

[/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.
于 2012-06-08T18:37:47.710 に答える