.bat循环遍历目录,将文件名作为参数传递给可执行文件

时间:2015-10-08 05:06:59

标签: batch-file

我正在运行的可执行文件只需要一个文件名作为参数

@echo off
FOR  %%i IN (C:\Files\*.*) DO (
echo %%~nxi
start "mass extract.." "C:\Files\extractor.exe" %%~nxi
)

尽管只返回文件名本身,但它没有正确地将它作为参数传递给我的exe,我缺少什么?

2 个答案:

答案 0 :(得分:1)

而不是

start "mass extract.." "C:\Files\extractor.exe" %%~nxi

start "mass extract.." "C:\Files\extractor.exe" %%i

这将传递完整的文件路径。

我还可以建议在引号中添加路径吗?如果您的位置有任何空格,则上述操作无法正常工作。

FOR  %%i IN ("C:\Files\*.*")

答案 1 :(得分:1)

您必须将工作目录发送到提取器或每个文件的完整路径。

3种方式:

方法#1

使用cd或pushd

cd /d "C:\Files"
FOR %%i IN (*.*) DO (
echo %%~nxi
start "mass extract.." "C:\Files\extractor.exe" %%~nxi
)

方法#2

使用%%i发送每个文件的完整路径(请参阅call /?for /?

FOR %%i IN (C:\Files\*.*) DO (
echo "%%~i"
start "mass extract.." "C:\Files\extractor.exe" "%%~i"
)

方法#3

在启动工作目录时指定。

FOR  %%i IN (C:\Files\*.*) DO (
echo %%~nxi
start "mass extract.." /D "C:\Files" "C:\Files\extractor.exe" %%~nxi
)