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

Renaming a batch file and keeping part of the filename

我看过很多关于类似请求的帖子,但我找不到适合我正在尝试做的事情的帖子。这很简单,但我似乎无法理解。

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

我无法获取保留“??”的脚本表示第一个文件可能具有的随机字符。

感谢任何帮助。

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

下面的脚本在您 question/comments:

的假设下工作
  • 文件名长度为 6 个字符。
  • 只有最后 2 个字符可以互换。

当然,脚本可以很容易地适应其他设置,但这正是您所要求的。

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