找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 35482|回复: 11

[文本处理] 批处理如何将文件名中的大写字母转换成小写字母

[复制链接]
发表于 2009-7-31 00:00:11 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-11-20 10:33 编辑

请问怎么用for循环实现文本交错排列?
例如现有从A到Z字母大写字母排列的字符串
str1=ABCDEFGHIJKLMNOPQRSTUVWXYZ
和从a到z的小写字母排列的字符串
str2=abcdefghijklmnopqrstuvwxyz
我想输出大写字母和小写字母的交错排列字符串
str3=AaBbCcDd....Zz

背景信息:我在一次转化硬盘中一个fat32分区到ntfs后,里面的一部分文件夹及其子文件夹和文件名的名称中小写字母全变大写了,我想用让大写都变小写,但是手动一个个去改肯定很麻烦,于是想到了批处理,于是通过百度来到了批处理之家。

[ 本帖最后由 lqh3417 于 2009-7-31 12:16 编辑 ]
发表于 2009-7-31 09:39:16 | 显示全部楼层

回复 1楼 的帖子

楼主这样有意义么,不知道你想做什么。是要输出文件名还是文件名中的内容?现在的人怎么都这么懒啊,一点都不想多说,一个字都不想多打……
发表于 2009-7-31 10:49:41 | 显示全部楼层
  请用详细的语言描述你的需求,如果你自己都懒于打字,别人将会比你更懒——看帖,然后关帖。另外,文本集合是什么意思?不要生造那些只有你自己才知道的词语,应该做详细解释。
发表于 2009-7-31 11:48:06 | 显示全部楼层

回复 1楼 的帖子

这样算是清楚明了了,但是感觉不到有什么多大意义,何不直接手动输入str3=AaBbCcDd....Zz
,因为如果用代码实现的话并不见得会比手动输入str3要简单。建议最好将你实际需求写出来,比如代码要用来处理具体的什么东西,这样才好实现。管理员不止一次强调,同样的文本处理,大文件和小文件所用的代码就不一样,效率也天差地别。所以楼主最好将自己实际情况和索要代码的背景简单陈述一下。

[ 本帖最后由 Lumiere 于 2009-7-31 11:49 编辑 ]
发表于 2009-7-31 12:00:15 | 显示全部楼层
  1. @echo off
  2. set str1=ABCDEFGHIJKLMNOPQRSTUVWXYZ
  3. set str2=abcdefghijklmnopqrstuvwxyz
  4. for /l %%a in (0 1 25) do (
  5.    call set/p=%%str1:~%%a,1%%%%str2:~%%a,1%%<nul
  6. )
  7. echo.&echo.&pause
复制代码
 楼主| 发表于 2009-7-31 12:02:40 | 显示全部楼层

好吧,那我就说一下我的实际需要

一次分区转NTFS后文件名都变大写了,我想用个批处理变成小写,设计到替换问题,就是A->a,B-b...但是代码不能是这种形式吧
  1. set str=[filename]
  2. for %%a in (A B C ...) %%b in (a b c ...) do
  3. set str=%str:%%a=%%b%
复制代码
所以我想看看怎么实现交错排列,用这种思想就可以实现一个for里面两个变量同时循环

[ 本帖最后由 lqh3417 于 2009-7-31 12:06 编辑 ]
发表于 2009-7-31 12:05:48 | 显示全部楼层

回复 6楼 的帖子

1、能否把所有的问题背景和详细需求全部更新到顶楼,以便他人查看?
2、你觉得5楼的朋友看到你在6楼的回复,心里会有什么感想?
 楼主| 发表于 2009-7-31 12:10:35 | 显示全部楼层
那您就把我六楼的删了吧,详细需求都写上去那就不止是文本处理了,我怕影响分类。
发表于 2009-7-31 12:10:36 | 显示全部楼层

回复 6楼 的帖子

晕,那你直接把“一次分区转NTFS后文件名都变大写了,我想用个批处理变成小写”写出来不就啥都完事了么?呵呵,大家都百忙活了
发表于 2009-7-31 12:15:35 | 显示全部楼层
 楼主| 发表于 2009-7-31 19:16:04 | 显示全部楼层
为什么下面代码无法逐个显示出一个目录下文件名中A替换成a的结果啊?要怎么修改才行呢?
for /f "usebackq delims=" %%b in (`dir /b`) do (
   echo %%b:A=a%%)
发表于 2009-7-31 20:08:51 | 显示全部楼层

回复 11楼 的帖子

改成这样试试:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b') do (
  3.      set str=%%i
  4.     echo !str:A=a!
  5. )
  6. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 13:37 , Processed in 0.021664 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表