Board logo

标题: [文本处理] 批处理如何将文件名中的大写字母转换成小写字母 [打印本页]

作者: lqh3417    时间: 2009-7-31 00:00     标题: 批处理如何将文件名中的大写字母转换成小写字母

本帖最后由 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 编辑 ]
作者: Lumiere    时间: 2009-7-31 09:39     标题: 回复 1楼 的帖子

楼主这样有意义么,不知道你想做什么。是要输出文件名还是文件名中的内容?现在的人怎么都这么懒啊,一点都不想多说,一个字都不想多打……
作者: namejm    时间: 2009-7-31 10:49

  请用详细的语言描述你的需求,如果你自己都懒于打字,别人将会比你更懒——看帖,然后关帖。另外,文本集合是什么意思?不要生造那些只有你自己才知道的词语,应该做详细解释。
作者: Lumiere    时间: 2009-7-31 11:48     标题: 回复 1楼 的帖子

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

[ 本帖最后由 Lumiere 于 2009-7-31 11:49 编辑 ]
作者: more    时间: 2009-7-31 12:00

  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
复制代码

作者: lqh3417    时间: 2009-7-31 12:02     标题: 好吧,那我就说一下我的实际需要

一次分区转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 编辑 ]
作者: Batcher    时间: 2009-7-31 12:05     标题: 回复 6楼 的帖子

1、能否把所有的问题背景和详细需求全部更新到顶楼,以便他人查看?
2、你觉得5楼的朋友看到你在6楼的回复,心里会有什么感想?
作者: lqh3417    时间: 2009-7-31 12:10

那您就把我六楼的删了吧,详细需求都写上去那就不止是文本处理了,我怕影响分类。
作者: Lumiere    时间: 2009-7-31 12:10     标题: 回复 6楼 的帖子

晕,那你直接把“一次分区转NTFS后文件名都变大写了,我想用个批处理变成小写”写出来不就啥都完事了么?呵呵,大家都百忙活了
作者: Lumiere    时间: 2009-7-31 12:15

http://bbs.bathome.net/viewthrea ... 0%B4%2B%D0%A1%D0%B4
作者: lqh3417    时间: 2009-7-31 19:16

为什么下面代码无法逐个显示出一个目录下文件名中A替换成a的结果啊?要怎么修改才行呢?
for /f "usebackq delims=" %%b in (`dir /b`) do (
   echo %%b:A=a%%)
作者: keen    时间: 2009-7-31 20:08     标题: 回复 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
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2