批处理脚本 - 将Dir文件列表转换为变量,然后使用exe为每个文件运行循环

时间:2015-01-26 18:32:11

标签: list variables batch-file

我无法解决这个问题,但这是整个场景:

我有一堆FLV文件,其中包含元信息。我有一个小程序(flvmeta.exe),它从命令行工作,将元数据转换为文本,我可以将该数据导出到文本文件。

我需要弄清楚如何实现这一点: 用户将输入目录的路径,批处理文件应该CD进入该目录。

set /p PATH= Enter Path:
CD /D %PATH%

然后我需要一种方法来列出没有标题信息的文件名,例如:

dir /b /a-d

然后我需要将dir命令中的所有列表项分成单独的变量这是我遇到问题的部分。 (可能有更好的方法,例如从一个文件到下一个文件的循环)

...然后我需要在每个文件上执行此命令:

flvmeta.exe filename.flv >filename.txt

所以,就像我说的那样,循环可能更适合这样的事情,而不是在dir命令之后尝试从文件创建变量名。我在命令行或者批处理脚本方面不是很熟练,所以如果我错过了一个简单的解决方案,请原谅我。

我有数百个这样的文件要经过,它们位于不同的目录中。这就是为什么我希望用批处理文件使其自动化。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

set /p "mypath=Enter Path: "
for %%i in ("%mypath%\*.flv") do flvmeta.exe "%%i" >"%%~dpni.txt"

表达式%%~dpni请参阅for /?

答案 1 :(得分:0)

@echo off
set /p "_PATH= Enter Path:"
set flvmeta=c:\flvmeta.exe

pushd %_PATH%

for "tokens=* delims=" %%a in ('dir /b /a-d *.flv') do (
   %flvmeta% "%%~fa" > "%%~na.txt"
)

如果您希望可以将/s添加到dir命令以进行递归搜索。