标题: [文件操作] [已解决]求助,批处理命令for嵌套中变量的截取 [打印本页]
作者: kingshui 时间: 2013-4-18 16:22 标题: [已解决]求助,批处理命令for嵌套中变量的截取
- 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如果不在里面的话会方便些,但是想学习一下变量延迟之类的使用。
谢谢。
代码有冗余,为了调试加的
作者: BAT-VBS 时间: 2013-4-18 16:34
- @echo off
- setlocal enabledelayedexpansion
- for %%a in (b a t) do (
- set f=%%a
- for /f %%b in ("bathome") do (
- set s=%%b
- call set s=%%s:!f!=%%
- echo !s!
- )
- )
- pause
复制代码
作者: kingshui 时间: 2013-4-18 16:48
BAT-VBS 发表于 2013-4-18 16:34
感谢,我没想过call可以这样用。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |