我需要使用名为process.bat
的蝙蝠来处理某些子目录中的所有jpg文件。
dir
|---subdir1
| |-----a.jpg
| |-----b.jpg
|
|---subdir2
|-----c.jpg
|-----d.jpg
process.bat dir/subdir1/a.jpg dir/subdir1/b.jpg
process.bat dir/subdir2/c.jpg dir/subdir2/d.jpg
在Linux中,我可以创建这样一个脚本:
find $1 -type d | while read dir; do
files=("$dir"/*.jpg)
if [ ${#files[@]} -gt 0 ]; then
if ! [[ $files =~ \* ]]; then
process.bat "${files[@]}"
fi
fi
done
但我不知道如何在Windows中做同样的事情
我已经知道如何在Windows bat中循环文件:for /r %%i in (*) do echo %%i
答案 0 :(得分:0)
dir
应该是绝对的道路:
> tree . /F
C:\TEST\DIR
├───subdir1
│ a.jpg
│ b.jpg
│
├───subdir2
│ c.jpg
│ d.jpg
│
└───subdir3
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
For /d %%A in (C:\Test\dir\*) Do (
Set "Files="
For %%B in ("%%~fA\*.jpg") Do Set Files=!Files! "%%~fB"
If defined Files echo process.bat !Files!
)
带echo的示例输出:
process.bat "C:\Test\dir\subdir1\a.jpg" "C:\Test\dir\subdir1\b.jpg"
process.bat "C:\Test\dir\subdir2\c.jpg" "C:\Test\dir\subdir2\d.jpg"