2013-07-29 120 views
0

我寫了我的第一個腳本,通過Apple的autoingestion.class下載下載報告。 OSX 10.7.5在大多數情況下工作正常,但在OSX 10.8下,它有時會重命名文件或將終端文本放在applescript編輯器中。與OSX的Applescript終端10.8

任何人都知道如何解決/改善這個?

tell application "Terminal" 
activate 
delay 1 #give time to activate Terminal 

tell application "System Events" 
    keystroke "cd " & ingestPath #path to autoingestion.class 
    keystroke return 
    keystroke "java Autoingestion " & userName & " " & userPW & " " & vendorID & " S D S " & reportDate 
    keystroke return 
end tell 

delay 0.1 
set frontWindow to window 1 
repeat until busy of frontWindow is false 
    delay 1 
end repeat 
#display dialog "finished" 
#quit end tell 

THX您的時間傢伙

EDIT1: THX的快速解答!我嘗試了第二部分,它給了我一個Java錯誤,任何想法? 只要我再次獲得另一臺macbook,就試試延遲。

MacBook-Pro:~ USER$ java '/Volumes/STICK/Projekte/App_Statstiken/Apple/sales/Autoingestion' USERNAME PW VENDORID S D S 20130718 
Exception in thread "main" java.lang.NoClassDefFoundError: /Volumes/STICK/Projekte/App_Statstiken/Apple/sales/Autoingestion 
Caused by: java.lang.ClassNotFoundException: .Volumes.STICK.Projekte.App_Statstiken.Apple.sales.Autoingestion 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 

EDIT2: FYI:更新爲使用propertie來保存用戶名和userPW新autoingestion.class。

set exePath to ingestPath 
do script "java -cp " & (exePath & space & "Autoingestion autoingestion.properties" & space & vendorID & " S D S " & reportDate) 

錯誤autoingestion.properties缺少,altough

keystroke "java Autoingestion " & "autoingestion.properties" & " " & vendorID & " S D S " & reportDate 

工作。我試圖把這個路徑放在propertie文件的前面,但沒有幫助。 任何想法?

工作:

do script "cd " & ingestPath & ";java Autoingestion " & userName & " " & userPW & " " & vendorID & " S D S " & reportDate 
+0

爲什麼不直接爲此創建一個bash腳本?它是否必須是AS? – scohe001

+0

因爲我從來沒有寫過bash。此外,該腳本還多一點。檢查,下載,解壓縮和移動文件。也計劃將新下載的數據放入excel – Timm

回答

0

很多次擊鍵時,AppleScript的代碼的運行速度比計算機接口可以更快地進行打字...所以你有問題。解決方法是在輸入命令之間加入短暫的延遲,以使計算機界面可以執行鍵入操作。此外,您的System Events代碼不應位於「tell application Terminal」代碼塊內。

試試這個。您可以使用normalDelay和shortDelay時間進行遊戲,以根據需要使其更長或更短。

set normalDelay to 1 
set shortDelay to 0.2 

tell application "Terminal" to activate 
delay normalDelay --give time to activate Terminal 

tell application "System Events" 
    keystroke "cd " & ingestPath --path to autoingestion.class 
    delay shortDelay 
    keystroke return 
    delay shortDelay 
    keystroke "java Autoingestion " & userName & " " & userPW & " " & vendorID & " S D S " & reportDate 
    delay shortDelay 
    keystroke return 
    delay shortDelay 
end tell 

tell application "Terminal" 
    set frontWindow to window 1 
    repeat until busy of frontWindow is false 
     delay normalDelay 
    end repeat 
end tell 

display dialog "finished" 

:我還沒有試過,但你可以簡化你的代碼如下...

set exePath to ingestPath & "Autoingestion" 

tell application "Terminal" 
    activate 
    do script "java " & quoted form of exePath & space & userName & space & userPW & space & vendorID & " S D S " & reportDate 

    set frontWindow to window 1 
    repeat until busy of frontWindow is false 
     delay 1 
    end repeat 
end tell 

display dialog "finished" 

編輯:如果你是有路徑和其他錯誤的問題(如您的意見中所述),那麼也許這種方法將起作用。試試這個作爲你的腳本命令。如果keystroke方法起作用,那麼這就像那樣。

do script "cd " & ingestPath & ";java Autoingestion " & userName & " " & userPW & " " & vendorID & " S D S " & reportDate 
+0

thx中作爲答案,請參閱Edit1頁;) 不正確的猜測其類別描述爲 「java.lang.ClassNotFoundException:。Volumes.STICK.Projekte.App_Statstiken.Apple.sales.Autoingestion「 但是如何解決? – Timm

+0

我覺得在Mountain Lion上,Java並沒有與操作系統一起安裝,也許你需要安裝它嗎?只是猜測。 www.java.com/en/download/faq/java_mac.xml – regulus6633

+0

在安裝了java的osx 10.7.5下無法正常工作,do腳本命令的路徑似乎有問題 – Timm