2013-10-22 60 views
0

我想运行这样的命令: foo.exe file1.c file 2.c file3.c ...依此类推,直到我有当前目录下的列出的所有文件如何将目录下的所有文件作为参数传递给exe?

我怎么能做到这一点的脚本?

编辑:下面的答案不工作,它与文件名中的空格有关。以下是DIR/B /广告是给我:

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的答案,因为它会让我走向正确的方向。

+1

使用一种命令语言,其通配符扩展与POSIX shell命令语言的实现(例如,Cygwin,MingW,Unxutils下的Bash) – Kaz

回答

1

这应该这样做。

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

但是,如果你没有太多,这将工作。

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

对不起,它不起作用。我不知道这是否与文件名中可能有空格有关。 – morpheus

+0

试用围绕文件名的引号。 'set params =!params! “%% i”' –

1

1)如果你想在foo.exe的与每个文件执行seperately可以使用

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 

请让我知道它是否有效。

+0

抱歉,它不起作用。 – morpheus

+0

你面临什么问题? – kunal

+0

这个问题类似于我面对@ cookiebutter的解决方案。我认为文件名之间的空格会导致问题。 – morpheus

相关问题