2015-01-15 79 views
0

我有一個問題將文件重命名爲dir的結果。 實施例:批處理:根據dir命令重命名文件

候選在C驅動器和候選文件夾內有一個文件夾名有以下文件:

  1. something.txt
  2. everything.doc
  3. onething.bmp

當我dir,我會得到文件的列表。

在該文件夾將始終爲1個txt文件和1個bmp文件

如何重命名BMP文件,因此將作爲TXT文件,假設我用DIR * .TXT

同名

在上述我如何改變的例子onething.bmpsomething.bmp

預先感謝任何答案

回答

1
for %%X in ("*.txt") do (
for %%Y in ("*.bmp") do (
    echo ren %%Y %%~nX%%~xY 
) 
) 

如果輸出是您需要的,請刪除echo

爲了%%~nX等解釋見for /?

+0

謝謝@Stephan ... 我仍然無法把它弄清楚。這是我做的 copyFiles copy * .txt c:\ MY \%username%\%3 \ copy * .doc c:\ MY \%username%\%3 \ copy * .bmp c: \ MY \%的用戶名%\%3 \ 轉到renameBMP :renameBMP 坎德拉/ DC:\ MY \%的用戶名%\%3(的 「* .txt」)做( 爲%% 爲%% X爲Y( 「* .BMP」)做( 仁%%Ÿ%%〜NX %%〜XY ) ) 暫停 轉到退出 結果不重命名爲BMP一樣的txt文件名。 只有1個txt文件和1個bmp文件 – useniezan

+0

'copy .txt'不會複製,而是給出錯誤(使用'copy * .txt')同樣在'for %% X in(「.txt」)中......通配符丟失了。 – Stephan

0

這應該工作:

@ECHO OFF 
FOR %%X in ("*.txt") DO (SET txtName=%%X) 
FOR %%X in ("*.bmp") DO (SET bmpName=%%X) 
FOR /F "tokens=1 delims=." %%X IN ("%txtName%") DO (
    REN %bmpName% %%X.bmp 
) 

如果BAT文件位於同一文件夾中的TXT和BMP文件這隻會工作。如果它位於其他地方,則必須調整路徑。 如果文件夾中有多個bmp/txt文件,則只處理「最後」文件。

+0

感謝@Michaels 抱歉地通知,該文件是不是該批次的位置爲同一因此你的編碼不​​給,我想但真的很欣賞的結果幫助 – useniezan