2013-03-20 26 views
0

我試圖用批處理腳本unrar文件。我想遍歷一個文件夾及其子文件夾,並且每當有一個.rar文件時,我都希望它將其內容放入與.rar文件相同的文件夾中。 我正在使用unrar.exe來執行此操作,並且它需要我在raring時指定輸出文件夾。 如果我沒有指定任何文件夾,它會將它拉到「當前文件夾」,這是batfile的文件夾。批處理文件:如何在(.fileext)中使用FOR/R {目錄}遍歷目錄時保存/使用subdir-name

這是我的代碼:

FOR /R %dir_of_file% %%X in (*.rar) do (

"%unrarexe_path%\unrar.exe" x -y -r %%X {set unrarfolder path} 

) 

是否有某種方式來艾薇迭代的for循環,路徑保存到我期待直通當前子目錄?

喜歡的東西:

set unrar_to_here={haxcommand that will give me current subdirectory in for-loop} 

希望我的問題是可以理解的:)

回答

1

這是不是你想要做什麼?只需將當前工作目錄設置爲包含rar文件的目錄並將其提取到當前文件夾即可。雖然我不確定unrar命令的語法。我把它留給你。 :)

FOR /R %dir_of_file% %%X in (*.rar) do (

    pushd "%%~dpX" 
    "%unrarexe_path%\unrar.exe" x -y -r %%X 
    popd 

) 
+0

非常感謝,它完美地工作! 〜dp如何工作? – user2190459 2013-03-20 17:00:15

+0

在'for'循環中,'%%〜xX'符號表示特殊含義。在這種情況下,'〜dp'表示'%% X'的驅動器路徑(不帶文件名)。有關更多信息,請參閱「help for」的最後幾頁。對於它的價值,'call'接受與它的參數類似的語法 - 並且作爲一個整體來說批處理腳本也是如此。 '%〜f0'表示當前正在運行的批處理腳本的全限定路徑和名稱,即使在執行時沒有提供路徑或擴展名。有關更多信息,請參閱「幫助電話」。 – rojo 2013-03-20 17:03:51

+0

@ user2190459 - 如果我的答案解決了您的問題,請考慮[正式接受我的答案](http://meta.stackexchange.com/a/5235/187716)。謝謝! – rojo 2013-03-20 17:08:54

1

試試這個。它會將文件放在與存檔文件相同的文件夾中:

@echo off &setlocal 
FOR /R %dir_of_file% %%X in (*.rar) do (
    "%unrarexe_path%\unrar.exe" x -y -r "%%~X" "%%~dpX" 
) 
endlocal