2014-10-09 36 views
0

我想在我的自動化代碼Eclipse中編寫用於文件上傳的AutoIt腳本。我保留我的文件上傳到Project/resources/my_file.txt在Eclipse中爲AutoIt腳本獲取文件的運行時間路徑

我已經寫FileUpload.au3爲:

WinWait("File Upload","",10) 
ControlFocus("File Upload","","Edit1") 
Sleep(2000) 
ControlSetText("File Upload" , "", "Edit1", "resources/my_file.txt") 
Sleep(2000) 
ControlClick("File Upload" , "","Button1"); 

如果我編譯上面的文件,並創建FileUpload.exe並調用FileUpload.exe在我的代碼,這個問題是該文件的路徑是上傳,因爲這將不同系統的系統。

如何獲取資源/ my_file.txt的絕對路徑並在運行時在我的AutoIt腳本中使用它?

+0

嗯,你可以嘗試使用像這樣的WorkingDir宏:@WorkingDir&'resources/my_file.txt'。 – 2014-10-09 12:35:35

+0

@ Mr.Hargrove你好,謝謝你的回覆,但我沒有得到你的正確.... – fresher 2014-10-09 16:18:29

+0

@fresher哈格羅夫先生說的是,你應該嘗試用'@WorkDir'宏調用'ControlSetText'宏:'ControlSetText(「文件上傳」,「」,「Edit1」,@WorkingDir&「resources/my_file.txt」)'。 – mrt 2014-10-09 18:34:27

回答

1

特殊數組$ cmdLine使用傳遞給您的AutoIt腳本的命令行參數進行初始化。請注意,腳本名不會被分類爲參數;改爲使用@ScriptName獲取此信息。包含空格的參數必須用「雙引號」包圍。編譯腳本以相同的方式接受命令行參數。

$的CmdLine [0]是的參數數 $的CmdLine [1]是參數1(腳本名稱之後) $的CmdLine [2]是參數2等 ... $的CmdLine [$的CmdLine [0 ]]是一個辦法讓最後一個參數...

所以,如果你的腳本運行是這樣的:

AutoIt3.exe myscript.au3 param1 "this is another param" 

$的CmdLine [0]等於... 2

$的CmdLine [ 1]等於... param1

$的CmdLine [2]等於...這是另一個PARAM

@ScriptName等於... myscript.au3

除了$ CMDLINE有一個名爲$ CmdLineRaw包含整個變量命令行未分離

下面是它應該如何在你的情況下進行:

WinWait("File Upload","",10) 
ControlFocus("File Upload","","Edit1") 
Sleep(2000) 
ControlSetText("File Upload" , "", "Edit1", $CmdLineRaw) 
Sleep(2000) 
ControlClick("File Upload" , "","Button1"); 

然後你發送一個命令行參數,當你調用編譯AutoIt的

Run("FileUpload.exe resources/my_file.txt") 
+0

非常感謝。它的工作。現在我可以動態地發送文件的路徑。 – fresher 2014-10-10 13:24:34

相關問題