2013-08-27 53 views
1

我嘗試轉換以下Linux jar命令來作爲一個班輪在CMD運行:創建一個JAR文件在CMD/Powershell的一個班輪多類

$ jar cvf JarName.jar */*.class 

我發現它很難做到,因爲在CMD/Powershell中沒有文件擴展,就像在基於* nix的shell中一樣。我知道我可以通過創建具有適當類文件的清單來實現這一點,但是一行代碼看起來非常簡單。我曾嘗試使用DIR和管道,但看起來類文件是參數,並不是來自STDIN。我也嘗試玩過FOR命令,但我無法弄清楚如何使它成爲一條線。

我錯過了一些明顯的東西嗎?

非常感謝! 女士植物

+0

這是否'*/* class'剛剛獲得的子目錄中的所有.class文件。文件在哪裏運行? –

+0

'*/*。class'獲取存儲在當前目錄的子目錄中的所有類文件。謝謝! – msplants

+0

也許在PowerShell中...'gci -recurce -filter * .class | %{jar cvf JarName.jar $ _。FullName}' –

回答

1

如果文件夾樹中只包含要在.jar文件,你可以做到這一點,包括文件:

jar cvf JarName.jar . 

否則最簡單的方法可能是隻有通過robocopy的類文件複製的文件夾結構,然後jar重複:

robocopy "C:\path\to\classdir" "C:\path\to\classdir_dup" *.class /s 
jar cvf JarName.jar -C "C:\path\to\classdir_dup" . 
rd /s /q "C:\path\to\classdir_dup" 
+1

Thanks Ansgar!我必須添加的唯一東西是robocopy命令的'/ S'選項,這就像一個魅力。謝謝! – msplants

0

我可能會錯過一些東西,但你只是想要添加所有子目錄中的所有類文件?我認爲它的工作原理是這樣的:

jar cvf JarName.jar *.class 
+0

這不會遞歸到子文件夾中。 –

+0

感謝您的回答,nograpes,但Ansgar是正確的 - 它不會遞歸到子目錄中。我有一個以上的子目錄,每個子目錄都有應該包含在jar中的類文件... – msplants