我需要使用名为here.bat
的蝙蝠来处理相同目录中的文件。这是一个例子:
mydir
|----mybat.bat
|----here.bat
|----subdir
|-----subdir2
|-----subdir3
|-----subdir31
| |-----a.jpg
|
|-----subdir32
|-----b.jpg
我需要使用here.bat
来处理a.jpg
和b.jpg
。所以我写了一个名为mybat.bat
的bat文件,如下所示:
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
For /d %%A in (.\subdir\*) Do (
Set "Files="
For /F "delims=" %%B in ('dir /S /B "%%~fA\*.jpg"') Do Set Files=!Files! "%%~fB"
If defined Files echo call here.bat !Files!
)
pause
当我执行mybat.bat
时,我得到如下结果:
call here.bat "C:\Users\me\mydir\subdir\subdir2\subdir3\subdire31\a.jpg" "C:\Users\me\mydir\subdir\subdir2\subdir3\sudbir32\b.jpg"
但这不是我需要的。我需要处理与jpg
位于同一目录中的here.bat
个文件,如果它们不在同一个目录中,则应单独处理它们。这意味着我需要如下结果:
call here.bat "C:\Users\me\mydir\subdir\subdir2\subdir3\subdire31\a.jpg"
call here.bat "C:\Users\me\mydir\subdir\subdir2\subdir3\sudbir32\b.jpg"
答案 0 :(得分:0)
您不断变化的要求使得在第一次运行中难以提供解决方案。这个版本应该:
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
for /R ".\subdir" %%A in (.) do (
Set "Files="
If Exist "%%~fA\*.jpg" For /F "delims=" %%B in (
'dir /B "%%~fA\*.jpg"') Do Set Files=!Files! "%%~fB"
If defined Files echo call here.bat !Files!
)
pause