2017-06-02 62 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()这是更方便。

相关问题