标题: [文本处理] [分享]超过52列文本提取 [打印本页]
作者: /zhqsystem/zhq 时间: 2016-10-13 21:15 标题: [分享]超过52列文本提取
前言:群内很多人都需要文本分列,发到论坛更有助于其他坛友来处理一些简单的文本,代码简单如果有助于学习请点赞,无用留个代码垃圾
注:不可超过set设定最大数值不可用于特殊字符处理特殊字符
- @echo off&setlocal enabledelayedexpansion
- set a=值或for内引用
- rem:循环次数
- for /l %%n in (1,1,4196)do (
- rem:分隔符不受引号影响比for无参数分裂更有优势
- for /f "tokens=1,* delims=;" %%i in ("!a!")do (
- rem:设置循环变量
- set "a=%%j"
- rem:最终值
- echo,%%i
- )
- )
- pause
复制代码
作者: taofan712 时间: 2017-2-27 17:35
- @echo off
- for /f "delims=" %%a in (a.txt) do (
- call :loop "%%a"
- )
- pause
-
- :loop
- for /f "tokens=1* delims=\;-[])( " %%i in ("%~1") do (
- if not "%%j"=="" (
- call :loop "%%j"
- ) else (
- echo;%%i
- )
- )
- goto :eof
复制代码
请问下,楼主为什么指定4196,有特别含义吗,如果已经满足条件了还是会一直循环4196次?
作者: 回家路上 时间: 2017-2-27 18:02
所以,差不多吧
http://www.bathome.net/thread-5548-1-2.html
作者: /zhqsystem/zhq 时间: 2017-2-27 20:05
本帖最后由 /zhqsystem/zhq 于 2017-2-27 20:16 编辑
回复 2# taofan712
set受字符数限制8192,8192/2=4096,最大支持列为4096,没有别的含义,
执行是执行了剩余的所有for,但是由于变量被替换了空值,导致for为空无意义被自动过滤,可以序列for可以加入一个判断循环变量存在执行后边的,
if defined a for /f....
作者: GNU 时间: 2017-2-28 09:23
http://bbs.bathome.net/thread-5548-1-1.html#pid35781
能否讲解一下跟这个代码相比有什么优势和劣势?
作者: /zhqsystem/zhq 时间: 2017-2-28 21:53
回复 5# GNU
和这个比没有优势,只是少占用了SET序列化和死循环,%%n的值属于固定值而且是固定列,xls数据需要替换分割符"TABTAB=tab tab"两次才能对其进行实际的简单操作,醉了没做过练习题,看来是发重了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |