中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 18:56
楼 主 小写字母转大写 发表于 2007-01-17 07:01 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
  字母小写转大写,可以通过罗列 set str=%str:a=A%、set str=%str:b=B%……的方式来解决,但是,这是纯体力活,毫无技巧可言。以下演示代码能让你在把字母小写转换为大写的时候,不再做毫无乐趣可言的 复制+粘贴+修改 这一重复劳动:

@echo off
:: 稍微修改一下代码就可以实现大写转小写

set str1=abcdefghijklmnopqrstuvwxyz
set str2=ABCDEFGHIJKLMNOPQRSTUVWXYZ

:main
cls
set str=
set /p str= 请输入字符串(退出请直接按回车):
if not defined str exit
cls
echo.
echo 转换前:"%str%"
echo.
for /l %%i in (0,1,25) do (
call set char1=%%str1:~%%i,1%%
call set char2=%%str2:~%%i,1%%
call :change
)
echo ____________________________________________
echo.
echo 转换后:"%str%"
echo.
echo 按任意键进行下一次演示...
pause>nul
goto main

:change
call set "str=%%str:%char1%=%char2%%%"
goto :eof
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
tao0610 +2 2007-01-17 07:08
redtek +5 2007-01-18 04:25
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2 发表于 2007-01-17 07:08 ·  中国 北京 朝阳区 联通
高级用户
★★
朦胧的世界
积分 579
发帖 218
注册 2006-10-24 04:29
UID 67972
状态 离线
不错,不过还是习惯用Ultraedit转换.

认识自己,降伏自己,改变自己
,才能改变别人!
3 发表于 2007-01-17 09:53 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
UID 44210
状态 离线
好像不用这么复杂,一句for就搞定:
@echo off
:main
cls
set str=
set /p str= 请输入字符串(退出请直接按回车):
if not defined str exit
cls
echo.
echo 转换前:"%str%"
for %%i in (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) do call set str=%%str:%%i=%%i%%
echo ____________________________________________
echo.
echo 转换后:"%str%"
echo.
echo 按任意键进行下一次演示...
pause>nul
goto main


大转小改一下(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)就OK

[ Last edited by zh159 on 2007-1-16 at 08:54 PM ]
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
namejm +4 2007-01-17 10:00
redtek +5 2007-01-18 04:25
4 发表于 2007-01-17 09:59 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
  3楼充分利用了替换语句不区分大小写的特点,巧妙。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
5 发表于 2007-01-17 10:07 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
UID 63324
性别 男
状态 离线
1楼和3楼代码的两种不同解决方法太精彩了~:)))

[ Last edited by redtek on 2007-1-16 at 09:08 PM ]
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
6 发表于 2007-01-20 08:20 ·  中国 广东 佛山 顺德区 电信
初级用户
积分 99
发帖 30
注册 2007-01-19 05:46
UID 76980
性别 男
状态 离线
果然利害、
7 发表于 2007-09-15 21:48 ·  中国 广东 广州 番禺区 电信
初级用户
积分 86
发帖 45
注册 2007-07-26 17:35
UID 94082
性别 男
状态 离线
多谢LZ和3 楼的老大,强啊,学习了.......
8 发表于 2008-05-11 17:10 ·  中国 广东 江门 电信
初级用户
积分 29
发帖 15
注册 2008-04-23 20:23
UID 116742
性别 男
状态 离线
不知为了什么搞那复杂呢?

setlocal ENABLEDELAYEDEXPANSION

set /p str=请输入字符串(退出请直接按回车):
for /l %%l in (0,1,100) do (
call set s%%l=!str:~%%l,1!
set Q=!s%%l!
for %%i in (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) do (
if /i !Q!==%%i set/p=%%i<nul
)
if "!Q!"=="" goto :Q1
)
:Q1
ECHO\
%0
这样可以吗?

[ Last edited by 106942397 on 2008-5-11 at 09:29 PM ]
9 发表于 2008-05-11 17:33 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
UID 73968
性别 男
状态 离线
呵呵,8楼 请你输入 abcd 然后运行你的代码和3楼的代码 对比一下结果。
再说了,3楼的比你的复杂吗?
致精致简!
10 发表于 2008-05-11 21:24 ·  中国 广东 江门 新会区 电信
初级用户
积分 29
发帖 15
注册 2008-04-23 20:23
UID 116742
性别 男
状态 离线
大小写互换
setlocal ENABLEDELAYEDEXPANSION

set /p str=请输入字符串(退出请直接按回车):
for /l %%l in (0,1,100) do (
call set s%%l=!str:~%%l,1!
set Q=!s%%l!
for %%i in (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) do (
for %%k in (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) do (
if !Q!==%%i if /i !Q!==%%k set/p=%%k<nul
if !Q!==%%k if /i !Q!==%%i set/p=%%i<nul

))
if "!Q!"=="" goto :Q1
)
:q1
echo\
%0

[ Last edited by 106942397 on 2008-5-11 at 09:30 PM ]
11 发表于 2008-06-20 22:36 ·  中国 内蒙古 包头 联通
新手上路
积分 4
发帖 2
注册 2008-06-20 22:13
UID 120656
性别 男
来自 河北保定
状态 离线
老大,那个罗列的地方我看不懂,能不能给讲一下!不明白那个替换语句的用法!
str=%%str:%%i=%%i%%这一段我理解不了,有高人给指点一下不!!
我的QQ 362998909
12 发表于 2008-06-20 22:36 ·  中国 内蒙古 包头 联通
新手上路
积分 4
发帖 2
注册 2008-06-20 22:13
UID 120656
性别 男
来自 河北保定
状态 离线
老大,那个罗列的地方我看不懂,能不能给讲一下!不明白那个替换语句的用法!
str=%%str:%%i=%%i%%这一段我理解不了,有高人给指点一下不!!
我的QQ 362998909
13 发表于 2008-06-20 23:08 ·  中国 广东 广州 广东金万邦科技投资有限公司(新一代数据中心)IDC机房(BGP)
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
UID 103929
性别 男
来自 广西
状态 离线
Originally posted by olslyang at 2008-6-20 22:36:
老大,那个罗列的地方我看不懂,能不能给讲一下!不明白那个替换语句的用法!
str=%%str:%%i=%%i%%这一段我理解不了,有高人给指点一下不!!
我的QQ 362998909


"变量延迟"
这样应该可以看得懂了吧:
call set str=%%str:%%i=%%i%%
论坛跳转: