如何在文件夹和子文件夹中执行批处理文件执行脚本?
Posted
技术标签:
【中文标题】如何在文件夹和子文件夹中执行批处理文件执行脚本?【英文标题】:how to do batch file execute script in folders and subfolders? 【发布时间】:2019-06-04 08:28:59 【问题描述】:我正在创建一个批处理文件,用于转换文件(jpg、png、gif)并在我找到它的某个文件夹中输出新文件。我问用户文件的路径,所以脚本需要扫描目录和子目录并执行脚本,但是当脚本进入其他文件夹时,脚本停止工作......
这是我的批处理文件:
set /p folderScan=Enter folder path:
cd %folderScan%
call :searchInFolder
goto :eof
:searchInFolder
for %%f in (*.png *.jpg *.gif) do (
"%~dp0\myconverter.exe" "%CD%\%%f" -o "%CD%\%%~nf.newextension"
)
for /D %folderScan% in (*) do (
cd %%d
:searchInFolder
)
pause
当脚本进入for /D...并找到一个文件夹并访问它时,该文件夹内的文件不会被脚本处理...
我需要扫描所有文件夹和子文件夹,当我处理完一个文件夹内的文件后,我需要移动到下一个文件夹,如果该文件夹内有文件夹,则该文件夹已被访问,脚本需要访问也到它并处理文件,如下所示:
|D:\Desktop\Images
|_Car
|__Red
|__Blue
|___Dark Blue
|_Bike
|_Animals
|__Dog
|__Cat
|_Games
|__Race
|___Bike
|___Cars
【问题讨论】:
【参考方案1】:您不需要两个不同的for
循环(一个用于文件夹,另一个用于文件)。 for /R
可以递归处理文件:
for /R "%folderScan%" %%f in (*.png *.jpg *.gif) do (
"%~dp0\myconverter.exe" "%%~ff" -o "%%~dpnf.newextension"
)
【讨论】:
以上是关于如何在文件夹和子文件夹中执行批处理文件执行脚本?的主要内容,如果未能解决你的问题,请参考以下文章