- SETLOCAL ENABLEDELAYEDEXPANSION
- echo %~1 >path
- if "%~2" NEQ "" echo %~2 >>path
- if "%~3" NEQ "" echo %~3 >>path
- if "%~4" NEQ "" echo %~4 >>path
- if "%~5" NEQ "" echo %~5 >>path
- if "%~6" NEQ "" echo %~6 >>path
- if "%~7" NEQ "" echo %~7 >>path
- if "%~8" NEQ "" echo %~8 >>path
- if "%~9" NEQ "" echo %~9 >>path
- set dirpath=%~dp1
- set cmdstr=MAKECAB /v3 /D CompressionType=LZX /D CompressionMemory=21 /D MaxDiskSize=CDROM /D Cabinet=On /D Compress=On /D FolderSizeThreshold=5000000 /D DiskDirectoryTemplate="%dirpath%." /D CabinetNameTemplate="Por54_Profiles.CAB"
- if exist cabstr del cabstr >nul
- :cab_start
- for /f "delims=" %%i in (path) do (
- set fullname=%%i
- set f=%%i
- set "fullname=!fullname:~0,-1!"
- if exist "!fullname!\" (
- for /f "delims=" %%a in ('dir "!fullname!" /s /b /a-d') do (
- set s=%%a
- set s=!s:%f%=!
- echo "%%a" "!s!">>cabstr
- pause
- )
- )
- set "fullname=!fullname:%fullname%\=!"
- echo "%%i" "!fullname!">>cabstr
- )
-
- %cmdstr% /F cabstr
- del /f/q cabstr SETUP.INF SETUP.RPT >nul
- ENDLOCAL
- exit
复制代码 红色部分(代码里不能加红。。。)目的:
set s=!s:%f%=!
将S变量里与F变量相同的部份删除掉。
当然,第二个for如果不在里面的话会方便些,但是想学习一下变量延迟之类的使用。
谢谢。
代码有冗余,为了调试加的 |