请查看以下情形,其中文件夹A
具有许多名称不同的子文件夹。这些子文件夹有n
个文件,.jpg
个,我正在尝试缩放和裁剪。
Folder A\
SubFolder 01\*.jpg
SubFolder 02\*.jpg
.
.
.
SubFolder xx\*.jpg
这些子文件夹具有不同的名称,并且在名称上没有趋势。
我创建了一个可缩放和裁剪图像的批处理文件。这很正常。我需要在每个SubFolder xx中运行以下命令(文件名:ScaleCrop.bat):
for %%I in (.) do set CurrDirName=%%~nxI
for %%a in ("*.JPG") do ffmpeg -i "%%a" -vf ^"scale=-1:260, crop=250:250^" "..\ScaledImages\%CurrDirName%\%%a.JPG"
for %%a in ("*.JPG") do ffmpeg -i "%%a" -vf ^"scale=260:-1, crop=250:250^" "..\ScaledImages\%CurrDirName%\%%a.JPG"
pause
该命令缩放并裁剪文件夹中的图像,并将这些文件保存到名为SacledImages
的文件夹中,该文件夹也具有相同名称的子文件夹(SubFolder 01
,SubFolder 02
,… ,SubFolderxx
。
我还创建了另一个.bat
文件,用于将ScaleCrop.bat
复制到每个子文件夹。
for /d %%a in ("C:\Users\Name\Desktop\Folder A\*") do copy " C:\Users\Name\Desktop\Folder A\ScaleCrop.bat" "%%a"
如何编写批处理文件,并从每个子文件夹运行ScaleCrop.bat
?
我尝试使用以下代码,但这仅在每个子文件夹中调用.bat file
,但未执行:
for /f %%f in ('dir /ad /b') do start %%f\ScaleCrop.bat
我也尝试了以下方法,可以解决问题,但是由于缩放后的图像保存到/SacledImages
文件夹而不是ScaledImages/SubFolderxx
内,所有图像都被覆盖了:
for /r "C:\ Users\Name\Desktop\Folder A " %%a in (.) do (
pushd %%a
for %%I in (.) do set CurrDirName=%%~nxI
for %%a in ("*.JPG") do ffmpeg -i "%%a" -vf ^"scale=-1:260, crop=250:250^" "..\ScaledImages\%CurrDirName%\%%a.JPG"
for %%a in ("*.JPG") do ffmpeg -i "%%a" -vf ^"scale=260:-1, crop=250:250^" "..\ScaledImages\%CurrDirName%\%%a.JPG"
pause
popd
)