![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-09 17:41 |
共 47,811 主题排行 / 349,896 发帖 / 今日 1 篇 / 48,254 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已解决一半]数据换列? |
| 可打印版本 938 / 12 |
| 第1楼 oicq63236 | 发表于 2008-09-02 16:36 |
| 初级用户 发帖 20 积分 54 | |
|
[已解决一半]数据换列? 1|aaaa|bbbb|cccc|sddsd|
2|aaa|cccccccc|ddddd|3dfdsf|fdsfsdfsd| ..... 每行的列数不固定,现想把后两列调换位置,即 1|aaaa|bbbb|sddsd|cccc| 2|aaa|cccccccc|ddddd|fdsfsdfsd|3dfdsf| [ Last edited by oicq63236 on 2008-9-9 at 10:38 PM ] |
|
| 第2楼 huahua0919 | 发表于 2008-09-02 20:34 |
| 银牌会员 发帖 780 积分 1,608 | |
| 第3楼 HAT | 发表于 2008-09-02 21:53 |
| 版主 发帖 5,017 积分 9,023 | |
|
Re 2楼 如果两个|之间的字符存在.,会出问题吧。
|
|
| 第4楼 oicq63236 | 发表于 2008-09-02 22:27 |
| 初级用户 发帖 20 积分 54 | |
|
实际情况是,那些字符串中会有金额出现,例如3000.53,再怎么修改一下呢?
|
|
| 第5楼 HAT | 发表于 2008-09-02 23:05 |
| 版主 发帖 5,017 积分 9,023 | |
|
如果按照2楼的思路,可以把|替换成一个你的文件中不会出现的字符。
但我觉得这样做始终存在风险。 |
|
| 第6楼 lxmxn | 发表于 2008-09-02 23:31 |
| 版主 发帖 4,938 积分 11,386 | |
|
这样的问题还是用 awk 比较好点
|
|
| 第7楼 huahua0919 | 发表于 2008-09-02 23:41 |
| 银牌会员 发帖 780 积分 1,608 | |
|
斑竹的第三方工具用的熟练.重新写了个,基本能实现上面的要求
|
|
| 第8楼 HAT | 发表于 2008-09-03 00:15 |
| 版主 发帖 5,017 积分 9,023 | |
|
学习斑竹的思路
|
|
| 第9楼 oicq63236 | 发表于 2008-09-04 09:27 |
| 初级用户 发帖 20 积分 54 | |
|
谢谢大家了!
|
|
| 第10楼 oicq63236 | 发表于 2008-09-09 22:05 |
| 初级用户 发帖 20 积分 54 | |
|
huahua0919
兄,你的代码不错,可惜有些地方领会不了,还请赐教! @echo off&setlocal enabledelayedexpansion for /f "delims=" %%i in (e.txt) do ( <--将E.TXT中的一行字串赋于%%i set m= set n= set l= set a=%%i set a=!a:^|= ! <-将%%i中的|线替换为空格 for %%a in (!a!) do ( <-将%%i分解为各个字串 set /a n+=1 <-记录每个字串的位置 set _!n!=%%a ??????(_!n!是什么意思) ) set /a m=n-1 <-定义倒数第二个字串位置 set /a l=m-1 <-定义不需转换的最后一个字串位置 for /l %%t in (1 1 !l!) do (set /p=!_%%t!^|<nul) ?????? call set dim=%%_!n!%% %%_!m!%% <-交换最后两例位置,为什么必须得call呢,直接set却不行? set dim=!dim: =^|! <-将空格换回|线 echo !dim!^| 这里不是只输出!dim!吗? 难道是接着上边set /p=..这儿继续输 出? ) 本人愚钝,请赐教,谢谢!(以上有注释的地方正确吗) pause [ Last edited by oicq63236 on 2008-9-9 at 10:37 PM ] |
|
| 第11楼 HAT | 发表于 2008-09-09 22:30 |
| 版主 发帖 5,017 积分 9,023 | |
|
代码保存为test.bat
双击运行看看结果 |
|
| 第12楼 oicq63236 | 发表于 2008-09-09 22:38 |
| 初级用户 发帖 20 积分 54 | |
|
代码已运行过了,很好使,只是不懂意思,想弄明白!
|
|
| 第13楼 HAT | 发表于 2008-09-09 22:42 |
| 版主 发帖 5,017 积分 9,023 | |
|
这样会不会清楚些?
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |