[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理大小写字母转换

本帖最后由 pcl_test 于 2015-10-17 10:15 编辑

请将文件直接拖放至此批处理上自动执行转换,输出文件名为文本名_转换大(小)写.后缀名
注:特殊符号没有测试谨慎使用
  1. @echo off&color 0e
  2. setlocal enabledelayedexpansion
  3. set "letter_lss=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
  4. set "n_lss=0"
  5. set "n=0"
  6. for /f "delims=" %%i in ('type "%1"') do (
  7. set "str=%%i"
  8. for %%j in (%letter_lss%) do (
  9.   set "str=!str:%%j=%%j!"
  10.   set/a "n_lss+=1"
  11.   if !n_lss! equ 26 (
  12.    if !n! lss 1 (
  13.     echo,首次进入清理同名数据重建_转换大写
  14.     echo,!str!>%~n1_转换大写%~x1
  15.     set/a n+=1
  16.    ) else if !n! geq 1 (
  17.     set/a n+=1
  18.     echo,第 !n! 次执行导出操作
  19.     echo=!str!>>%~n1_转换大写%~x1
  20.    )
  21.    set "n_lss=0"
  22.   )
  23. )
  24. )
  25. set "letter_gtr=a b c d e f g h i j k l m n o p q r s t u v w x y z"
  26. set "n_gtr=0"
  27. set "n=0"
  28. for /f "delims=" %%i in ('type "%1"') do (
  29. set "str=%%i"
  30. for %%j in (%letter_gtr%) do (
  31.   set "str=!str:%%j=%%j!"
  32.   set/a "n_gtr+=1"
  33.   if !n_gtr! equ 26 (
  34.    if !n! lss 1 (
  35.     echo=首次进入清理同名数据重建_转换小写
  36.     echo=!str!>%~n1_转换小写%~x1
  37.     set/a n+=1
  38.    ) else if !n! geq 1 (
  39.     set/a n+=1
  40.     echo,第 !n! 次执行导出操作
  41.     echo=!str!>>%~n1_转换小写%~x1
  42.    )
  43.    set "n_gtr=0"
  44.   )
  45. )
  46. )
  47. pause
复制代码

好了。抱歉,可以是我之前没注意到我哪里弄错了。

TOP

回复 22# CrLf


    我加的时候报错了。

TOP

回复 21# 依山居


    啥意思,直接加上不就好了

TOP

回复 20# CrLf


    我想要在ret += chr(ord(c)|0x20) if c.isalpha() else c;
下面加一行print(ret),怎么加?

TOP

呃,套用了 c 的算法:
  1. 'a' == 0x60
  2. 'A' == 0x40
  3. 0xff^0x20 == 0b11111011
  4. 0x20 == 0b00000100
  5. 'a'  & (0xff^0x20) = 'A'
  6. 'A'  | 0x20 = 'a'
复制代码
1

评分人数

TOP

回复 18# 依山居

python一种类三元表达式
常规语法是这样
if (c.isalpha()): ret += chr(ord(c)&223)
else: ret += c

另几种方式
ret += c.isalpha() and chr(ord(c)&223) or c
ret += [c,chr(ord(c)&223)][c.isalpha()]
2

评分人数

TOP

回复 16# CrLf


    其实是ret += chr(ord(c)&(0xff^0x20)) if c.isalpha() else c 整行语法我没看懂。

TOP

回复 16# CrLf


    解释一下,0xff^0x20
谢谢。

TOP

试着写写 python
  1. str='asdfsD1df'
  2. def l2u(str):
  3. ret=''
  4. for c in str:
  5. ret += chr(ord(c)&(0xff^0x20)) if c.isalpha() else c;
  6. return ret
  7. def u2l(str):
  8. ret=''
  9. for c in str:
  10. ret += chr(ord(c)|0x20) if c.isalpha() else c;
  11. return ret
  12. print (l2u(str))
  13. print (u2l(str))
复制代码
1

评分人数

TOP

这是自己写的python 。只是用调用了string自带的字母表。
  1. import string
  2. lowercase=string.ascii_lowercase
  3. uppercase=string.ascii_uppercase
  4. f=open("a.txt","r")
  5. def l2u():
  6.     txt=f.read()
  7.     for r in range(0,26,1):
  8.         txt=txt.replace(lowercase[r],uppercase[r])
  9.     return(txt)
  10. def u2l():
  11.     txt=f.read()
  12.     for r in range(0,26,1):
  13.         txt=txt.replace(uppercase[r],lowercase[r])
  14.     return(txt)
复制代码

TOP

回复 12# /zhqsystem/zhq


    如果你平时关注的是解决问题而非语言本身,时间久了自然都会接触一点...

TOP

回复 12# /zhqsystem/zhq


    不难。一样也是自学可以入门。

TOP

回复 11# 依山居  
不学了这个太难了,还是不会,而且是第一次知道有这么个程序(ini xml和inf至少还能看懂那么一点),这个超出太多了一下消化不了
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 10# /zhqsystem/zhq


    upper是python字符串对象的方法。

存为xx.py 用PYTHON IDLE 打开。
F5 运行。
uppertxt得到就是被转大写的内容。

TOP

返回列表