通过重新排序当前名称重命名Windows批处理文件

时间:2013-11-08 06:16:11

标签: windows batch-file

我在文件夹中有大量文件,文件名格式为:“ID FIRSTNAME LASTNAME.extension”。 ID为7位或6位数字,X为1234567或123456X。扩展名为pdf,doc或docx。每个变量之间的分隔符是空格“”。示例“1234567 Jill Smith.pdf”

我需要通过重新排序当前名称来重命名每个文件。它不是“ID FIRSTNAME LASTNAME.extension”,而是“LASTNAME_FIRSTNAME_ID.extension”。 因此,我需要将LASTNAME与ID交换,并用下划线“_”替换所有空格。扩展需要保持不变。使用上面的例子,“Smith_Jill_1234567.pdf”。

我做了一些快速清理(没有中间名),但我不确定如何让rename命令在第二个分隔符上工作,而不是第一个分隔符。我查看过windows batch file rename,但这只会影响第一个分隔符。

我无权访问第三方软件(限制权限),我正在运行Windows 7,并且检查过Powershell是否可用。

感谢您的帮助,谢谢

2 个答案:

答案 0 :(得分:0)

ls | Rename-Item -NewName {$_.name -replace '^(\w+) (\w+) (\w+)', '$3_$2_$1'}

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=c:\sourcedir"
FOR /f "tokens=1-4delims=. " %%a IN (
 'dir /b /a-d "%sourcedir%\*" '
 ) DO (
  SET "reqxt="
  IF /i "%%d"=="pdf" SET reqxt=Y
  IF /i "%%d"=="doc" SET reqxt=Y
  IF /i "%%d"=="docx" SET reqxt=Y
  IF DEFINED reqxt (
   ECHO REN "%sourcedir%\%%a %%b %%c.%%d" "%%c_%%b_%%a.%%d"
  )
)
GOTO :EOF
更改源目录名称后,

应报告所需的RENAME。删除ECHO关键字以实际执行重命名。