【问题标题】: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

【问题讨论】:

    标签: batch-file for-loop cmd


    【解决方案1】:

    您不需要两个不同的for 循环(一个用于文件夹,另一个用于文件)。 for /R 可以递归处理文件:

    for /R "%folderScan%" %%f in (*.png *.jpg *.gif) do ( 
      "%~dp0\myconverter.exe" "%%~ff" -o "%%~dpnf.newextension"
    )
    

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多