![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-23 15:27 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,273 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]bat能够处理换行符吗 |
| 可打印版本 3,072 / 8 |
| 第1楼 0401 | 发表于 2006-02-25 15:32 |
| 中级用户 发帖 88 积分 435 | |
|
[已结]bat能够处理换行符吗 当我处理一个文件时,我想把多行合并为一行。
#type 1.txt 1 2 3 我希望在处理完文件1.txt后变成如下: #type 2.txt 123 这个文件中只有字母及数字,没其他特殊字符。 请大家给我提供个思路,谢谢。 [ Last edited by 0401 on 2006-2-26 at 11:15 ] |
|
| 第2楼 3742668 | 发表于 2006-02-25 18:31 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
@echo off
if exist 123.txt echo y | del 123.txt set /a num = 1 :newfile echo %num% >>123.txt set /a num = %num% + 1 if %num% == 4 goto next goto newfile :next setlocal enabledelayedexpansion for /f %%i in (123.txt) do set str=!str!%%i echo %str% > 2.txt endlocal type 2.txt pause>nul 试试吧,在XP专业版下测试通过。。 |
|
| 第3楼 无奈何 | 发表于 2006-02-25 20:38 |
| 荣誉版主 发帖 356 积分 1,338 | |
|
我也来一个,此命令可删除所有换行符,要求CMD下。
[ Last edited by 无奈何 on 2006-2-25 at 20:41 ] |
|
| 第4楼 dosz | 发表于 2006-02-25 23:59 |
| 中级用户 发帖 188 积分 396 来自 上海 | |
|
2楼老兄:
你的答案好象有些偏提.(只是做了个空架子,并没有把多行合并为一行。) =======1.txt 内容========= 1, A1 2, B2 3, C3 =======2.txt 内容应该是这样的========= 1, A1B2C3 |
|
| 第5楼 3742668 | 发表于 2006-02-26 01:06 |
| 荣誉版主 发帖 718 积分 2,013 | |
Originally posted by dosz at 2006-2-25 23:59: 呵呵,牛角尖。。。 别人说了是给个思路,至于自己用可以for /?去修改。 |
|
| 第6楼 0401 | 发表于 2006-02-26 11:15 |
| 中级用户 发帖 88 积分 435 | |
|
to 3742668:
原来set还有这么个用法啊,以前因为理解不来就给跳过了,还有延迟环境变量扩充的问题。 这段我给记下了,回去好好研究。thx to 无奈何: 呵呵,简洁有力。以前我就有研究过你的签名了。thx 谢谢大家。 |
|
| 第7楼 dosz | 发表于 2006-02-26 22:49 |
| 中级用户 发帖 188 积分 396 来自 上海 | |
|
to 3742668:
我5楼说的欠妥的地方请兄长多包含。 烦劳你能否编释一个同时用于多个文件的批处理。 比如说: ==1a.txt 内容=== 执行后为 ===1b.txt 内容=== 1 123 2 3 ==2a.txt 内容=== 执行后为 ===2b.txt 内容=== A ABC B C |
|
| 第8楼 3742668 | 发表于 2006-02-27 09:01 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
to 楼上
只要把里面具体的文件名改成%1就可以了,还是给个片段给你: @echo off if not exist "%1" echo 请检查参数是否正确 && goto :eof setlocal enabledelayedexpansion :read for /f %%i in (%1) do set str=!str!%%i echo %str% set str= if exist "%2" shift && goto read endlocal 支持多个参数。 |
|
| 第9楼 willsort | 发表于 2006-03-02 15:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re 3742668:
使用环境变量合并文本行存在一个隐忧,即当文本内容大于系统的环境空间时,将出现文本溢出。在我的测试中(CMD·WinXP),单个变量长度达到8189时溢出,而生成的 _varlen.txt 大小为 16382,由此猜测当前延迟变量替换的环境空间上限可能是16K(16384),剩余的字节可能是变量名、等于号、变量结束标记等。而且上面代码中的 for /f 没有使用 "delims=" 也会因此忽略空格后的文本。 所以目前来看,还是 无奈何 兄的命令行更为有效些。 [ Last edited by willsort on 2006-3-2 at 16:11 ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |