中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] [3] »
作者:
标题: [求助]怎样用bat对齐文本? 上一主题 | 下一主题
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 16 楼』:  

求解:
无奈何兄,试过兄的代码,发现显示内容缺少第一行,不知何故?



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-14 02:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 17 楼』:  

我这里没有问题啊,少了哪一行?
有点小问题,空行也会输出,修正一下。



  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

2006-12-14 03:23
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 18 楼』:  

新代码没有问题了!
请问增加if语句是什么意思?



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-14 03:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 19 楼』:  



  Quote:
Originally posted by youxi01 at 2006-12-14 01:18:
因为::在vbs中可以被认识(识别为换行),而rem却不能被vbs认识!

youxi01兄,我真不知有如此用法,但是我是把你的代码保存在BAT文件而非VBS文件中,我也曾试着保存到VBS中,但无法运行。这又是何故?

2006-12-14 03:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 20 楼』:  



  Quote:
Originally posted by youxi01 at 2006-12-13 08:03:
个人认为,纯粹的P很难实现,因为P很难判断变量的字节数,所以要借助于vbs。
[code]
::On Error Resume Next
echo ' > nul &cls & @echo off
echo ' > nul & ...

能否解释下在BAT中编写VBS脚本并运行的机理,一点都看不懂是怎么执行的,谢谢!

2006-12-14 04:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 21 楼』:  



  Quote:
Originally posted by ccwan at 2006-12-14 03:31:
新代码没有问题了!
请问增加if语句是什么意思?

加上这条判断语句后,空行就不会输出了。小问题是空白行(只含有空格的行)还是会输出的,只需将 if(R[i,1] != "") 改为 if(R[i,2] != "") 能解决空白行的问题。



  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

2006-12-14 04:03
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 22 楼』:  

谢谢。
看来有必要学学了。



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-14 04:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 23 楼』:  

zg159兄和无奈何兄的代码精彩, 更通用. 而用文件大小判断字节数是更为省事的方法.

当时分析楼主给的三行代码, 初步得到规律写的代码自然不能计算中文字符的英文字符的字节差别. 也想用文件大小判断, 出于对生成临时文件的敏感, 故只针对1F三行代码做处理.

而除了zh159兄8F用文件大小判断字节数外还有其他方法, 不用生成临时文件. 但效率会很低, 为了扩展思路, 熟悉不同的算法, 大家可以尝试使用下面的算法实现对中文汉字和英文字符的判断.

一、用for列举出要匹配的字符, 一旦匹配成功, num+1。

二、FOR循环执行完毕, 开关如没关闭则判断其为汉字,故num+2。

三、整个嵌套循环执行完毕, 计算num的值进行空格填充。

希望大家能写出更加精彩的代码,用灵活的思路,更先进的算法,弥补P处理脚本功能上的不足,  带动本论坛的发展^_^



业精于勤而荒于嬉,形成于思而毁于随。
2006-12-14 04:41
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复
youxi01
高级用户




积分 846
发帖 247
注册 2006-10-27
来自 湖南==》广东
状态 离线
『第 24 楼』:  



  Quote:
Originally posted by HUNRYBECKY at 2006-12-14 03:43 AM:


youxi01兄,我真不知有如此用法,但是我是把你的代码保存在BAT文件而非VBS文件中,我也曾试着保存到VBS中,但无法运行。这又是何故?

一定要保存为bat文件,因为它是针对P处理的!

2006-12-14 04:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
youxi01
高级用户




积分 846
发帖 247
注册 2006-10-27
来自 湖南==》广东
状态 离线
『第 25 楼』:  



  Quote:
Originally posted by HUNRYBECKY at 2006-12-14 04:03 AM:



能否解释下在BAT中编写VBS脚本并运行的机理,一点都看不懂是怎么执行的,谢谢!

在P处理中,会忽略::打头的行(认为是解释语句),而当它作为vbs运行时,却可以被识别;同时,在vbs中,会认为 ' 后面的内容为注释内容......

参看:http://www.cn-dos.net/forum/view ... E8%B4%A7&page=1

2006-12-14 04:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 26 楼』:  

还是awk的效果好觉得

2006-12-14 05:37
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
cdswf
新手上路





积分 4
发帖 2
注册 2006-10-27
状态 离线
『第 27 楼』:  



  Quote:
Originally posted by youxi01 at 2006-12-13 08:03 AM:
个人认为,纯粹的P很难实现,因为P很难判断变量的字节数,所以要借助于vbs。
[code]
::On Error Resume Next
echo ' > nul &cls & @echo off
echo ' > nul & ...

上面的例子是4列,如果是5列、6列怎样写?
最后怎样输出到文档?
我是菜鸟!谢谢!

2008-5-13 11:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
cdswf
新手上路





积分 4
发帖 2
注册 2006-10-27
状态 离线
『第 28 楼』:  

ding!顶到出答案为止!!

2008-5-21 10:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 29 楼』:  答案:

因论坛处理不了TAB,请运行前将!str!后面的空格改为TAB。
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do (
    for %%a in (%%i) do call set str=!str!        %%a
    echo !str:~1!&set str=
)
pause>nul




批处理之家新域名:www.bathome.net
2008-5-21 10:48
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 30 楼』:  29 楼

zw19750516 兄想简单了。
先测试以下代码
@echo off
echo aaaaaaa        bbbbbbbbb
echo aaaaaaaa        bbbbbbbbb
echo aaaaaaaaaaaaaaaaa        bbbbbbbbb
pause

更何况是中英文混合的。。。。。。。。。。



致精致简!
2008-5-21 11:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: