Windows bat:目录

时间:2017-06-07 03:24:56

标签: windows batch-file for-loop

我正在使用Windows。我在目录的子目录中有许多jpg个文件。我不确切知道目录的体系结构,这意味着我不知道子目录有多少级别。我需要做的是根据路径处理jpg个文件。这是一个例子:

dir
 |---sub dir1
 |      |-----sub dir11
 |               |-----a.jpg
 |               |-----b.jpg
 |---sub dir2
        |-----c.jpg
        |-----d.jpg

所以我需要执行如下命令:

process.bat C:\dir\sub dir1\sub dir11\a.jpg C:\dir\sub dir1\sub dir11\b.jpg
process.bat C:\dir\sub dir2\c.jpg C:\dir\sub dir2\d.jpg

我不知道如何编写这样的bat文件,特别是bat处理路径包含空格。我不知道空格是否会造成麻烦。

我尝试过如下但不起作用:

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion

For /d %%A in (C:\dir\*) Do (
    Set "Files="
    For /f %%B in ("%%~fA\*.jpg") Do Set Files=!Files! "%%~fB"
    If defined Files echo process.bat %%~fA\*.jpg
)

pause

当我执行脚本时,我得到如下结果:

process.bat C:\dir\sub dir1\*.jpg
process.bat C:\dir\sub dir2\*.jpg

似乎*被视为正常角色。

2 个答案:

答案 0 :(得分:1)

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion

For /d %%A in (C:\dir\*) Do (
    Set "Files="
    For /F "delims=" %%B in ('dir /S /B "%%~fA\*.jpg"') Do Set Files=!Files! "%%~fB"
    If defined Files echo process.bat !Files!
)

pause

答案 1 :(得分:0)

If defined Files echo process.bat !files!

应该解决问题 - 但是process.bat合作是否尚未确定。如果需要,您需要列出process.bat