[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理 字符 分割求问.

如下,字符串.2~5,7,9,12,15~23,24,27,30
用, FOR %%i IN (2~5,7,9,12,15~23,24,27,30) DO
分解成2~5 7 9 12 15~23 24 27 30
我想进一步把2~5,15~23分解成FOR %%i IN (2,1,5) FOR %%i IN (15,1,23) 循环,有什么方法把~去掉取到2,5呢.
或有没有基它更简单的方法把上面串一个一个,2,3,4,5,7,9,12,15,16,17,18,19,20,21,22,23,24,27,20这样循环出来呢,谢谢!

  1. @echo off
  2. for %%a in (2~5,7,9,12,15~23,24,27,30) do (
  3.   for /f "tokens=1,2 delims=~" %%b in ("%%a") do (
  4.     if "%%c"=="" (echo %%b
  5.     ) else for /l %%d in (%%b 1 %%c) do echo %%d
  6.   )
  7. )
  8. pause
复制代码

TOP

非常感谢,另外我想利用循环值进行一些处理,因此把它付给另外的变量,代码如下,全问输出为30,也就是文字列的最后。不知道怎么回事。
@echo off
SET ARCHIVERDATE=2~5,7,9,12,15~23,24,27,30
SET XX=0
for %%a in (%ARCHIVERDATE%) do (
  for /f "tokens=1,2 delims=~" %%b in ("%%a") do (
    if "%%c"=="" (
        REM echo %%b
        SET dd=%%b
        ECHO %dd%
    ) else for /l %%d in (%%b 1 %%c) do (
        REM echo %%d
        SET dd=%%d
        ECHO %dd%
    )
  )
)
pause

TOP

回复 3# maomaoguai


    启用变量延迟扩展

TOP

返回列表