标题: [文本处理] 批处理如何修改全角为半角? [打印本页]
作者: youxi01 时间: 2007-11-9 20:12 标题: 批处理如何修改全角为半角?
如题:批处理如何修改全角为半角?
现需要把 ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890
改成ABCDEFGHIJKLMNOP1RSTUVWXYZ1234567890
批处理如何实现?
作者: 随风 时间: 2007-11-9 20:36
::- @echo off
- set var=ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890
-
- setlocal enabledelayedexpansion
- set str=ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890
- set num=ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890
- for /l %%a in (0 1 35) do (
- call set ma=%%str:~%%a,1%%
- call set na=%%num:~%%a,1%%
- call set var=%%var:!ma!=!na!%%
- )
- echo !var!
- pause
复制代码
作者: youxi01 时间: 2007-11-9 20:56
通过纯批处理 如何 识别 全角 符号?
作者: somebody 时间: 2007-11-9 21:36
为何不将 setlocal enabledelayedexpansion 放到最前,那样就可以直接用 !!
youxi01 只是举个例子列出一些出来,实际上他是要任意全角改为半角..
普通人这种方法其实是实例化了..............youxi01 要的是通用的那种...
to youxi01:
上次你判断是否大于Z来判断是汉字还是英文时,其实就是通过比较ASCII来判断的..只是Z的ASCII是90,那样不太准确
全角字符的ASCII 大于128或者小于0,或许你可以找出ASCII为0和ASCII 为128的字符,然后进行判断............复制代码
b
[ 本帖最后由 somebody 于 2007-11-9 21:38 编辑 ]
作者: youxi01 时间: 2007-11-9 22:03
你不是把 批处理 当成了vbs吧?
还ascii码?或许批处理真有这样的事情?
作者: somebody 时间: 2007-11-9 23:10
那你拿字符跟字母Z比较,你说比较的是什么???
比较的不是字符的ASCII码你说是什么!!!!!!!!!!!!!!!!
还说。。。
http://bbs.bathome.net/viewthread.php?tid=2
if !var_! gtr Z (set /a len+=2) else set /a len+=1
作者: 随风 时间: 2007-11-9 23:39
我的也不是实例化
你set var=abc0935也可以的。
只是只能对a-z和0-9进行判断. 否则我干吗多设一个变量
setlocal enabledelayedexpansion 放到最前 是什么意识? 有什么区别吗?
[ 本帖最后由 随风 于 2007-11-9 23:41 编辑 ]
作者: somebody 时间: 2007-11-10 02:10
”setlocal enabledelayedexpansion 放到最前 是什么意识? 有什么区别吗?“
哦,是哦,看错了, 不过看着你用call又用setlocal enabledelayedexpansion ....
作者: 随风 时间: 2007-11-10 04:07
呵呵,习惯了,一有变量嵌套就call
[ 本帖最后由 随风 于 2007-11-10 16:18 编辑 ]
作者: youxi01 时间: 2007-11-10 07:28
呵呵,说两个问题:
1、别那么激动,大家只是来讨论、解决问题的....
2、批处理直接拿字符来比较,未必就是象vbs那样,通过ascii码来比较大小..其实,它们比较大小的机理根本不一样,
举例说明:
A的ascii码为:65,a的为97,论ascii码,A小于a
但是,在批处理中,A却是大于a的?!
作者: pZjVa0 时间: 2013-7-26 12:13
本帖最后由 pZjVa0 于 2013-7-26 12:54 编辑
谢谢楼主分享。 11# pZjVa0
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |