![]() |
中国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 |