在父目录的 100 多个子文件夹中运行批处理文件

在父目录的 100 多个子文件夹中运行批处理文件

我必须说明的是,我花了 3 天时间编写脚本和批处理。我很难理解许多函数及其变化。

下面的批处理脚本应该允许我导出.shp来自 AutoCAD Map 3D 的文件并创建输入每个单独的文件夹中包含.dwg在 AutoCAD 中处理的文件。然后 Shapefile 被移动到重命名的文件夹中。我的脚本仅在所有 dwg 文件都位于一个文件夹中时才有效,其中。蝙蝠.scr文件位于。

简而言之,我想创建一个脚本,查找目录 * 中的所有子文件夹D:\AutoRunLisp_setup\运行*并出口所有.shp里面的文件输入文件夹。

for %%f in (D:\AutoRunLisp_setup\Run\*.dwg) do ("C:\Program Files\Autodesk\AutoCAD 2023\acad.exe" %%f /b D:\AutoRunLisp_setup\Run\mapexport.scr
mkdir "D:\AutoRunLisp_setup\Run\input"
rename "D:\AutoRunLisp_setup\Run\input" "%%~nf_input"
move "D:\AutoRunLisp_setup\Run\cz_proiectata*.*" "D:\AutoRunLisp_setup\Run\%%~nf_input"
move "D:\AutoRunLisp_setup\Run\aerian*.*" "D:\AutoRunLisp_setup\Run\%%~nf_input"
move "D:\AutoRunLisp_setup\Run\subteran*.*" "D:\AutoRunLisp_setup\Run\%%~nf_input"
move "D:\AutoRunLisp_setup\Run\ax_drum*.*" "D:\AutoRunLisp_setup\Run\%%~nf_input"
move "D:\AutoRunLisp_setup\Run\cabinete*.*" "D:\AutoRunLisp_setup\Run\%%~nf_input"
move "D:\AutoRunLisp_setup\Run\cam_proiectate*.*" "D:\AutoRunLisp_setup\Run\%%~nf_input"
move "D:\AutoRunLisp_setup\Run\stalpi_proiectati*.*" "D:\AutoRunLisp_setup\Run\%%~nf_input"
move "D:\AutoRunLisp_setup\Run\stalpi_existenti*.*" "D:\AutoRunLisp_setup\Run\%%~nf_input"
timeout 5 >nul
)
del D:\AutoRunLisp_setup\Run\*bak

我还想知道以下版本的脚本有什么区别:

for %%f in (D:\AutoRunLisp_setup\Run\*.dwg)

for %%f in (*.dwg)

for %%f in (*.*)

并请推荐在 Stack Exchange 中找到的其他类似示例。

请原谅我的英语不好。

谢谢,

答案1

@echo off

setlocal enabledelayedexpansion && cd /d "D:\"

set "_run_acad=start "" /wait "C:\Program Files\Autodesk\AutoCAD 2023\acad.exe""
set "_string_name=cz_proiectata,aerian,subteran,ax_drum,cabinete,cam_proiectate,stalpi_proiectati,stalpi_existenti"

for /r /d %%# in (.)do for %%i in ("%%~f#\*.dwg")do cd /d "%%~dpi" && (
    2>nul md .\"%%~ni_input" & %_run_acad% "%%~fi" /b .\mapexport.scr
    for %%G in (%_string_name%) do move .\"%%~G*.*" .\"%%~ni_input" )

del /q .\"*.bak" & endlocal

这是包含以下子文件夹的建议D:\

没有文件夹树的示例能够建议在精确位置包含子文件夹的内容,因此这是针对整个驱动器的建议。

尝试编辑您的问题并添加一条指向应到达您的实质性内容的路径,这样就可以尽快及时添加编辑。


下面是一个仅回应操作/命令的建议版本,您可以先尝试运行它并检查它在哪里遇到以及命令可能在哪里出错:

D:\>Run_Echo.bat >"%temp%\Out_log.txt" & "%temp%\Out_log.txt"


@echo off

setlocal enabledelayedexpansion && cd /d "D:\"

set "_run_acad=start "" /wait "C:\Program Files\Autodesk\AutoCAD 2023\acad.exe""
set "_string_name=cz_proiectata,aerian,subteran,ax_drum,cabinete,cam_proiectate,stalpi_proiectati,stalpi_existenti"

for /r /d %%# in (.)do for %%i in ("%%~f#\*.dwg")do cd /d "%%~dpi" && (
    2>nul echo\md .\"%%~ni_input" & echo\%_run_acad% "%%~fi" /b .\mapexport.scr
    for %%G in (%_string_name%) do echo\move .\"%%~G*.*" .\"%%~ni_input" )

echo\ del /q .\"*.bak" & endlocal

请参阅链接的解释内容

参见链接解释内容:
我还想知道以下版本的脚本有什么区别:

相关内容