0

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

我怎样才能在脚本中做到这一点?

编辑:下面的答案不起作用,它与文件名中的空格有关。这是 dir /b /ad 给我的:

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 的回答,因为它让我朝着正确的方向前进。

4

2 回答 2

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%
于 2013-10-22T11:58:41.277 回答
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

请让我知道它是否有效。

于 2013-10-22T12:32:00.523 回答