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

[文本处理] [分享]超过52列文本提取

前言:群内很多人都需要文本分列,发到论坛更有助于其他坛友来处理一些简单的文本,代码简单如果有助于学习请点赞,无用留个代码垃圾
注:不可超过set设定最大数值不可用于特殊字符处理特殊字符
  1. @echo off&setlocal enabledelayedexpansion
  2. set a=值或for内引用
  3. rem:循环次数
  4. for /l %%n in (1,1,4196)do (
  5. rem:分隔符不受引号影响比for无参数分裂更有优势
  6. for /f "tokens=1,* delims=;" %%i in ("!a!")do (
  7.   rem:设置循环变量
  8.   set "a=%%j"
  9.   rem:最终值
  10.   echo,%%i
  11. )
  12. )
  13. pause
复制代码
1

评分人数

这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

  1. @echo off
  2. for /f "delims=" %%a in (a.txt) do (
  3. call :loop "%%a"
  4. )
  5. pause
  6. :loop
  7. for /f "tokens=1* delims=\;-[])( " %%i in ("%~1") do (
  8. if not "%%j"=="" (
  9. call :loop "%%j"
  10. ) else (
  11. echo;%%i
  12. )
  13. )
  14. goto :eof
复制代码
请问下,楼主为什么指定4196,有特别含义吗,如果已经满足条件了还是会一直循环4196次?

TOP

人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

本帖最后由 /zhqsystem/zhq 于 2017-2-27 20:16 编辑

回复 2# taofan712
set受字符数限制8192,8192/2=4096,最大支持列为4096,没有别的含义,
执行是执行了剩余的所有for,但是由于变量被替换了空值,导致for为空无意义被自动过滤,可以序列for可以加入一个判断循环变量存在执行后边的,
if defined a for /f....
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

http://bbs.bathome.net/thread-5548-1-1.html#pid35781
能否讲解一下跟这个代码相比有什么优势和劣势?

TOP

回复 5# GNU
和这个比没有优势,只是少占用了SET序列化和死循环,%%n的值属于固定值而且是固定列,xls数据需要替换分割符"TABTAB=tab tab"两次才能对其进行实际的简单操作,醉了没做过练习题,看来是发重了
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

返回列表