![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-25 23:45 |
共 47,812 主题排行 / 349,910 发帖 / 今日 0 篇 / 48,264 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 将文本文件中的空格替换成|(已经解决) |
| 可打印版本 4,721 / 19 |
| 第1楼 jinrich | 发表于 2006-12-15 14:06 |
| 初级用户 发帖 11 积分 26 | |
|
将文本文件中的空格替换成|(已经解决) 1.txt 里的内容为:
0 测量 1 小时 2006-12-13 00:00 简约 经p处理后生成2.txt 0|测量|1 小时|2006-12-13 00:00|简约 用下面的,问题解决了 @echo off for /f "tokens=1-7" %%a in (d:\1.txt) do echo %%a^|%%b^%%c^ %%d^|%%e^ %%f^|%%g" >>2.txt echo 2.txt done pause >nul 就可以了,不过我的1.txt里字段太多了,有56个,26个字母不够用,你们有什么好的办法 我的解决方法: @echo off echo start to deal with 3.txt echo. echo waiting…… for /f "skip=1 tokens=1-25,*" %%a in (3.txt) do ( echo %%a^|%%b^|%%c^ %%d^|%%e^ %%f^|%%g^|%%h^ %%i^|%%j^|%%k^|%%l^|%%m^|%%n^|%%o^|%%p^|%%q^|%%r^|%%s^|%%t^|%%u^|%%v^|%%w^|%%x^|%%y^|%%z >>2.txt) for /f "tokens=1-25,*" %%a in (2.txt) do ( echo %%a^ %%b^ %%c^|%%d^|%%e^|%%f^|%%g^|%%h^|%%i^|%%j^|%%k^|%%l^|%%m^|%%n^|%%o^|%%p^|%%q^|%%r^|%%s^|%%t^|%%u^|%%v%%w^|%%x%%y^|%%z >>22.txt) for /f "tokens=1-16" %%a in (22.txt) do ( echo %%a^ %%b^ %%c%%d^|%%e%%f^|%%g%%h^|%%i^|%%j^|%%k^|%%l^|%%m^|%%n^|%%o%%p >>222.txt) echo 222.txt done del /q 2.txt 22.txt pause >nul 多谢大家的帮忙~ [ Last edited by namejm on 2006-12-25 at 08:29 AM ] |
|
| 第2楼 jinrich | 发表于 2006-12-15 14:35 |
| 初级用户 发帖 11 积分 26 | |
|
自己做的 ,执行起来不行:
echo start to deal with 3.txt echo. setlocal enabledelayedexpansion for /f "tokens=1-7" %%a in (d:\1.txt) do (set char=| set var=%%a!char!%%b!char!%%c! !%%d!char!%%e!char!%%f!char!%%g echo !var!>>2.txt) echo 2.txt done pause >nul |
|
| 第3楼 youxi01 | 发表于 2006-12-15 21:09 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
|
有两个小的错误:
1、P中的for语句不同于其它语言,for中的do不能另起一行; 应该为:for /f "tokens=1-7" %%a in (d:\1.txt) do ( 你的命令....) 2、set char=|应该改为:set “char=|” 或者使用转义字符:set char=^| |
|
| 第4楼 ccwan | 发表于 2006-12-15 21:14 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
试一下:
|
|
| 第5楼 jinrich | 发表于 2006-12-15 22:23 |
| 初级用户 发帖 11 积分 26 | |
|
谢谢,不过还是不行 ,2.txt 还是空的
|
|
| 第6楼 ccwan | 发表于 2006-12-15 22:33 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
你的1.txt是在D盘吗?
|
|
| 第7楼 jinrich | 发表于 2006-12-15 23:51 |
| 初级用户 发帖 11 积分 26 | |
|
@echo off
for /f "tokens=1-7" %%a in (d:\1.txt) do echo %%a^|%%b^%%c^ %%d^|%%e^ %%f^|%%g" >>2.txt echo 2.txt done pause >nul 就可以了,不过我的1.txt里字段太多了,有56个,26个字母不够用,你们有什么好的办法 |
|
| 第8楼 zh159 | 发表于 2006-12-16 00:41 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
如果按楼主的格式:
0 测量 1 小时 2006-12-13 00:00 简约 |
|
| 第9楼 lxmxn | 发表于 2006-12-16 00:51 |
| 版主 发帖 4,938 积分 11,386 | |
|
试试下面这个: |
|
| 第10楼 zh159 | 发表于 2006-12-16 02:08 |
| 金牌会员 发帖 1,467 积分 3,687 | |
Originally posted by lxmxn at 2006-12-15 11:51: |
|
| 第11楼 youxi01 | 发表于 2006-12-16 02:13 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
|
如果字段过多,就使用shift吧?
测试代码: 测试结果: 1.txt中的东西: 执行之后: |
|
| 第12楼 lxmxn | 发表于 2006-12-16 02:37 |
| 版主 发帖 4,938 积分 11,386 | |
Originally posted by zh159 at 2006-12-16 02:08: 如果要按照楼主的要求来,可能没有好的办法,因为楼主的字段比较多,而且什么时候加|符号没有什么规律可言,汗一个先…… |
|
| 第13楼 jinrich | 发表于 2006-12-16 03:04 |
| 初级用户 发帖 11 积分 26 | |
|
谢谢各位,现在已经好啦
|
|
| 第14楼 ccwan | 发表于 2006-12-16 03:20 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
那请楼主把代码和1.txt内容贴出来,大家一起学习学习。
|
|
| 第15楼 jinrich | 发表于 2006-12-16 03:58 |
| 初级用户 发帖 11 积分 26 | |
|
我用的方法比较麻烦一点,自己想的,中间也吸取了大家的教导才写出来的:
@echo off echo start to deal with 3.txt echo. echo waiting…… for /f "skip=1 tokens=1-25,*" %%a in (3.txt) do ( echo %%a^|%%b^|%%c^ %%d^|%%e^ %%f^|%%g^|%%h^ %%i^|%%j^|%%k^|%%l^|%%m^|%%n^|%%o^|%%p^|%%q^|%%r^|%%s^|%%t^|%%u^|%%v^|%%w^|%%x^|%%y^|%%z >>2.txt) for /f "tokens=1-25,*" %%a in (2.txt) do ( echo %%a^ %%b^ %%c^|%%d^|%%e^|%%f^|%%g^|%%h^|%%i^|%%j^|%%k^|%%l^|%%m^|%%n^|%%o^|%%p^|%%q^|%%r^|%%s^|%%t^|%%u^|%%v%%w^|%%x%%y^|%%z >>22.txt) for /f "tokens=1-16" %%a in (22.txt) do ( echo %%a^ %%b^ %%c%%d^|%%e%%f^|%%g%%h^|%%i^|%%j^|%%k^|%%l^|%%m^|%%n^|%%o%%p >>222.txt) echo 222.txt done del /q 2.txt 22.txt pause >nul 有什么能改进的还请指出来 |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |