Author Topic: Создание копии файла  (Read 3792 times)

0 Members and 1 Guest are viewing this topic.

justitdo

  • Освоившийся
  • **
  • Posts: 45
    • View Profile
Создание копии файла
« on: September 24, 2015, 03:11:40 PM »
Здравствуйте. Подскажите, пожалуйста, код для создания копии заданного файла. Мне нужно, чтобы в конце моего скрипта, создавалась копия текстового файла, к примеру 1.txt, и каждый раз заменяла стаую.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Создание копии файла
« Reply #1 on: September 24, 2015, 03:58:22 PM »
Создай бат файл "Run.bat" с такой строкой (ну естественно путь к файлу у тебя будет свой)
Code: [Select]
copy /Y "C:\Clickermann\projects\Мой проект\1.txt" "C:\Clickermann\projects\Мой проект\1_copy.txt"
В скрипте напиши такую команду
Code: (clickermann) [Select]
EXECUTE("Run.bat")
Если не знаешь, Бат файл это обычный текстовый файл только с расширением .bat
« Last Edit: September 24, 2015, 04:00:19 PM by Oraven »

justitdo

  • Освоившийся
  • **
  • Posts: 45
    • View Profile
Re: Создание копии файла
« Reply #2 on: September 24, 2015, 04:58:10 PM »
Очень интересный подход!  :o А можно поинтересоваться; нафига Козе баян? ::)
Если создаётся именно копия, а не чем-то отличный файл и потом сохраняется с тем-же названием в том же месте, а оригинал удаляется, то в чем ссуть? :-\
Поинтересоваться можно конечно.  Оригинал не удаляется, удаляется старая копия и перезаписывается новой. А баян Козе для того, чтобы не потерять данные, что собственно сегодня у меня и произошло, как раз во время записи данных в файл обрубили электричество, в итоге пустой текстовик и потерянная база за несколько месяцев работы скрипта, если бы я неделю назад ручками копию не сделал.

justitdo

  • Освоившийся
  • **
  • Posts: 45
    • View Profile
Re: Создание копии файла
« Reply #3 on: September 24, 2015, 06:41:31 PM »
Создай бат файл "Run.bat" с такой строкой (ну естественно путь к файлу у тебя будет свой)
Code: [Select]
copy /Y "C:\Clickermann\projects\Мой проект\1.txt" "C:\Clickermann\projects\Мой проект\1_copy.txt"
В скрипте напиши такую команду
Code: (clickermann) [Select]
EXECUTE("Run.bat")
Если не знаешь, Бат файл это обычный текстовый файл только с расширением .bat
Спасибо, сделал)

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Создание копии файла
« Reply #4 on: September 24, 2015, 06:49:46 PM »
Поинтересоваться можно конечно.  Оригинал не удаляется, удаляется старая копия и перезаписывается новой. А баян Козе для того, чтобы не потерять данные, что собственно сегодня у меня и произошло, как раз во время записи данных в файл обрубили электричество, в итоге пустой текстовик и потерянная база за несколько месяцев работы скрипта, если бы я неделю назад ручками копию не сделал.
чтото тут не вяжется. если ты пишеш в файл, то с какого токого он очистился при выкл эл-ве?!
ты же не в переменных держиш данные, а записываеш их в файл. другое дело что вырубило эл-во в момент записи и строка запишется с ошибкой хоть и вероянтность этого ничтожно мала, запись происходит за мс-ды, но все равно все данные записанные ранее не куда не денутся.

насчет батника, можно упростить. путь к текстовым файлам можно записать относительно бат-файла. вот вариант, если бат-файл находится в одной папке с текстовиками.
Code: [Select]
copy /Y %~dp0\1.txt %~dp0\1_copy.txt

justitdo

  • Освоившийся
  • **
  • Posts: 45
    • View Profile
Re: Создание копии файла
« Reply #5 on: September 24, 2015, 07:51:54 PM »
чтото тут не вяжется. если ты пишеш в файл, то с какого токого он очистился при выкл эл-ве?!
ты же не в переменных держиш данные, а записываеш их в файл. другое дело что вырубило эл-во в момент записи и строка запишется с ошибкой хоть и вероянтность этого ничтожно мала, запись происходит за мс-ды, но все равно все данные записанные ранее не куда не денутся.
Там в файле одна строка, она сначала удаляется, а потом записывается новая вместо нее. Комп потух в тот момент, когда старая строка удалилась, а новая записаться еще не успела, в итоге пустой файл. Хоть и милисекунды, но инфа из файла вполне успешно теряется если остановить скрипт в это время, проверено.

И еще вопросик заодно. Как сделать, чтобы можно было видеть сколько раз определенное условие совпало, а сколько - нет?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Создание копии файла
« Reply #6 on: September 24, 2015, 08:37:53 PM »
Зачем тут мудрить с копированием если все это можно делать из скрипта.

Образец. Перед записью создается копия каждый раз в новый файл.
Code: (clickermann) [Select]
TFWRITE(STRCONCAT("Baza_BAK_"$_date_y,"_",$_date_m,"_",$_date_d,"-",$_time_h,"_",$_time_m,"_",$_time_s,".txt")
, TFREAD("Baza.txt", 1))
TFCLEAR("Baza")
TFWRITE("Baza.txt", "New string")

На счет условий, можно писать статистику в INI.
Code: (clickermann) [Select]
SUB(log,$name,$par) // подпрограмма в верхней части скрипта
   IF($par = 1)
      $n = INT(INIREAD("Log.ini", "Сработало", $name))
      INC($n,1)
      INIWRITE("Log.ini", "Сработало", $n, $name)
   ELSE
      $n = INT(INIREAD("Log.ini", "Не сработало", $name))
      INC($n,1)
      INIWRITE("Log.ini", "Не сработало", $n, $name)
   END_IF
END_SUB
// log("A",1) // образец, первый параметр имя, второй Верно 1 не верно 0



IF($a = 3)
   log("Условие A",1) // вызов подпрограммы с передачей параметров
   
ELSE
   log("Условие A",0)
   
END_IF
« Last Edit: September 24, 2015, 08:39:28 PM by Oraven »

justitdo

  • Освоившийся
  • **
  • Posts: 45
    • View Profile
Re: Создание копии файла
« Reply #7 on: September 24, 2015, 10:28:53 PM »
Если честно, совсем ничего не понял)
Вот к примеру часть моего скрипта:
Code: [Select]
$strclip = FROMCLIP()
WAITMS(50)
$comp = TFREAD("1.txt", 1)
WAITMS(50)
$action = STRPOS($comp, $strclip)
IF($action > 0)
KEYPRESS(#A)
ELSE
TFDELETE ("1.txt", 1)
WAITMS(50)
TFWRITE("1.txt", STRCONCAT($comp,$strclip," "))
WAITMS (150)
KEYPRESS(#B)
END_IF
Куда что писать, чтобы записывалось в ini сколько раз нажалась клавиша A и сколько раз B ?     И еще,  что происходит с форумом? Зайти сюда получается только с нескольких десятков попыток, все время вылетают ошибки базы данных.
« Last Edit: September 24, 2015, 10:30:28 PM by justitdo »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Создание копии файла
« Reply #8 on: September 25, 2015, 07:41:20 AM »
Вот что у тебя должно получиться

Code: (clickermann) [Select]
SUB(log,$name,$par) // подпрограмма в верхней части скрипта
   IF($par = 1)
      $n = INT(INIREAD("Log.ini", "Сработало", $name))
      INC($n,1)
      INIWRITE("Log.ini", "Сработало", $n, $name)
   ELSE
      $n = INT(INIREAD("Log.ini", "Не сработало", $name))
      INC($n,1)
      INIWRITE("Log.ini", "Не сработало", $n, $name)
   END_IF
END_SUB
// образец, первый параметр имя, второй Верно 1 не верно 0
// log("A",1)


$strclip = FROMCLIP()
WAITMS(50)
$comp = TFREAD("1.txt", 1)
$action = STRPOS($comp, $strclip)
IF($action > 0)
   log("action",1)
   KEYPRESS(#A)
ELSE
   log("action",0)
   TFWRITE(STRCONCAT("1_BAK "$_date_y,"-",$_date_m,"-",$_date_d," ",$_time_h,"-",$_time_m,"-",$_time_s,".txt"),$comp) // делаем бэкап
   TFCLEAR("1.txt") // очищаем
   TFWRITE("1.txt", STRCONCAT($comp,$strclip," ")) // записываем новые данные
   WAITMS (150)
   KEYPRESS(#B)
END_IF

Дело не в форуме а в хостере на котором находится много форумов и из за нагрузки такое частенько случается.
« Last Edit: September 25, 2015, 07:49:16 AM by Oraven »