调用文件夹中的所有批处理文件

最后发布: 2014-05-28 21:52:39


问题

我正在尝试创建一个批处理文件,该文件将执行位于文件夹中的所有批处理文件。 因此,我有一个包含6个(将增加)批处理文件的文件夹,并且我想使用for循环遍历列表。 这样更容易理解:

for batchFile in folder:
  CALL batchFile
  cd Desktop

每个批处理文件应在其他完成后开始。 同样,批处理文件将是文件夹中唯一的文件类型,因此不必进行任何分隔。 听起来可能很奇怪,但是调用和目录更改都必须在循环内(由于每个批处理文件中的目录更改)。 这是我找到的最接近的东西:

 for /r %%i in "DIR" do CALL

其中“ DIR”是文件夹目录。 但是,它1)不起作用,2)仅可以进行CALL,而不能进行目录更改。 有谁知道如何做到这一点?

另外,我正在使用Windows 7。

谢谢。

延期:

在bat文件中执行此操作将起作用:

CALL "WelcomeScreenLists.bat"
cd directory
CALL "WelcomeScreenLinks.bat"
cd directory
CALL "RightClick.bat"
cd directory
CALL "RibbonButtons.bat"
cd directory
pause

“目录”是包含bat文件的文件夹的完整路径。 我想将其转换为循环遍历文件夹中所有文件的for循环。

batch-file for-loop cmd
回答

我认为您想要这样的东西:

  for /f "delims=" %%i in ('dir /b ".\*.bat"') do (
    CALL %%i
  )

从当前目录工作。 您可以通过替换第一个“”来对目录进行硬编码。 在带有完整目录名称的dir语句中,如下所示:

  for /f "delims=" %%i in ('dir /b "c:\folder\subfolder\*.bat"') do (
    CALL %%i
  )

“ for / f”语法将遍历文件名,“ dir”命令是任何有效的dir命令...例如,您可以使用任何选项来控制排序顺序。