BAT 文件 - 替换文件名中的多个字符
BAT file - replace multiple characters in filename
找不到与其他人的问题不太相关的答案。
我想将一个 bat 文件放在一个目录中,运行 它可以实现以下目的:
- 将所有首字母“-”(连字符)替换为“-”(space-连字符-space)
- 将任何 3 个字符的月份名称 (Jan,Feb,...Dec) 替换为两位数的月份编号,前后跟一个连字符 ('Jan' = '-01-' , 'Mar' = '-03-')
所以如下:
32432492-2015Jan23-2015Feb23.pdf
32432492-2015Feb24-2015Mar24.pdf
32432492-2015Mar25-2015Apr29.pdf
变为:
32432492 - 2015-01-23 - 2015-02-23.pdf
32432492 - 2015-02-24 - 2015-03-24.pdf
32432492 - 2015-03-25 - 2015-04-29.pdf
我希望 "rename" 只 运行 一次(而不是一遍又一遍地重命名所有文件)。它应该对当前目录中的所有文件执行此操作(当然当前的 bat 文件除外)。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir\t w o"
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*-*" '
) DO (
SET "newname=%%a"
FOR %%b IN ("Jan=-01-" "Feb=-02-" "Mar=-03-" ) DO SET "newname=!newname:%%~b!"
FOR /f "tokens=1*delims=-" %%b IN ("!newname!") DO SET "newname=%%b - %%c"
IF /i NOT "!newname!"=="%%a" ECHO(REN "%sourcedir%\%%a" "!newname!"
)
GOTO :EOF
您需要更改 sourcedir
的设置以适合您的情况。
我希望您能按照给定的形式完成 month/number 组。
所需的 REN 命令仅 ECHO
ed 用于测试目的。 确认命令正确后,将ECHO(REN
更改为REN
以实际重命名文件。
修订
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir\t w o"
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*-*" '
) DO (
SET "newname=%%a"
FOR %%b IN ("Jan=/01/" "Feb=/02/" "Mar=/03/" ) DO SET "newname=!newname:%%~b!"
FOR /f "tokens=1,2*delims=-" %%b IN ("!newname!") DO SET "newname=%%b - %%c - %%c"
IF /i NOT "!newname!"=="%%a" ECHO REN "%sourcedir%\%%a" "!newname:/=-!"
)
GOTO :EOF
你说的 "Replace all initial '-' (hyphen) with ' - ' (space-hyphen-space)" 我认为是 "the initial hyphen in the name"。
找不到与其他人的问题不太相关的答案。
我想将一个 bat 文件放在一个目录中,运行 它可以实现以下目的:
- 将所有首字母“-”(连字符)替换为“-”(space-连字符-space)
- 将任何 3 个字符的月份名称 (Jan,Feb,...Dec) 替换为两位数的月份编号,前后跟一个连字符 ('Jan' = '-01-' , 'Mar' = '-03-')
所以如下:
32432492-2015Jan23-2015Feb23.pdf
32432492-2015Feb24-2015Mar24.pdf
32432492-2015Mar25-2015Apr29.pdf
变为:
32432492 - 2015-01-23 - 2015-02-23.pdf
32432492 - 2015-02-24 - 2015-03-24.pdf
32432492 - 2015-03-25 - 2015-04-29.pdf
我希望 "rename" 只 运行 一次(而不是一遍又一遍地重命名所有文件)。它应该对当前目录中的所有文件执行此操作(当然当前的 bat 文件除外)。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir\t w o"
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*-*" '
) DO (
SET "newname=%%a"
FOR %%b IN ("Jan=-01-" "Feb=-02-" "Mar=-03-" ) DO SET "newname=!newname:%%~b!"
FOR /f "tokens=1*delims=-" %%b IN ("!newname!") DO SET "newname=%%b - %%c"
IF /i NOT "!newname!"=="%%a" ECHO(REN "%sourcedir%\%%a" "!newname!"
)
GOTO :EOF
您需要更改 sourcedir
的设置以适合您的情况。
我希望您能按照给定的形式完成 month/number 组。
所需的 REN 命令仅 ECHO
ed 用于测试目的。 确认命令正确后,将ECHO(REN
更改为REN
以实际重命名文件。
修订
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir\t w o"
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*-*" '
) DO (
SET "newname=%%a"
FOR %%b IN ("Jan=/01/" "Feb=/02/" "Mar=/03/" ) DO SET "newname=!newname:%%~b!"
FOR /f "tokens=1,2*delims=-" %%b IN ("!newname!") DO SET "newname=%%b - %%c - %%c"
IF /i NOT "!newname!"=="%%a" ECHO REN "%sourcedir%\%%a" "!newname:/=-!"
)
GOTO :EOF
你说的 "Replace all initial '-' (hyphen) with ' - ' (space-hyphen-space)" 我认为是 "the initial hyphen in the name"。