2017-06-02 63 views
0

我目前正在嘗試構建一個AutoIT腳本的框架,我將用它來保存一些數量非常小的文件給他們一定的次數基本上是這樣的:如何使一個文件內容和名稱增加+1一定的次數

用戶插入他們想要的文件數。

記事本打開並寫入File1。

自動保存爲File1.txt

記事本寫入File2。

自動保存爲File2.txt。

依此類推。

我已經能夠在pywinauto中弄明白這一點,但是當我試圖將它應用到我想要使用它的實際程序時,我無法識別出需要編輯的區域。所以現在我嘗試它的AutoIt我在完全沒有經驗

這是我到目前爲止有:

$NumVar = 0 
Run('Notepad') 
WinWait('Untitled - Notepad') 
While ($NumVar < 5) 
    ;Run('Notepad') 
    ;WinWait('Untitled - Notepad') 
    Send('File' & $NumVar) 

    Send('^s') 
    WinWaitActive("Save As") 
    Send("test" & $NumVar & ".txt") 
    Send("{ENTER}") 
    WinActivate("test" & $NumVar) 
    $NumVar = $NumVar + 1 

    ;WinWaitActive("test" & $NumVar & "- Notepad") 
WEnd 
($NumVar > 5) 

然而,這之後的作品的第一個文件,我得到類似

「File0

fFFFiiiilllelee3e42s!SFile4」

打印到記事本。

任何幫助,這將不勝感激。

+1

我認爲你應該嘗試做一次沒有循環,並通過每一步。例如。你做的第一件事之一是運行記事本。之後,你進入一個循環並再次運行記事本。 –

+0

爲什麼使用發送和運行而不是本地AutoIt函數來創建文件?看看'FileWrite' /'FileRead' https://www.autoitscript.com/autoit3/docs/ – Yaerox

回答

0

腳本是不正確的,但你會發現細節和使用簡單的調試技術解決的問題:

  • 認沽延遲到腳本Sleep(),所以你可以看到每一步的進行逐個而不是快速閃爍屏幕
  • 使用_DebugOut()打印評論,所以你知道,哪一步正在執行。

當前腳本邏輯是不正常:

  • 打開記事本
  • 類型File0和命中ctrl+s。出現「另存爲」對話框。
  • 類型test0.txt並按回車。您的文件現在保存到「test0.txt」中,記事本的標題更改爲文件名,文件內容顯示在記事本中。
  • 現在事情變壞了。腳本從頭開始循環:它輸入File1,它被附加到File0文本中。
  • 點擊ctrl+s不強制「另存爲」對話框。記事本已經知道,「test0.txt」正在被編輯,所以「test0.txt」只是簡單地保存在File0File1
  • 腳本等待激活「另存爲」對話框,但它永遠不會發生,所以腳本永遠等待。
  • 你可以從托盤圖標殺死卡住的腳本,但你似乎啓動腳本的第二個實例,所以他們開始干擾。一旦第二個實例打開「另存爲」對話框,兩個實例都會將文本打印到其中,導致混亂。

所以你對記事本狀態的期望是錯誤的,這是原因。

一個重要提示:直接使用文本編輯器進行文件操作並不是最簡單也不是最可靠的工作方式。你應該看看FileWrite()這是更方便。

相關問題