BAT文件 - 替换文件名中的多个字符

时间:2015-11-12 22:21:12

标签: windows file syntax cmd batch-rename

无法找到对其他人的问题不具体的答案。

我想将bat文件放在目录中并运行它以实现以下目的:

  1. 替换所有最初的' - ' (连字符)与' - ' (空间 - 连字符 - 空间)
  2. 替换任何3个char月份名称(Jan,Feb,... Dec),前面加上两位数的月号,然后是连字符(' Jan' =' -01 - &# 39;,' Mar' =' -03 - ')
  3. 以下内容:

    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 
    

    我喜欢"重命名"只运行一次(而不是一遍又一遍地重命名所有文件)。它应该对当前目录中的所有文件执行此操作(当然bat文件除外)。

1 个答案:

答案 0 :(得分:2)

@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的设置以适合您的具体情况。

我希望你有理由完成给定表格中设定的月份/数字。

为了测试目的,所需的REN命令仅为ECHO在您确认命令正确后,将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

你说"替换所有最初的' - ' (连字符)与' - ' (空间连字符空间)"我的意思是"名称中的最初连字符"。

相关问题