有没有办法批量重命名文件,包括根据大写字母重新排列文件名

有没有办法批量重命名文件,包括根据大写字母重新排列文件名

我想重命名大量文件,格式如下:

Firstname LASTNAME ABC to yyyymmdd.pdf

其中 ABC 是随机缩写,yyyymmdd 是日期,至:

LASTNAME Firstname ABC to yyyymmdd.pdf

它位于一台不能安装第三方软件的计算机上,因此可以使用诸如批量重命名实用程序是不可能的。我想做一个批处理文件来做这件事,但真的不知道从哪里开始。我在这里和其他网站上找到了一堆其他问题,详细说明了如何更改大小写,但我不想那样做。我最接近的方法是知道我必须使用 FINDSTR,但我没有足够的命令行脚本经验来继续进行下去。

答案1

好的,我明白了。从这里和其他地方的大约十个其他示例中拼凑出一个可用的批处理文件:

@echo off
setlocal EnableDelayedExpansion

for /F "delims=" %%f in ('dir /A-D /B *.pdf') do (
   for /F "tokens=1-5 delims= " %%a in ("%%~Nf") do (
      ECHO ren "%%f" "%%b %%a %%c %%d %%e!%%~Xf"
      ren "%%f" "%%b %%a %%c %%d %%e!%%~Xf"
   )
)

答案2

你的答案可以大大简化:-

for /F "tokens=1-2*" %%f in ('dir /A-D /B *.pdf') do (
    ECHO ren "%%f %%g %%h" "%%g %%f %%h"
    ren "%%f %%g %%h" "%%g %%f %%h"
)

这是因为:-

  • "tokens=1-2*"使用空格将文件名拆分为,在内Firstname%%f在内LASTNAME以及%%g文件名的其余部分在内%%h
  • 没有嵌入式循环,因此不需要延迟扩展(循环变量被隐式延迟);并且
  • 命令中没有目录dir,因此变量扩展中不需要特殊的目录处理。

如果脚本需要处理传递的目录名,则用pushd %1和括住上述内容popd

相关内容