批处理文件用点重命名空格,但 - 部分除外,并将其小写

批处理文件用点重命名空格,但 - 部分除外,并将其小写

我正在尝试使用批处理脚本将文件从 重命名The Big Bang Theory - The Prom Equivalency.mp4the.big.bang.theory-the.prom.equivalency.mp4。以下是我目前得到的结果:

@ECHO OFF
setlocal enabledelayedexpansion
FOR %%f IN (%*) DO (
    set filename=%%~nf
    set filename=!filename: =.!
    set filename=!filename: .-.=-!
    rem uncomment for debugging.
    rem if not "!filename!"=="%%~nf" ECHO RENAME "%%~dpnxf" "!filename!%%~xf" >> "%TEMP%\test.txt"
    rem comment for debugging.
    if not "!filename!"=="%%~nf" RENAME "%%~dpnxf" "!filename!%%~xf"
)

我得到的文件是The.Big.Bang.Theory.-.The.Prom.Equivalency.mp4

有什么诀窍可以让它不把点放在两边,-以及如何将小写命令放入脚本中?

答案1

有什么诀窍可以让它不把点放在划线的两边呢?

让我们回顾一下这个问题。

如何去掉破折号两侧的点?

改变你的

set filename=!filename: .-.=-!

声明

set filename=!filename:.-.=-!

因为,按照您现在的方式,您正在寻找(空格、点、破折号、点),而该序列不存在。


现在可以,

有什么诀窍可以让它不把点放在划线的两边呢?

:只需反转...语句的顺序=(并适当调整破折号)。

set filename=!filename: - =-!
set filename=!filename: =.!

这样,你排除在将单词间空格更改为点之前,请先删除破折号周围的空格。


“我怎样才能将小写命令放入脚本中?”

那么,你可以

set filename=!filename:A=a!
set filename=!filename:B=b!
set filename=!filename:C=c!

这不太优雅。但有人告诉我,这也可以做到

set filename=!filename:a=a!
set filename=!filename:b=b!
set filename=!filename:c=c!

因为:……=字符串匹配是不区分大小写的(例如,:q=ent会将“sqimQal”更改为“sentimental”)。因此,将 Magoo 的答案改编为将文件名从大写转换为小写...,我们可以将其简化为

for %%a 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 filename=!filename:%%a=%%a!
)

相关内容