【问题标题】:Batch file to execute all files in a folder批处理文件执行文件夹中的所有文件
【发布时间】:2012-02-12 16:47:09
【问题描述】:

我需要一个批处理文件来启动给定文件夹中的所有文件(在本例中为 c:\macros\day)。

我尝试了以下方法,但似乎没有任何作用。

for /f %i in ('C:\macros\Day /b') DO command %i

【问题讨论】:

    标签: batch-file dos


    【解决方案1】:

    这适用于我的命令行:

    for /F "usebackq" %%i in (`dir /b C:\macros\Day\`) DO %%i
    

    就像这样:

    for %%i in (C:\macros\Day\*) do %%i
    

    【讨论】:

    • 不应该是for /F "usebackq" %i in...吗?
    【解决方案2】:

    您使用了错误的for 变体。简单地做(双关语)for %%i in (c:\macros\Day\*) do %%i

    编辑: 如果您需要对所有文件运行command:for %%i in (c:\macros\Day\*) do command %%i

    【讨论】:

    • 感谢您的回复。然而,这给了我:\macros\Day*) 在这个时候是出乎意料的。
    • 应该是,for %i in (c:\macros\Day\*) do COMMAND %i(需要指定对%i进行操作的命令)
    • 如果从批处理文件运行,您需要将 %whatever 替换为 %%whatever(因此 %i 变为 %%i 等等)。你用单个 % 给出了你的例子,所以我也做了..
    • @RenéNyffenegger 是的,你是对的,我会更新答案(阅读问题,我的印象是 OP 想要触发直接可执行的东西)
    【解决方案3】:

    你应该使用dir /b列出所有文件,所以它变成了

    for /f %i in ('dir /b c:\macros\Day') do command %i
    

    【讨论】:

    • 如果你把它放在批处理文件中,则带有双 %
    【解决方案4】:

    此外,请确保在批处理文件中创建变量 %%i 而不是 %i,否则您会收到“我此时意外”形式的错误。

    【讨论】:

      【解决方案5】:

      Running all files in directory via batch file with appended text on each line

      上面发布了另一种选择 - 如果您愿意,可以省略尾随的“/Z /U”。

      【讨论】:

        【解决方案6】:

        这就是我可以在与批处理文件相同的目录中运行所有 powershell 文件的方式

        @ECHO OFF
        
        SET PowerShellExe=%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\powershell.exe
        
        for %%i in (*.ps1) do (
        
        %PowerShellExe% -NoProfile -ExecutionPolicy Bypass -Command %cd%\%%i    
        
        )
        

        【讨论】:

          猜你喜欢
          • 2014-11-26
          • 1970-01-01
          • 1970-01-01
          • 2013-12-20
          • 1970-01-01
          • 2018-10-06
          • 1970-01-01
          • 1970-01-01
          • 2019-06-04
          相关资源
          最近更新 更多