2012-10-07 46 views
0

我需要快速切換包含在特定文件夾中的所有文件的擴展名。通過bat或vbs切換擴展

假設C:\My Folder\包含200個文件(全部爲.txt)。

通過執行腳本更改他們都.xml

然後

通過執行THE SAME腳本再次更改他們都回.txt

換句話說執行這一個腳本將無限期地關閉這些200個文件(如果它們.txt)至.xml和(如果他們是.xml),以.txt和環...

對於批量我考慮到這樣的事情(這確實工作):

@echo off 

IF EXIST "C:\My Folder\*.txt" GOTO RENAMETXT 
IF NOT EXIST "C:\My Folder\*.txt" GOTO RENAMEXML 

:RENAMETXT 
ren "C:\My Folder\*.txt" "*.xml" 

:RENAMEXML 
ren "C:\My Folder\*.xml" "*.txt" 

回答

2

你提出的批處理腳本不工作,因爲:RENAMETXT部分漏網到:RENAMEXML。可以通過在:RENAMEXML之前插入EXIT /B來修復。

但沒有必要GOTO或EXIT/B - 您可以簡單地使用IF ... ELSE ...

@echo off 
if exist "C:\My Folder\*.txt" (
    ren "C:\My Folder\*.txt" *.xml 
) else (
    ren "C:\My Folder\*.xml" *.txt 
) 
+0

感謝察覺我的錯誤(缺少EXIT/B部分),並由於對於(更簡單的)IF ... ELSE ...解決方案,順便說一句,我早些時候嘗試過自己,但由於忘記添加括號(顯然)不起作用;)...現在我知道爲什麼了!乾杯! –

+2

@dbenham - 至少對於Win XP和7,ren的第二個參數必須是'filename':cp。 「ren /?=> REN [驅動器:] [路徑]文件名1文件名2 ... ...請注意,您不能爲目標文件指定新的驅動器或路徑。」 –

+0

@ Ekkehard.Horner - 當然你是對的,謝謝。愚蠢的錯誤在我的角色。所有固定。 – dbenham