chcp 65001 @set DestPath=%cd%\AppFile\laser\ @echo off& setlocal EnableDelayedExpansion @set DestFiles=%cd%\SetupScripts\app.nsh @set DestFiles2=%cd%\SetupScripts\app-1.nsh del ".\SetupScripts\app.nsh" del ".\SetupScripts\app-1.nsh" @set total=1 @echo off @rem 统计文件总数 for /f "tokens=*" %%a in ('dir /s/b/a-d %DestPath%') do ( @set /a total+=1 ) @set curr=0 @set tmpValue=1 @rem 做首级目录处理 for /f "delims=*" %%d in ('dir /a-d/b %DestPath%') do ( set /a curr+=1 @echo Push ${APP_FILE_COUNT} >> %DestFiles% @echo Push !curr! >> %DestFiles% @echo Call ExtractCallback >> %DestFiles% @echo File "%DestPath%%%d" >> %DestFiles% @rem @echo "%%d" ) @rem 循环遍历各个子目录,进行处理,生成NSIS指令 @set dstString= for /f "delims=*" %%a in ('dir /s/ad/b %DestPath%') do ( @set foldername=%%a @set "foldername=!foldername:%DestPath%=%dstString%!" @rem @echo !foldername! @rem 截取出来相关的目录 设置OutputPath @echo SetOutPath "$INSTDIR\!foldername!" >> %DestFiles% @rem 循环其下的文件 for /f "delims=*" %%c in ('dir /a-d/b %%a') do ( @set /a curr+=1 @echo Push ${APP_FILE_COUNT} >> %DestFiles% @echo Push !curr! >> %DestFiles% @echo Call ExtractCallback >> %DestFiles% @echo SetOverwrite ifnewer >> %DestFiles% @echo File "%%a\%%c" >> %DestFiles% @rem @echo "%%c" ) ) @echo Push ${APP_FILE_COUNT} >> %DestFiles% @echo Push ${APP_FILE_COUNT} >> %DestFiles% @echo Call ExtractCallback >> %DestFiles% set /a i=0 for /f "delims=" %%i in ('findstr /n .* %DestFiles%' ) do ( set "a=%%i" set "a=!a:*:=!" set "b=!a:%DestPath%=${APP_FILE_DIR}\!" echo.!b!>> %DestFiles2% ) del %DestFiles% ren %DestFiles2% app.nsh echo %DestFiles% xcopy %DestFiles% I:\prox\laser_pc\AppCode\laser\ /y @echo "总计:%total%" chcp 65001 %total%