重命名批处理文件并保留部分文件名

时间:2015-01-06 19:47:57

标签: windows batch-file rename

我见过很多关于类似请求的帖子,但我找不到一个适合我想做的事情。这很简单,但我似乎无法得到它。

ren FILE??.txt FILE%Year%%Month%%Day%??.txt


copy FILE%Year%%Month%%Day%??.txt C:\Users\me\Desktop\Batch\renamed\achod%Year%%Month%%Day%??.txt

我无法让脚本保持'??'表示第一个文件可能包含的随机字符。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您将无法使用通配符直​​接重命名文件。相反,您需要找到所有适用的文件,然后重命名每个文件。

以下脚本在您的问题/评论的假设下运作:

  • 文件名长6个字符。
  • 只有最后两个字符可以互换。

当然,脚本可以非常容易地适应其他设置,但这可以按照您的要求进行。

SETLOCAL EnableDelayedExpansion

REM Set your Year, Month, Day variable values here.
REM They will be used for file renaming.
...

CD "C:\Path\To\Files"

FOR /F "usebackq tokens=* delims=" %%A IN (`DIR "File??.txt" /B /A:-D`) DO (
    REM Extract the last 2 chars of the file name.
    SET FileName=%%~nA
    SET First4=!FileName:~0,4!
    SET Last2=!FileName:~-2!

    REM Rename the file, inserting the new data.
    RENAME "%%A" "!First4!%Year%%Month%%Day%!Last2!%%~xA"
)
ENDLOCAL