Batch file 用于将文件名转换为小写的批处理文件

Batch file 用于将文件名转换为小写的批处理文件,batch-file,Batch File,我需要一个批处理文件将文件夹及其子文件夹中的所有文件转换为小写。例如: Here Is StackOverflow.txt 到 文件名的一部分在括号中。有没有可能忽略它,让它保持原来的状态?e、 g Here Is [A WEBSITE CALLED] StackOverflow.txt 到 易于使用-一个混合JScript/批处理脚本,通过正则表达式替换重命名文件。BAT是纯脚本,从XP开始在任何Windows机器上本机运行 要简单地将所有文件名转换为小写,请执行以下操作: jren "^

我需要一个批处理文件将文件夹及其子文件夹中的所有文件转换为小写。例如:

Here Is StackOverflow.txt

文件名的一部分在括号中。有没有可能忽略它,让它保持原来的状态?e、 g

Here Is [A WEBSITE CALLED] StackOverflow.txt

易于使用-一个混合JScript/批处理脚本,通过正则表达式替换重命名文件。BAT是纯脚本,从XP开始在任何Windows机器上本机运行

要简单地将所有文件名转换为小写,请执行以下操作:

jren "^" "" /l /s 
如果您希望方括号之间的所有文本都是大写,而其他所有文本都是小写,那么使用两个命令就可以轻松完成

jren "^" "" /l /s
jren "[.+?]" "uc($0)" /j /s
如果希望保留方括号中所有文本的原始大小写,并将其他所有内容转换为小写,则需要更复杂的正则表达式和替换字符串

jren "([^[]*)(\[.*?\])*" "lc($1?$1:'')+($2?$2:'')" /j /s
由于JREN是一个批处理脚本,如果要在另一个批处理脚本中使用该命令,则必须使用CALL JREN

使用jren/?获取有关所有可用选项的帮助。

使用-一个混合JScript/批处理脚本,通过正则表达式替换重命名文件。BAT是纯脚本,从XP开始在任何Windows机器上本机运行

@echo off
setlocal EnableDelayedExpansion

rem Start the recursive process over the tree
call :processThisDir
goto :EOF


:processThisDir

rem Process all filenames in this folder and separate they in three parts
for /F "tokens=1-3 delims=[]" %%a in ('dir /B /A-D') do (
   set "left=%%a" & set "right=%%c"

   rem Convert left and right parts to lower case
   for %%l 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 "left=!left:%%l=%%l!"
      set "right=!right:%%l=%%l!"
   )

   rem Rename this file
   ren "%%a[%%b]%%c" "!left![%%b]!right!"
)

rem Recursively process the folders in this folder
for /D %%a in (*) do (
   cd "%%a"
   call :processThisDir
   cd ..
)

exit /B
要简单地将所有文件名转换为小写,请执行以下操作:

jren "^" "" /l /s 
如果您希望方括号之间的所有文本都是大写,而其他所有文本都是小写,那么使用两个命令就可以轻松完成

jren "^" "" /l /s
jren "[.+?]" "uc($0)" /j /s
如果希望保留方括号中所有文本的原始大小写,并将其他所有内容转换为小写,则需要更复杂的正则表达式和替换字符串

jren "([^[]*)(\[.*?\])*" "lc($1?$1:'')+($2?$2:'')" /j /s
由于JREN是一个批处理脚本,如果要在另一个批处理脚本中使用该命令,则必须使用CALL JREN


使用jren/?获取所有可用选项的帮助。

只需在答案中添加另一个选项,即可将文件夹及其子文件夹中的所有文件重命名为名称的小写版本

@echo off
setlocal EnableDelayedExpansion

rem Start the recursive process over the tree
call :processThisDir
goto :EOF


:processThisDir

rem Process all filenames in this folder and separate they in three parts
for /F "tokens=1-3 delims=[]" %%a in ('dir /B /A-D') do (
   set "left=%%a" & set "right=%%c"

   rem Convert left and right parts to lower case
   for %%l 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 "left=!left:%%l=%%l!"
      set "right=!right:%%l=%%l!"
   )

   rem Rename this file
   ren "%%a[%%b]%%c" "!left![%%b]!right!"
)

rem Recursively process the folders in this folder
for /D %%a in (*) do (
   cd "%%a"
   call :processThisDir
   cd ..
)

exit /B
从cmdline: 注意,在运行之前,请确保将CD刻录到正确的目录:

@for /f "delims=" %i in ('dir /b/l/a-d') do ren "%~fi" "%~i"
或批处理文件:

@echo off
for /f "delims=" %%i in ('dir /b/l/a-d') do echo ren "%%~fi" "%%~i"

只需在答案中添加另一个选项,即可将文件夹及其子文件夹中的所有文件重命名为名称的小写版本

从cmdline: 注意,在运行之前,请确保将CD刻录到正确的目录:

@for /f "delims=" %i in ('dir /b/l/a-d') do ren "%~fi" "%~i"
或批处理文件:

@echo off
for /f "delims=" %%i in ('dir /b/l/a-d') do echo ren "%%~fi" "%%~i"

我应该如何使用该链接上的代码?我将该代码的批处理部分从@echo off复制到exit/b,并将其保存为jren.bat,保存在我在命令行中编写的同一文件夹中:jren/?什么也没发生。@livingbeing-整个代码都放在JREN.BAT中:批处理和JScript代码。因此称为混合JScript/batch。虽然如果只将批处理部分正确复制到ANSI编码的文件名jren.bat中,那么jren/?应该打印出帮助。但除此之外,脚本将毫无用处,除非它同时包含批处理代码和JScript代码。@dbenham我花了几分钟的时间才开始工作,但它很好地完成了我所有电视节目的大规模重命名,从Serie-[x]-集名到带有jren.bat的Serie[S.E]集名。*-\[\dx[\d-]*\]-.$1+'[S0'+$2+'.E'+$3+']+$4/j/S。干得好-我应该如何使用该链接上的代码?我将该代码的批处理部分从@echo off复制到exit/b,并将其保存为jren.bat,保存在我在命令行中编写的同一文件夹中:jren/?什么也没发生。@livingbeing-整个代码都放在JREN.BAT中:批处理和JScript代码。因此称为混合JScript/batch。虽然如果只将批处理部分正确复制到ANSI编码的文件名jren.bat中,那么jren/?应该打印出帮助。但除此之外,脚本将毫无用处,除非它同时包含批处理代码和JScript代码。@dbenham我花了几分钟的时间才开始工作,但它很好地完成了我所有电视节目的大规模重命名,从Serie-[x]-集名到带有jren.bat的Serie[S.E]集名。*-\[\dx[\d-]*\]-.$1+'[S0'+$2+'.E'+$3+']+$4/j/S。干得好-没用。dbenham的代码完成了这项工作+谢谢你考虑这个问题。没用。dbenham的代码完成了这项工作+谢谢你考虑这个问题。