|
wydos
中级用户
积分 304
发帖 117
注册 2006-4-4
状态 离线
|
『楼 主』:
每两行合并成一行
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (%*) do (
set /a n+=1
set !n!line=%%i
if !n! equ 2 (
echo !1line! !2line!>>result.txt
set /a n=0
)
)
endlocal
可以依次类推把每n行合并成一行。
[ Last edited by wydos on 2006-12-11 at 01:58 AM ]
|
|
2006-12-10 23:24 |
|
|
lotus516
高级用户
论坛上抢劫的
积分 551
发帖 246
注册 2006-9-21
状态 离线
|
|
2006-12-11 00:11 |
|
|
wydos
中级用户
积分 304
发帖 117
注册 2006-4-4
状态 离线
|
|
2006-12-11 00:58 |
|
|
namejm
荣誉版主
batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第
4 楼』:
其实没必要删除主题,把 [原创] 字样取消,然后再把代码的功能增强一点(如何增强请自己想,我还没想到该如何增强^_^),这样就不会和以前的内容重复了。
|
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。 |
|
2006-12-11 01:02 |
|
|
ccwan
金牌会员
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
5 楼』:
不必删掉,代码又没有指定版权,难道写出来绝对不能与别人相似吗?
只要是自己努力学习的结果,何必在乎这些呢?
|
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2006-12-11 01:03 |
|
|
wydos
中级用户
积分 304
发帖 117
注册 2006-4-4
状态 离线
|
『第
6 楼』:
谢谢 5 楼的鼓励!
关于代码的功能增强,感觉没有思路
|
|
2006-12-11 02:11 |
|
|
wydos
中级用户
积分 304
发帖 117
注册 2006-4-4
状态 离线
|
『第
7 楼』:
改了一下:
把两行合并和n行合并统一
@echo off
setlocal enabledelayedexpansion
echo 请问你要每几行合并成一行,请输入数字,回车确定!
@set /p m=
for /f "tokens=*" %%i in (%*) do (
set /a n+=1
set line=!line!%%i
if !n! equ !m! (
echo !line!>>result.txt
set line=
set /a n=0
)
)
endlocal
|
|
2006-12-11 02:34 |
|
|
ccwan
金牌会员
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
8 楼』:
我试了一下,好像最后不足几行时不能合并甚至不显示。
例如每两行合并,若为奇数,最后一行result.txt中没有,
即:每n行合并,若总行数不是n的整数倍数,则余下的行里的内容不被合并显示。
不知是否只有我的机子这样。
|
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2006-12-11 02:58 |
|
|
wydos
中级用户
积分 304
发帖 117
注册 2006-4-4
状态 离线
|
『第
9 楼』:
情况确实如ccwan所说的。
应该在代码中加个求余的判断
改了一下:
@echo off
setlocal enabledelayedexpansion
echo 请问你要每几行合并成一行,请输入数字,回车确定!
@set /p m=
for /f "tokens=*" %%i in (%*) do (
set /a hangn+=1
set /a n+=1
set line=!line!%%i
if !n! equ !m! (
echo !line!>>result.txt
set line=
set /a n=0
)
)
rem 以下代码用于处理剩下的行
set /a t=!hangn!%%!m!
if !t! equ 0 goto end
echo !line!>>result.txt
:end
endlocal 不知大家有没有更好的代码
[ Last edited by wydos on 2006-12-11 at 04:56 AM ]
|
|
2006-12-11 04:37 |
|
|
ccwan
金牌会员
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
10 楼』:
试过了,成功。
|
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2006-12-11 06:34 |
|
|
3742668
荣誉版主
积分 2013
发帖 718
注册 2006-2-18
状态 离线
|
『第
11 楼』:
@echo off
setlocal enabledelayedexpansion
rem 下面的文件名若包含空格注意加引号
set file=a.txt
for /f "delims=: tokens=1*" %%i in ('findstr /n .* %file%') do set num=%%i && set "%%i=%%j"
echo 显示全部:
for /l %%i in (1,1,%num%) do echo,!%%i!
pause
echo 显示单数行:
for /l %%i in (1,2,%num%) do echo,!%%i!
pause
echo 显示双数行:
set "num_ex="
set /a num_ex=%num% + 1
for /l %%i in (2,2,%num_ex%) do echo,!%%i!
pause
echo 每两行合并:
set str=
for /l %%i in (1,1,%num%) do (
if defined str (echo,!str!!%%i!&&set "str="
) else (
set "str=!%%i!"
)
)
echo,!str! && set "str="
pause
echo 显示前10行:
for /l %%i in (1,1,10) do if defined %%i echo,!%%i!
pause
exit /b 0 因为处理字符的工作都是用vbs来完成,所以上面的代码未测试,只为提供思路。
|
|
2006-12-11 07:05 |
|
|
yardian
中级用户
积分 305
发帖 85
注册 2005-5-23
状态 离线
|
『第
12 楼』:
我感觉这句话有问题,只要不是抄袭别人的,自己做出来的,都是应该是原创吧?好像原创并没规定不可以相同吧?
纯属灌水,老兄别在意啊!!!!
|
|
2006-12-12 02:06 |
|