中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-11 06:16
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 如何将多行数据变成一行?
可打印版本  1,141 / 7
第1楼 shelby 发表于 2009-01-22 14:30
新手上路 发帖 3 积分 3
如何将多行数据变成一行?
数据如下:

DESCRIPTION SUM(ENTRY021)
-------------------- -------------
东莞东 73700
广州 225071
广州东 122342
深圳 105813
深圳西 40930

已选择5行。

希望得出如下的结果:
东莞东73700,广州东225071,深圳105813,深圳西40930。
第2楼 lihan584 发表于 2009-01-22 15:46
新手上路 发帖 10 积分 11
::ywj.txt是原文件,bcwj.txt是将要保存的文件
@echo off
FOR /F "tokens=1,2 delims= " %%a in (ywj.txt) do set /p jg=%%a%%b,<nul>>bcwj.txt
pause
第3楼 shelby 发表于 2009-01-22 16:45
新手上路 发帖 3 积分 3
非常感谢!我知道前2行可以通过 skip=3 来去掉。但是还有点小问题就是最后一行的数据(已选择5行。)如何去掉?
第4楼 yishanju 发表于 2009-01-22 17:46
银牌会员 发帖 1,357 积分 1,488
用type xxx.txt |findstr /rc:"[0-9]*" 过滤一次
第5楼 tireless 发表于 2009-01-22 17:57
银牌会员 发帖 1,122 积分 2,025
第6楼 shelby 发表于 2009-01-22 18:09
新手上路 发帖 3 积分 3
楼上的强!do里面的命令好多看不懂,能够解释一下?呵呵。。另外,这些都是在循环里面控制输出的,能否将结果放在一个变量中,然后在循环外引用?
第7楼 tireless 发表于 2009-01-22 18:55
银牌会员 发帖 1,122 积分 2,025
Re 6楼
set /a n+=1 变量 n 的数值加 1
set /a 1/(5-n) 为了判断行数。当除数为零时导致出错,然后就会执行 || 后的命令。 (参考: CMD/DOS下符号的作用参考)
2>nul “标准错误输出”输出到空设备 (参考: 重定向中的秘密)
set /p =%%a%%b,<nul>>a_new.txt 以空设备作为输入源,代替了从键盘输入,从而语句结束。因为没有输入回车符,所以不会换行。

------------------

将结果放到变量中:


[ Last edited by tireless on 2009-1-22 at 19:43 ]
第8楼 netbenton 发表于 2009-01-23 00:24
银牌会员 发帖 752 积分 1,916 来自 广西
在2楼上增强就可以了
@echo off
FOR /F "tokens=1,2 delims= " %%a in (ywj.txt) do if "%%a"=="已选择5行。" exit&set /p jg=%%a%%b,<nul>>bcwj.txt
pause
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023