中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-11 13:04
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]高手新手都进来看看,高难度的for筛选
可打印版本  750 / 6
第1楼 terrytong 发表于 2008-09-27 11:18
中级用户 发帖 115 积分 240
[求助]高手新手都进来看看,高难度的for筛选
我有个test.txt,里面内容:
1 010283 --- 0.627 2.271 0.016 === 0.6217 1.75% 工程师 历史表现
2 009730 中国 0.8954 2.1154 0.0202 2.31% 0.8885 1.52% 采购员 历史表现 论
3 008655 --- 2.287 2.407 --- 2.28% 2.2754 1.76% 工程师 历史表现
9 014743 === 0.627 2.271 0.016 --- 0.6217 1.75% 采购员 历史表现
10 010282 烟酒经销商 0.8954 --- --- --- 0.8885 1.52% 采购员 历史表现
14 008652 奥大利亚 0.88 2.05 === 2.21% 0.8754 1.67% 工程师 历史表现
15 14600 英格闫 --- 2.271 0.016 2.62% --- 1.75% 工程师 历史表现
16 111100 服务员 0.8954 2.1154 0.0202 2.31% 0.8885 1.52% 工程师 历史表现
99 010288 面包店老板 2.287 2.407 0.051 === 2.2754 1.76% --- 采购员 历史表现
100 161604 上网 0.88 2.05 0.019 2.21% 0.8754 1.67% 采购员 ---
101 583622 女友001 0.627 2.271 0.016 2.62% 0.6217 1.75% --- 历史表现
102 142520 部分 0.8954 2.1154 0.0202 2.31% 0.8885 1.52% 采购员 历史表现
103 159901 谢谢 2.287 2.407 0.051 2.28% 2.2754 1.76% 采购员 历史表现

现在想把他重新排版:
1 010283 --- 0.627 2.271 0.016 === 0.6217 1.75% 工程师 历史表现
2 009730 中国 0.8954 2.1154 0.0202 2.31% 0.8885 1.52% 采购员 历史表现
3 008655 --- 2.287 2.407 --- 2.28% 2.2754 1.76% 工程师 历史表现
9 014743 === 0.627 2.271 0.016 --- 0.6217 1.75% 采购员 历史表现
10 010282 烟酒经销商 0.8954 --- --- --- 0.8885 1.52% 采购员 历史表现
14 008652 奥大利亚 0.88 2.05 === 2.21% 0.8754 1.67% 工程师 历史表现
15 14600 英格闫 --- 2.271 0.016 2.62% --- 1.75% 工程师 历史表现
16 111100 服务员 0.8954 2.1154 0.0202 2.31% 0.8885 1.52% 工程师 历史表现
99 010288 面包店老板 2.287 2.407 0.051 === 2.2754 1.76% --- 历史表现
100 161604 上网 0.88 2.05 0.019 2.21% 0.8754 1.67% 采购员 ---
101 583622 女友001 0.627 2.271 0.016 2.62% 0.6217 1.75% --- 历史表现
102 142520 部分 0.8954 2.1154 0.0202 2.31% 0.8885 1.52% 采购员 历史表现
103 159901 谢谢 2.287 2.407 0.051 2.28% 2.2754 1.76% 采购员 历史表现

由于这里面还有特殊字符要注意啊。

[ Last edited by terrytong on 2008-9-27 at 12:03 ]

附件
test.txt (981 bytes)
第2楼 pusofalse 发表于 2008-09-27 11:39
银牌会员 发帖 646 积分 1,604
有什么不一样吗?或者把空格换成跳格?最好上传附件,格式不会丢弃。
另、对for已经入门的,如此不会是高难度。

[ Last edited by pusofalse on 2008-9-27 at 11:44 ]
第3楼 terrytong 发表于 2008-09-27 11:58
中级用户 发帖 115 积分 240
结果像这个符件。

附件
restult.txt (1.11 KiB)
第4楼 pusofalse 发表于 2008-09-27 12:29
银牌会员 发帖 646 积分 1,604
这题好麻烦,全角+半角混合~OMG 快成体力活了~
第5楼 pusofalse 发表于 2008-09-27 13:09
银牌会员 发帖 646 积分 1,604
果真成了体力活。我的这种方法不兼容等号=,所以用了wfr.exe把里面的=全部先替换为#,最后再改回来。

保存结果为a.txt
wfr.exe 下载:http://www.vkill.net/tools/wfr_2.3.1.120.rar

[ Last edited by pusofalse on 2008-9-27 at 13:20 ]
第6楼 terrytong 发表于 2008-09-27 13:31
中级用户 发帖 115 积分 240
5楼的工具很好用,谢谢。
如果能不借用工具就更好了。我还没有想出好办法。^-^
第7楼 netbenton 发表于 2009-03-01 08:54
银牌会员 发帖 752 积分 1,916 来自 广西
@echo off&setlocal enabledelayedexpansion
::文本排版程序,根据字段长度来定宽度,而不是简单的用[TAB]
::难点在于取字段长度和特殊符号“=”号的处理上

set "sour=test.txt"& rem 源文件名
set "dest=restult.txt"&rem 处理结果存放文件名
cd.>!dest!
set/a #n=0&set/p= Waiting.<nul
for /f "tokens=1-11" %%a in (!sour!) do (
set/a #n+=1
set /p=.<nul
set #m=0&set nn=0
for /f "skip=1 delims=:" %%m in ('^(echo."%%a"^&echo."%%b"^&echo."%%c"^&echo."%%d"^&echo."%%e"^&echo."%%f"^&echo."%%g"^&echo."%%h"^&echo."%%i"^&echo."%%j"^&echo."%%k"^&echo.^)^|findstr /o ".*"') do (
set/a #m+=1&set/a _!#n!_!#m!=%%m-!nn!-5&set nn=%%m
call :sebig _!#n!_!#m! _nm!#m!
)
)

set/a #n=0
set/p=.<nul
set "space= "
for /f "tokens=1-11" %%a in (!sour!) do (
set/a #n+=1&set #m=0
set /p=.<nul
set _str=
for %%m in ("%%a","%%b","%%c","%%d","%%e","%%f","%%g","%%h","%%i","%%j","%%k") do (
set "_mm=%%~m"&set/a #m+=1&set /p "= !_mm!"<nul>>!dest!
call :gecho %%_!#n!_!#m!%% %%_nm!#m!%%
)
echo.>>!dest!
)

echo ok..&pause
goto :eof

:sebig
if !%1! geq !%2! (set %2=!%1!)
goto :eof

:gecho
set /p=!space:~-%2,-%1!<nul>>!dest!
goto :eof
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023