我正在运行的可执行文件只需要一个文件名作为参数
@echo off
FOR %%i IN (C:\Files\*.*) DO (
echo %%~nxi
start "mass extract.." "C:\Files\extractor.exe" %%~nxi
)
尽管只返回文件名本身,但它没有正确地将它作为参数传递给我的exe,我缺少什么?
答案 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
)