簡體   English   中英

重命名Windows批處理腳本中的多個文件擴展名

[英]renaming multiple files extensions in a Windows batch script

我需要遞歸搜索目錄,找到特定名稱的文件后,將其重命名。 關鍵是我還需要稍后再將其重命名。

for /r %%x in (*.aspx) do move %%x %%x.txt

上面的工作可以繼續進行,但是我無法算出語法來重命名。

我的下一個想法是,而不是添加擴展名,或者重命名該擴展名,但是我不知道該怎么做。

任何人都有任何想法。 Dos搜索到的我從來都不是我的好朋友。

如果這更容易,我很高興。

注意:這些是在批處理文件中使用的命令行,當直接從命令提示符執行它們時,請使用%x而不是%%x

這將重命名* .apsx以將.txt添加到末尾。

for /r %%x in (*.aspx) do move "%%x" "%%x.txt"

編輯:下面有一個更改來處理被遺漏的遞歸重命名。

這將重命名* .apsx以從末尾刪除.txt

for /r %%x in (*.aspx.txt) do move "%%x" "%%~dpx%%~nx"

看來您想以某種方式“隱藏”文件。 這可以通過從文件名中刪除擴展名來完成。 不幸的是,這不能在for循環中“內聯”完成,因此您需要類似這樣的東西。

for /r %%x in (*.aspx) do call :disable %%x

goto :eof

:disable
  ren %1 %~n1.old
  goto :eof

該子例程是必需的,因為您無法在for循環內寫入%〜nX。 假設for循環找到文件index.aspx則子例程中的重命名將擴展為:

ren c:\some\dir\where\the\files\are\stored\index.aspx index.old

您可以將“舊”和“新”擴展名作為參數傳遞

for /r %%x in (*.%1) do call :disable %%x %2

goto :eof

:disable
  ren %1 %~n1.%2
  goto :eof

假設將以上內容存儲在名為“ my_rename.cmd”的批處理文件中,則可以運行

my_rename aspx old

“隱藏”文件。

要再次“啟用”它們,可以運行:

my_rename old aspx

如果文件存儲在包含空格的目錄中,則需要將ren %1 %~n1.%2更改為ren "%1" %~n1.%2

可能重復在Windows上使用一個命令更改文件夾中所有文件的擴展名

但是會是這樣

ren *.X *.Y

其中“ X”是原始擴展名,“ Y”是您要更改的擴展名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM