2013-07-29 118 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