0

我的文件夹中有大量文件,文件名格式为:“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”。因此我需要用 ID 交换 LASTNAME 并用下划线“_”替换所有空格。扩展名需要保持不变。使用上面的例子,“Smith_Jill_1234567.pdf”。

我做了一些快速清理(没有中间名),但我不确定如何让重命名命令在第二个分隔符上工作,而不是第一个。我已经查看了windows 批处理文件重命名,但是这只对第一个分隔符起作用。

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

我将不胜感激任何帮助,谢谢

4

2 回答 2

0
ls | Rename-Item -NewName {$_.name -replace '^(\w+) (\w+) (\w+)', '$3_$2_$1'}
于 2013-11-08T06:39:12.613 回答
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更改源目录名称后应报告所需的 s。删除ECHO关键字以实际执行重命名。

于 2013-11-08T06:47:37.023 回答