如何将目录下的所有文件作为参数传递给exe?

时间:2013-10-22 00:47:33

标签: windows-scripting

我想运行这样的命令: foo.exe file1.c file 2.c file3.c ...等等,直到我列出当前目录下的所有文件

如何在脚本中执行此操作?

编辑:下面的答案不起作用,它与文件名中的空格有关。以下是dir / b / a-d给我的信息:

c:\Users\morpheus\temp>dir /b /a-d
ceiling GRF Model 24x36.pdf
conference room 02.pdf
conference room 03.pdf
conference room.pdf
conference room01.pdf
CONFERENCE TABLE  detail.pdf
CONFERENCE TABLE.pdf
door detail.pdf
door.pdf
ELEVATION GF24X36.pdf
flooring GRF Model 24x36.pdf
junction detail 01.pdf
junction detail.pdf
MODULAR GRF Model 24x36.pdf
RECEPTION PART PLAN GF.pdf
reception table edited.pdf
reception table.pdf

@cookiebutter,我的解决方案是:

foo.exe  "ceiling"  "conference"  "conference"
 "conference"  "conference"  "CONFERENCE"  "CONFERENCE"  "door"  "door.pdf"  "EL
EVATION"  "flooring"  "junction"  "junction"  "MODULAR"  "RECEPTION"  "reception
"  "reception"

能够处理文件名中空格的解决方案如下:

echo off
setlocal ENABLEDELAYEDEXPANSION
set params=
for %%i in ('dir *.* /b') do (
if exist %%i set params=!params! "%%i"
)
echo on
foo.exe %params%

我会接受cookiebutter的回答,因为它让我朝着正确的方向前进。

2 个答案:

答案 0 :(得分:1)

这应该这样做。

我不记得它是什么,但是你可以在一行中包含的字符数有限制,所以如果你想要包含数百个文件,这可能不适合你。 / p>

但如果你没有太多,这将有效。

echo off
setlocal ENABLEDELAYEDEXPANSION
set params=
for /f %%i in ('dir /b /a-d') do (
    set params=!params! "%%i"
)
echo on
foo.exe %params%

答案 1 :(得分:1)

1)如果你想分别对每个文件执行foo.exe,你可以使用

for /F "delims=" %%i in ('dir /b /a-d') do (foo.exe "%%i" )

2)如果您希望foo.exe将所有可以使用的文件作为输入参数

@set str4=

for /F "delims=" %%i in ('dir /b /a-d') DO call :append %%i
@echo %str4%
foo.exe %str4%

:append
@set str4=%str4% %1

如果有效,请告诉我。