返回列表 发帖

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

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

请将文件直接拖放至此批处理上自动执行转换,输出文件名为文本名_转换大(小)写.后缀名
注:特殊符号没有测试谨慎使用
@echo off&color 0e
setlocal enabledelayedexpansion
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"
set "n_lss=0"
set "n=0"
for /f "delims=" %%i in ('type "%1"') do (
set "str=%%i"
for %%j in (%letter_lss%) do (
  set "str=!str:%%j=%%j!"
  set/a "n_lss+=1"
  if !n_lss! equ 26 (
   if !n! lss 1 (
    echo,首次进入清理同名数据重建_转换大写
    echo,!str!>%~n1_转换大写%~x1
    set/a n+=1
   ) else if !n! geq 1 (
    set/a n+=1
    echo,第 !n! 次执行导出操作
    echo=!str!>>%~n1_转换大写%~x1
   )
   set "n_lss=0"
  )
)
)
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"
set "n_gtr=0"
set "n=0"
for /f "delims=" %%i in ('type "%1"') do (
set "str=%%i"
for %%j in (%letter_gtr%) do (
  set "str=!str:%%j=%%j!"
  set/a "n_gtr+=1"
  if !n_gtr! equ 26 (
   if !n! lss 1 (
    echo=首次进入清理同名数据重建_转换小写
    echo=!str!>%~n1_转换小写%~x1
    set/a n+=1
   ) else if !n! geq 1 (
    set/a n+=1
    echo,第 !n! 次执行导出操作
    echo=!str!>>%~n1_转换小写%~x1
   )
   set "n_gtr=0"
  )
)
)
pauseCOPY

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

TOP

回复 22# CrLf


    我加的时候报错了。

TOP

回复 21# 依山居


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

TOP

回复 20# CrLf


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

TOP

呃,套用了 c 的算法:
'a' == 0x60
'A' == 0x40
0xff^0x20 == 0b11111011
0x20 == 0b00000100
'a'  & (0xff^0x20) = 'A'
'A'  | 0x20 = 'a'COPY
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
str='asdfsD1df'
def l2u(str):
ret=''
for c in str:
ret += chr(ord(c)&(0xff^0x20)) if c.isalpha() else c;
return ret
def u2l(str):
ret=''
for c in str:
ret += chr(ord(c)|0x20) if c.isalpha() else c;
return ret
print (l2u(str))
print (u2l(str))COPY
1

评分人数

TOP

这是自己写的python 。只是用调用了string自带的字母表。
import string
lowercase=string.ascii_lowercase
uppercase=string.ascii_uppercase
f=open("a.txt","r")
def l2u():
    txt=f.read()
    for r in range(0,26,1):
        txt=txt.replace(lowercase[r],uppercase[r])
    return(txt)
def u2l():
    txt=f.read()
    for r in range(0,26,1):
        txt=txt.replace(uppercase[r],lowercase[r])
    return(txt)COPY

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

返回列表