我正在尝试使用批处理脚本将文件从 重命名The Big Bang Theory - The Prom Equivalency.mp4
为the.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!
)