2012-03-16 39 views
1

要簡短 - 我已經在Java中編寫了一個小的Parser.class,併爲它執行了一個小批處理腳本:java解析器「%1」 想法是我想將日誌文件拖放到批處理腳本上,然後將其作爲參數傳遞給我的類。 到目前爲止,如果我把日誌文件放在與批處理腳本和java類相同的文件夾中,那麼一切正常。但是,如果日誌文件是例如在桌面上,我將它直接拖到另一個文件夾中的批處理文件中,我收到無法找到或加載主類解析器的錯誤。 有什麼想法可能是錯誤的嗎?我希望能夠將日誌文件從任何位置拖放到批處理中。批處理文件說無法找到或加載主類

編輯: 這是我的批處理腳本:

@echo off&&setLocal EnableDelayedExpansion 
if "%1"=="" ( 
echo Please drag your file onto the icon. 
echo. 
pause&&goto :eof) 
cls 
java Parser "%~1" 

任何想法,現在做什麼?應使用「〜」避免文件路徑中的空格問題,正如我所說的,當所有文件位於同一文件夾中時,我的批處理腳本將按預期工作...

回答

0

您是否嘗試顯示%1
然後你會看到窗戶有時會用引號括起來。

所以你的命令將擴大到像

java Parser ""C:\documents & setting\mytest.log"" 

爲了解決這個問題,你可以簡單的使用波浪語法(去除封閉引號)

java Parser "%~1" 

但是還有一個問題,有時窗戶沒有按不要用引號括起關鍵內容。

Cool&Stuff.mp3
這將創建一個奇怪的錯誤,也不能使用%1%~1來解決,那麼你需要使用%cmdcmdline%變量,在Drag and drop batch file for multiple files

1

這聽起來像批處理文件描述的是假設「當前工作目錄」的默認類路徑足夠好 - 但如果當前工作目錄是某個任意文件夾,則不會這樣。

如果這僅僅是爲了方便和類文件不會移動,你可以硬編碼的類路徑:

java -cp c:\foo\bar Parser "%1" 

(其中c:\foo\bar是包含類文件的目錄)。爲了更健壯的方法,你應該讓它檢測批處理文件的位置,但是我不知道該怎麼辦...

一旦你解決了找不到類的問題,你可能碰上其他意見和回答中提到的報價問題 - 但是,直到你能得到你的代碼運行,沒有其他相關:)

1

我沒有看到你的bat文件的內容,但我想你做一個通常的蝙蝠文件初學者的錯誤。例如,你可能忘記圍繞路徑,包含帶雙引號的空格。在你的情況,這將是這樣的:

java MyClass "%1" 

java -cp MyClass "%1" 

java -jar myJar.jar "%1" 

還是應該在begini做

**'cd %~dp0'**

ng腳本讓腳本知道tnat java class在當前目錄中。

+0

你好,謝謝你的回覆。這是我的批處理腳本: 關閉@echo && SETLOCAL EnableDelayedExpansion 如果 「%1」 == 「」( 回聲請拖動文件到圖標 回聲 暫停&&轉到:。EOF) CLS Java解析器「%〜1 「 暫停 任何想法現在該做什麼? – 2012-03-16 08:58:41

相關問題