尝试使用AutoIt擦除文件

时间:2015-08-10 18:56:12

标签: search append line autoit

我使用的是一个在升级过程中输出sql脚本的软件。我正在尝试创建一个工具来读取文件并附加" ON IndexDataFile"到包含" CREATE INDEX"的行或"创建独特的索引" 我打开该文件并使用FileOpen和FileReadLine将每一行写入新文件。尽管通过Google和特定论坛进行了大量搜索,但我无法弄清楚如何搜索每一行并在找到其中一个值时附加到该行。

这是我用来写入新文件的循环:

  While 1
    $line_read = FileReadLine($handle_read)
      If @error Then ExitLoop
    ;Code to evaluate line and append text when true
    FileWriteLine($handle_write, $line_read)
  WEnd

有人可以给我一个关于如何测试字符串的提示,并在需要时附加或者有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

我能够通过以下方式解决它:

While 1
  $line_read = FileReadLine($handle_read)
  If @error Then ExitLoop
  If StringRegExp ( $line_read, "CREATE INDEX") Then $line_read = $line_read & " ON IndexData"
  If StringRegExp ( $line_read, "CREATE UNIQUE INDEX") Then $line_read = $line_read & " ON IndexData"
  FileWriteLine($handle_write, $line_read)
WEnd

答案 1 :(得分:1)

在一行中,它将如此简单:

$line_read = StringRegExpReplace($line_read, "(CREATE\ (?:UNIQUE\ )?INDEX)", "\1 ON IndexData")

您可以在regex101.com上测试您的RegEx,以确保它按预期工作。

或者,如果您更喜欢使用“或”符号|进行阅读,那么您可以用不同的方式编写表达式:

$line_read = StringRegExpReplace($line_read, "(CREATE\ INDEX|CREATE\ UNIQUE\ INDEX)", "\1 ON IndexData")