2015-01-06 81 views
0

我在类似的请求中看到了很多帖子,但我无法完全找到适合我所要做的。这很简单,但我似乎无法得到它。重命名批处理文件并保留文件名的一部分

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 

我不能让脚本保持'??'它代表第一个文件可能具有的随机字符。

任何帮助表示赞赏。

+0

“??”字符是否始终位于文件名中的相同位置(第5和第6)并且总是正好两个字符? – aphoria

+0

是的,它将永远是第5和第6 – oitson13

回答

1

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

下面的脚本作品您的问题/评论的假设下:

  • 文件的名称是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 
+0

这似乎工作得很好。我错了,文件名实际上是7个字符,5,然后是最后2.我将SET FIRST4更改为FIRST5和0.5,它似乎工作正常。谢谢你的帮助!! – oitson13