2013-12-16 204 views
1

內的文件夾Perl腳本我有4個Perl腳本,我運行他們通過批處理文件,每個文件運行運行文件夾

Scripts.bat

perl script1.pl %1 
perl script2.pl %1 
perl script3.pl %1 
perl script4.pl %1 

然後在給定的文件夾中運行它,我使用perl命令(這裏%1是傳遞文件夾名稱的地方)

perl -le "-f and print and `scripts.bat $_` for map <$_\\*>, pop||'.'" %1 

但是這隻適用於第一級別的文件夾。

我需要通過文件夾遞歸運行(文件夾內的文件夾)。它也可以在文件夾內有兩個以上的文件夾級別。

如果

abc(folder) > xyz(folder) > file4.c, file5.c, file6.c 
      > file1.c 
      > file2.c 
      > file3.c 

應該在所有文件上運行一樣。

任何形式的幫助是值得歡迎的,是它的一些Perl腳本或一個班輪perl的命令或批處理文件

+0

參見[File :: Find](http://p3rl.org/File::Find)。 – choroba

回答

1

從批處理文件:

for /r "c:\abc" %%f in (*.c) do call "scripts.bat" "%%f" 

要從命令行運行,與%f取代%%f

+0

沒有任何反應。 btw什麼是「c:\ abc」 –

+0

@ Ad-vic:僅僅是一個例子,因爲從你的樣本中看起來很糟糕。它所做的是枚舉'c:\ abc'下的所有'* .c'文件,並以文件全名(帶路徑)作爲參數調用''scripts.bat''。將''c:\ abc「'替換爲從哪裏開始搜索文件的根目錄,或者如果它是與命令行/批處理文件相同的目錄,則用'」。「'替換。 –

+0

謝謝!!工作正常。我使用了「%1」而不是「C:\ abc」,這樣我就可以通過參數 –