标题: [文件操作] [已解决]批处理怎样批量将文件夹名大写改为小写? [打印本页]
作者: daohe 时间: 2010-4-14 12:31 标题: [已解决]批处理怎样批量将文件夹名大写改为小写?
如题:例如批量将E:\images下的文件夹(包括子文件夹)大写全改为小写
[ 本帖最后由 daohe 于 2010-4-15 18:06 编辑 ]
作者: hanyeguxing 时间: 2010-4-14 13:07
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /s /b /ad "E:\images"') do (set "h=%%~nxi"
- for %%j 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 set "h=!h:%%j=%%j!"
- ren "%%i" "!h!")
复制代码
[ 本帖最后由 hanyeguxing 于 2010-5-6 13:09 编辑 ]
作者: namejm 时间: 2010-4-14 13:23
2楼的代码后括号之前最好加一句 endlocal,否则,当要修改的文件夹名超过32个之后,将会出错。
作者: todayambition 时间: 2010-4-14 22:40
2楼的代码中setlocal enabledelayedexpansion 一句直接放在循环前
作者: caruko 时间: 2010-4-15 10:33
难道你们没发现吗?
dir /L 就可以转换成小写了,无需每个字符检测...
@echo off
for /f "delims=" %%i in ('dir /s /b /l /ad "E:\images"') do ( renname "%%i" "%%i_" && rename "%%i_" "%%i")
作者: hanyeguxing 时间: 2010-5-6 13:25 标题: 回复 5楼 的帖子
实际使用 dir /l 参数去改文件名是件很鸡肋的事情:
ren命令语法要求:ren [drive:][path] filename1 filename2
所以ren修改文件名时,按照语法应该写成:ren "%%i" "%%~nxi_"
但使用了/s参数后,%%~nxi会被扩展回原来的大小写的
[ 本帖最后由 hanyeguxing 于 2010-5-6 14:17 编辑 ]
作者: YYEnigma 时间: 2012-11-6 15:40
请教hanyeguxing版主 你的代码怎么才能不让后辍名大小写改变,只改文件名,不改后辍名怎么修改。万谢!!
作者: muink 时间: 2015-2-14 11:23
for /f "delims=" %%i in ('dir /b/l/ad "E:\images"') do (ren "%%i" "%%i")
dir加上/s参数就会导致%%i扩展到完整路径,而%%~nxi又会被扩展回原来的大小写的
虽然是这样,但是用于不带/s参数的改名还是蛮好的,代码好短,默默收藏本帖
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |