26 (изменено: DD, 2018-05-07 09:04:51)

Re: AHK: Удаление одинаковых строк из файла №2, содержащихся в файле №1

Как можно было бы изменить последний код из поста №23, чтобы уникальные строки каждого файла не объединялись в новый, а перезаписывались в обрабатываемые файлы, либо переносились в новые файлы — под теми же именами — в другое место?


SetBatchLines -1
FileRead, file1, 1.txt
FileRead, file2, 2.txt
loop 2
{
   If A_Index = 1
      a := file1, b := file2
   Else
      a := file2, b := file1
   obj := []
   loop, parse, a, `n, `r
      obj[A_LoopField] := 1
   loop, parse, b, `n, `r
      res .= !obj[A_LoopField] ? (res?"`n":"") A_LoopField : ""
}
MsgBox % res

27

Re: AHK: Удаление одинаковых строк из файла №2, содержащихся в файле №1

Нужно почитать про тернарные операторы и изменить эту строчку:

res .= !obj[A_LoopField] ? (res?"`n":"") A_LoopField : ""

28

Re: AHK: Удаление одинаковых строк из файла №2, содержащихся в файле №1

Понял, что там условие. Но как развести разницу в два файла, а не объединять её?

29

Re: AHK: Удаление одинаковых строк из файла №2, содержащихся в файле №1

После "loop 2" вставьте res := "".

30

Re: AHK: Удаление одинаковых строк из файла №2, содержащихся в файле №1

Тоже не выходит. Мне надо развести разницу в два файла по такому типу —

SetBatchLines -1
FileRead, file1, 1.txt
FileRead, file2, 2.txt
loop 2
{
res := ""
   If A_Index = 1
      a := file1, b := file2
   Else
      a := file2, b := file1
   obj := []
   loop, parse, a, `n, `r
      obj[A_LoopField] := 1
   loop, parse, b, `n, `r
      res .= !obj[A_LoopField] ? (res?"`n":"") A_LoopField : ""
}
fileappend % obj, %a_desktop%/1.txt
fileappend % res, %a_desktop%/2.txt

31

Re: AHK: Удаление одинаковых строк из файла №2, содержащихся в файле №1

Пример приведите файлов и результат.

32 (изменено: DD, 2018-05-08 21:07:58)

Re: AHK: Удаление одинаковых строк из файла №2, содержащихся в файле №1

Вот пример —


SetBatchLines -1
file1 =
(
   SetWorkingDir, %A_ScriptDir%
   If !ErrorLevel MsgBox
   Tooltip,Sleep,900
)
file2 =
(
   If !ErrorLevel MsgBox
   Tooltip,Sleep,900
   Tooltip
)
loop 2
{
res := ""
   If A_Index = 1
      a := file1, b := file2
   Else
      a := file2, b := file1
   obj := []
   loop, parse, a, `n, `r
      obj[A_LoopField] := 1
   loop, parse, b, `n, `r
      res .= !obj[A_LoopField] ? (res?"`n":"") A_LoopField : ""
}
msgbox % file1
msgbox % file2

Надо бы, чтоб вышло два вывода, с уникальным содержимым для file1 и file2. Для file1 — это строка "SetWorkingDir, %A_ScriptDir%", а для file2 — строка "Tooltip".

33

Re: AHK: Удаление одинаковых строк из файла №2, содержащихся в файле №1

А в чём сложность?

SetBatchLines -1
file1 =
(
SetWorkingDir, %A_ScriptDir%
If !ErrorLevel MsgBox
Tooltip,Sleep,900
)
file2 =
(
If !ErrorLevel MsgBox
Tooltip,Sleep,900
Tooltip
)

loop 2
{
   res := ""
   If A_Index = 1
      a := file1, b := file2
   Else
      a := file2, b := file1
   obj := []
   loop, parse, a, `n, `r
      obj[A_LoopField] := 1
   loop, parse, b, `n, `r
      res .= !obj[A_LoopField] ? (res?"`n":"") A_LoopField : ""
   msgbox % res
}

34

Re: AHK: Удаление одинаковых строк из файла №2, содержащихся в файле №1

Сложность в том, что так весь результат опять идёт в один файл, а мне надо в два.

35

Re: AHK: Удаление одинаковых строк из файла №2, содержащихся в файле №1

В коде результат идет не в файл, а в переменную res.
Идёт 2 цикла, в начале каждого цикла переменная res обнуляется.

SetBatchLines -1
file1 =
(
SetWorkingDir, %A_ScriptDir%
If !ErrorLevel MsgBox
Tooltip,Sleep,900
)
file2 =
(
If !ErrorLevel MsgBox
Tooltip,Sleep,900
Tooltip
)

loop 2
{
   res := ""
   If A_Index = 1
      a := file1, b := file2
   Else
      a := file2, b := file1
   obj := []
   loop, parse, a, `n, `r
      obj[A_LoopField] := 1
   loop, parse, b, `n, `r
      res .= !obj[A_LoopField] ? (res?"`n":"") A_LoopField : ""
   out%A_Index% := res
}
msgbox % out1
msgbox % out2
+ DD