2015-01-06 119 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