40

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

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

建议?

4

3 回答 3

49

命令行解释器确实有一个 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

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

于 2012-06-25T15:21:40.713 回答
6

这可能会帮助您找到您要查找的内容... 批处理脚本循环

我的回答如下:

@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

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

于 2016-02-25T21:25:50.027 回答
3

您也可以考虑添加".

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

于 2018-05-06T09:45:03.877 回答