我試圖編寫一個命令腳本(.cmd
文件),它將查找最新文件並重命名其擴展名。重命名最新文件的擴展名
所以,如果有:
file1.txt
file2.txt
file3.txt
而且file3.txt
是最新的,腳本應該擴展更改爲.xml
,所以最終的結果將是file3.xml
。
如果我做以下,將重命名文件的擴展名:
move file3.txt file3.xml
但我不知道如何找到最新的文件,然後更改其擴展名。
我試圖編寫一個命令腳本(.cmd
文件),它將查找最新文件並重命名其擴展名。重命名最新文件的擴展名
所以,如果有:
file1.txt
file2.txt
file3.txt
而且file3.txt
是最新的,腳本應該擴展更改爲.xml
,所以最終的結果將是file3.xml
。
如果我做以下,將重命名文件的擴展名:
move file3.txt file3.xml
但我不知道如何找到最新的文件,然後更改其擴展名。
你可以使用下面的批處理代碼:
@echo off
for /F "eol=| delims=" %%F in ('dir /B /O-D /TW "C:\Temp\Test\*.txt" 2^>nul') do (
ren "C:\Temp\Test\%%F" "%%~nF.xml"
goto :EOF
)
命令DIR返回而不路徑並且沒有由於/B
(裸格式)的任何其他數據的匹配圖案*.txt
文件名的列表進行排序,根據扭轉由於/O-D /TW
,最後修改日期(最新的第一個)。
該列表按行命令FOR執行,該命令爲第一個文件名執行rename命令,以更改指定目錄中最新的*.txt
文件的文件擴展名。重命名第一個文件後,由於goto :EOF
,循環和批處理文件處理已退出。 EOF
是一個預定義的標籤,意思是文件結束。
如果上運行的批處理文件,當前目錄是始終與文本文件的目錄,該批處理文件可以同時編碼爲:
@echo off
for /F "eol=| delims=" %%F in ('dir /B /O-D /TW *.txt 2^>nul') do (
ren "%%F" "%%~nF.xml"
goto :EOF
)
delims=
關閉分裂的命令DIR返回的文件名如果最新的文件在文件名中包含一個或多個空格,則使用空格向空格寫入。
2^>nul
重定向,因爲沒有*.txt
文件在當前分別指定目錄設備nul
抑制該錯誤消息,由此redirection operator>
與^
這裏逃出,因爲使用它命令內FOR中的任何錯誤信息。
%%~nF
表示僅文件名,沒有文件擴展名,點分隔文件擴展名與文件名。
爲了更好的瞭解所使用的命令,以及它們如何在這裏工作,打開命令提示符窗口中,執行有下面的命令,並閱讀完全針對每個命令非常仔細地顯示所有幫助頁面。
dir /?
echo /?
for /?
goto /?
ren /?
請定義*最新*。最新修改時間戳?文件名中最大的數字? –