在某些字符之前批量重命名文件

时间:2017-01-02 00:22:10

标签: windows batch-file batch-rename

我有一堆名称如下的Pdf文件:

Malcolm Gaskill - History.pdf 
Manfred B. Steger - Globalization; A Very Short Introduction.pdf  

我想重命名它们以摆脱第一个连字符之前的所有内容,所以它们最终会像:

History.pdf 
Globalization; A Very Short Introduction.pdf

我该怎么做呢? 感谢

1 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
FOR /f "delims=" %%a IN (
 'dir /b /a-d "%sourcedir%\*-*.pdf" '
 ) DO (
 FOR /f "tokens=1*delims=-" %%b IN ("%%a") DO (
  FOR /f "tokens=*" %%d IN ("%%c") DO (
   ECHO(REN "%sourcedir%\%%~a" "%%~d"
  )
 )
)
GOTO :EOF

您需要更改sourcedir的设置以适合您的具体情况。

为了测试目的,所需的REN命令仅为ECHO在您确认命令正确后,将ECHO(REN更改为REN以实际重命名文件。

对于初学者来说不是特别容易,因为文件名可能包含; ,这是一个分隔符,如 Space

首先,执行dir /b以获取所有必需的文件名,这些文件名使用%%a而不是分隔符应用于for /f

接下来,将-标记为%%b%%c,然后使用%%c将所需文件名应用到tokens=*,从%%d中移除主要分隔符。

然后使用mix-and-match构建所需的重命名命令。