2014-04-30 99 views
1

我需要遞歸搜索目錄,並且當找到特定名稱的文件時,將其重命名。關鍵是我需要也可以稍後重新命名它。在Windows批處理腳本中重命名多個文件擴展名

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

上述工作向前發展,但我無法制定出語法來重新命名它之後。

我的下一個想法是,而不是增加一個擴展名,也許重命名擴展名,但我不能解決如何。

任何人有任何想法。我通過dos搜索從來不是我的好朋友。

我會很高興,如果這在哪裏vbs如果更容易。

+1

你能澄清你所說的「稍後能夠將其重命名回」是什麼意思? – aphoria

+0

如果您正在尋找'''vbs'''解決方案,請使用Google或http://stackoverflow.com/questions/22636917/vbscript-for-moving-like-files獲取初始指針。 VBScript(或JScript)語言更富有表現力,可以更好地構建代碼。然後,您可以使用'''cscript.exe'''將vbs解決方案包含到您的批處理文件中。 – xmojmr

回答

0

看來你想以某種方式「隱藏」文件。這可以通過從文件名中去除擴展名來完成。不幸的是,這不能在for循環中「內聯」,所以你需要這樣的東西。

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

goto :eof 

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

子例程是必需的,因爲你不能在for循環中寫%〜NX。假設for環發現了一個文件index.aspx然後在子程序重命名將擴大到:

​​

您可以通過「老」和「新」擴展爲參數

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.%2ren "%1" %~n1.%2

1

注:這些是一個批處理文件內使用命令行,並直接從命令提示執行它們時再使用%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" 
+0

第二個命令返回「%% x此時意外。」 –

+0

@MichaelFreidgeim你錯了。你把哪個批處理文件放入? http://i.imgur.com/eA51k2g.png這就是你在控制檯上看到的沒有回聲的情況。 – foxidrive

+0

您的答案使用%% x,但在圖片中使用%x。單個百分比正在工作。 –

相關問題