【问题标题】:How to do a for loop in windows command line?如何在 Windows 命令行中执行 for 循环?
【发布时间】:2012-06-26 20:50:07
【问题描述】:

我想知道这是否可能?我不熟悉使用 windows 命令行,但我必须将它用于我正在处理的项目。我有许多文件,我需要为每个文件执行一个功能。我习惯于使用 python,但显然这有点不同,所以我希望能得到一些帮助。

基本上,我需要 for 循环遍历文件夹中的 17 个文件,对每个文件执行一个函数(使用我在此处为项目提供的特定软件),然后输出一个具有唯一名称的文件(函数通常需要我说明输出文件名)我会吸收它并为17个中的每一个手动完成,但基本上它是创建一个文件的数据库,然后将它与17个中的每一个进行比较。它需要虽然要迭代数百次。使用 for 循环可以节省我几天的工作时间。

建议?

【问题讨论】:

    标签: windows loops for-loop


    【解决方案1】:

    命令行解释器确实有一个 FOR 构造,您可以从命令提示符或批处理文件中使用它。

    出于您的目的,您可能需要以下内容:

    FOR %i IN (*.ext) DO my-function %i
    

    这将导致当前目录中每个扩展名为 *.ext 的文件的名称被传递给 my-function(例如,可以是另一个 .bat 文件)。

    (*.ext) 部分是“文件规范”,在您指定文件集的方式方面非常灵活。例如,您可以这样做:

    FOR %i IN (C:\Some\Other\Dir\*.ext) DO my-function %i
    

    在不同的目录中执行操作。

    一般来说,filespec 和 FOR 有很多选项。见

    HELP FOR
    

    从命令提示符获取更多信息。

    【讨论】:

    • 谢谢,这很有帮助。 %i 是做什么的?实际上,为了使用该功能,我需要将命令行设置为当前目录,并且其中的文件不是我需要执行该功能的文件。它们在另一个目录中。有没有办法说明在哪个目录上执行 for 循环?
    • %i 只是一个保存匹配文件名的变量。您可以使用不同的修饰符以不同的格式获取它。我更新了答案以描述 filespec 可以包含不同的目录,因此您可以指定一个特定的目录来执行循环。该文档还解释了 /R 选项,如果需要,它将遍历目录。
    • 在批处理文件中使用 %%: FOR %%i IN (*.ext) DO my-function %%i
    【解决方案2】:

    这可能会帮助您找到您正在寻找的东西... Batch script loop

    我的回答如下:

    @echo off
    :start
    set /a var+=1
    if %var% EQU 100 goto end
    :: Code you want to run goes here
    goto start
    
    :end
    echo var has reached %var%.
    pause
    exit
    

    开始标签下的第一组命令循环直到变量 %var% 达到 100。一旦发生这种情况,它将通知您并允许您退出。通过将 100 更改为 17 并放置您的代码或使用调用命令后跟批处理文件的路径(Shift+右键单击文件并选择“复制为路径”),此代码可以适应您的需要。

    【讨论】:

      【解决方案3】:

      您也可以考虑添加"

      例如for %i in (*.wav) do opusenc "%~ni.wav" "%~ni.opus" 是个好主意。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-20
        • 1970-01-01
        • 2014-06-06
        • 2017-05-11
        • 1970-01-01
        • 2018-05-11
        • 2013-09-13
        • 2021-09-15
        相关资源
        最近更新 更多