<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Удалить строку из файла и перезаписать его]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=16261&amp;type=atom" />
	<updated>2021-04-15T07:54:43Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=16261</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Удалить строку из файла и перезаписать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=147345#p147345" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong> Я так в гугле прочитал ) Ну видимо неправильно воспринял информацию. Принцип работы регулярного выражения теперь полностью для меня понятен. Копилка знаний пополнилась. Еще раз спасибо!</p>]]></content>
			<author>
				<name><![CDATA[blackgorod]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41646</uri>
			</author>
			<updated>2021-04-15T07:54:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=147345#p147345</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Удалить строку из файла и перезаписать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=147344#p147344" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>blackgorod пишет:</cite><blockquote><p>Про невертикальный разделитель впервые узнал</p></blockquote></div><p>Почему вы это называете разделителем? Это просто любой символ, кроме символа переноса строки.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2021-04-15T07:40:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=147344#p147344</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Удалить строку из файла и перезаписать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=147343#p147343" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong> Спасибо, более менее понятно стало. Значит поиск идет от невертикального разделителя,&nbsp; то есть собственно начало любой строки, и до \R, т.е. до перевода строки. А \R это любой разделить, хоть \r хоть \n хоть \r\n. Если я все верно конечно понял. Про невертикальный разделитель впервые узнал. Спасибо вам за помощь! <br />И про Perl тоже очень полезная информация, а то я все в JavaScript языке тестировал регулярки</p>]]></content>
			<author>
				<name><![CDATA[blackgorod]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41646</uri>
			</author>
			<updated>2021-04-15T07:30:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=147343#p147343</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Удалить строку из файла и перезаписать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=147342#p147342" />
			<content type="html"><![CDATA[<p>AHK использует <a href="http://www.pcre.org/pcre.txt">Perl-compatible regular expressions</a>.<br /></p><div class="quotebox"><blockquote><p>\v&nbsp; &nbsp; &nbsp;any vertical white space character<br />\V&nbsp; &nbsp; &nbsp;any character that is not a vertical white space character</p></blockquote></div><div class="quotebox"><blockquote><p>Outside a character class, by default, the escape sequence&nbsp; \R&nbsp; matches<br />any&nbsp; Unicode newline sequence.</p></blockquote></div><p>Про \R написано и в справке <a href="https://www.autohotkey.com/docs/misc/RegEx-QuickRef.htm">AHK</a>.<br />Тестировать можно <a href="https://regex101.com/">здесь</a>, если разобраться, как оно работает.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2021-04-15T06:44:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=147342#p147342</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Удалить строку из файла и перезаписать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=147340#p147340" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong> Сработало!! Удаляет единственную строку как и требуется. Я счастлив! Если несложно, объясните:<br />1) Что значит \V и \R<br />2) Какой язык регулярных выражений использует AHK?<br />Просто я с регулярками нечасто сталкивался, в основном в других софтах, у меня стоит RegexBuggy, я в ней тестирую/составляю рег. выражения. Но \V&nbsp; и \R он красным выделил, то есть не понимает. Есть выбор языков, перебрал все, тоже красным подсвечивает. Не понимаю. А хочется понять как это выражение работает. Либо может подскажите где об этом почитать?</p>]]></content>
			<author>
				<name><![CDATA[blackgorod]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41646</uri>
			</author>
			<updated>2021-04-15T03:07:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=147340#p147340</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Удалить строку из файла и перезаписать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=147339#p147339" />
			<content type="html"><![CDATA[<p><strong>__Михаил__</strong><strong>Alectric</strong> Мне сложно вам объяснить всю цепочку и последовательность скриптов. Ну представьте что есть куча разных папок, в каждой есть свои уникальные скрипты, в каждом идет работа со своим списком, у каждой папке есть так называемые свои собственные черные и белые списки которая относится к конкретной лишь папке. Можно конечно таскать скрипт и через A_ScriptDir будет браться текущий список из текущей папке, либо создать отдельный скрипт для работы со списками, или даже функцию и сделать один глобальный скрипт, но это невозможно. Я обо всем этом подумал. Там каждый скрипт делает некие уникальные действия, у каждого свои таймауты выполнения. Скрипты запускаются внешними программами. Если можно было сделать так как вы описали, поверьте я бы так и сделал, где то нужна рандомизация списка, где то не нужна, где то нужно брать строку и записывать ее в текущую папку в другой файл где лежит список, а где этого не нужно делать. В каких то скриптах будет сравниваться списки, чистятся дубли, в каких то нет.</p>]]></content>
			<author>
				<name><![CDATA[blackgorod]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41646</uri>
			</author>
			<updated>2021-04-15T02:31:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=147339#p147339</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Удалить строку из файла и перезаписать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=147334#p147334" />
			<content type="html"><![CDATA[<p>Зачем держать кучу отдельных файлов в разных папках? Можно все нужное для работы скрипта держать в одном файле и копировать всего 1 файл при переносе на другой ПК и не думать о других файлах которые где-то должны лежать.</p>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2021-04-14T16:51:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=147334#p147334</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Удалить строку из файла и перезаписать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=147333#p147333" />
			<content type="html"><![CDATA[<p>Зачем вставлять один и тот же рабочий участок кода во все свои скрипты? Можно и нужно для этого сохранить как *.ahk скрипт в виде функции / метки, затем переместить в библиотеку, из которой будет использоваться во всех скриптах.</p>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2021-04-14T15:31:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=147333#p147333</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Удалить строку из файла и перезаписать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=147331#p147331" />
			<content type="html"><![CDATA[<p>Попробуйте так:<br /></p><div class="codebox"><pre><code>file := &quot;C:\список.txt&quot;
FileReadLine, line, % file, 1
FileRead, All, % file
FileOpen(file, &quot;w&quot;).Write(RegexReplace(All, &quot;^\V*\R?&quot;))</code></pre></div><p>Не проверял.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2021-04-14T15:11:20Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=147331#p147331</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Удалить строку из файла и перезаписать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=147330#p147330" />
			<content type="html"><![CDATA[<p><strong>__Михаил__</strong> Главного нет, там все смешалось в кучу, bas, кликер, ahk скрипты. Каждый скрипт делает свою задачу. работает скажем со своей папкой а значит и со своим списком, через несколько секунд уже другая папка становится главной и с ней работает другая рабочая пара скриптов. Ну в теории это пока так, а на практике много кода выходит, причем корявого. Поэтому я лишь хочу совета, лучше всего если это будет готовый пример. Как переделать (и можно ли) чтобы данный код </p><div class="codebox"><pre><code>file := &quot;C:\список.txt&quot;
FileReadLine, line, %file%, 1
FileRead, All, % File
FileOpen(File, &quot;w&quot;).Write(RegexReplace(All, &quot;^.*`r`n&quot;))</code></pre></div><p> удалял оставшуюся единственную строку из файла? Либо есть есть альтернативный вариант чтения и удаления строк, то подскажите. Единственное не хочется чтобы код был большим громоздким. Потому что скриптов много и кусок кода будет вставляться в разные участки скрипта и разных скриптов. Буду очень благодарен за пример. Я собственно пришел спросить совета можно ли это лаконично и кратко реализовать, в ahk я разбираюсь плохо, но я учусь и на готовом примере я быстрее соображу что и как работает.</p>]]></content>
			<author>
				<name><![CDATA[blackgorod]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41646</uri>
			</author>
			<updated>2021-04-14T14:59:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=147330#p147330</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Удалить строку из файла и перезаписать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=147329#p147329" />
			<content type="html"><![CDATA[<p>Тогда легче думаю сделать один главный скрипт. Он будет напрямую в остальные кидать нужные строки на обработку, через этот же главный делать основные действия с копированием файла (если оно так нужно).</p>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2021-04-14T14:37:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=147329#p147329</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Удалить строку из файла и перезаписать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=147328#p147328" />
			<content type="html"><![CDATA[<p><strong>__Михаил__</strong> Ну потому что работа идет не одним скриптом, а несколькими, запуск скриптов будет производится внешней программой. В реальности там все гораздо сложнее, этот самый файл со списком, будет являться копией оригинального файла. То есть изначально через команду sort будет перемешиваться список, затем создаваться копия этого списка, помещаясь в папку temp, а затем по порядку брать строки с удалением до победного, эти самые строки будут брать различные скрипты. После того как файл список.txt обработается будет пауза, затем снова копирование списка из оригинала, перемешивание и снова взятие строки с удалением до победного и так по кругу. Поэтому и нужна запись в файла, но суть заключается в том, чтобы этот самый файл был растерзан другими скриптами до победного</p>]]></content>
			<author>
				<name><![CDATA[blackgorod]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41646</uri>
			</author>
			<updated>2021-04-14T13:31:04Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=147328#p147328</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Удалить строку из файла и перезаписать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=147325#p147325" />
			<content type="html"><![CDATA[<p>Я лично всегда открывал файл целиком, считывал его данные и пока с ним работаю ничего не сохранял обратно - зачем лишний раз использовать чтение / запись с диска? Тем более когда строк много это лишний износ.<br />В ситуации когда файл будет использоваться несколькими программами / скриптами, тогда имеет ещё смысл открывать-сохранять постоянно. Но почему бы тогда не решать задачу в одной программе?</p>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2021-04-14T12:56:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=147325#p147325</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Удалить строку из файла и перезаписать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=147323#p147323" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong> Ну извините, подумал вы троллите меня ) Проблема в том, что я ищу описание команд в справке, в основном в русскоязычной, пытаюсь понять что и как работает. Но целиком представления как реализовать это не могу. Отдельного взятыми кусками кода получается орудовать. Но результат выходит не тот который бы хотелось.<br /></p><div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>читать файл построчно, все строки, кроме самой первой, добавлять в переменную. Так у вас получится текст без первой строки</p></blockquote></div><p>А можно ли увидеть пример воочию? читать файл построчно с помощью Loop? А нельзя ли более проще как то реализовать, вот допустим как в этом коде что я приводил раньше<br /></p><div class="codebox"><pre><code>file := &quot;C:\список.txt&quot;
FileReadLine, line, %file%, 1
FileRead, All, % File
FileOpen(File, &quot;w&quot;).Write(RegexReplace(All, &quot;^.*`r`n&quot;))</code></pre></div><p>Через filereadline я получаю первую строку, что мне и нужно, по сути только нужно эту строку удалить, команда FileRead понятна, но вот последняя команда FileOpen не совсем ясна, идет запись в файл с применением регулярного выражения. Где и что режется что подменяется это непонятно для меня. ^.*`r`n это поиск сначала строки до перевода строки. Но в любом случае скрипт работает, пока не остается одна лишь строка. Вот эта единственная строка не удаляется, можно ли одной строкой кода ее удалить?</p>]]></content>
			<author>
				<name><![CDATA[blackgorod]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41646</uri>
			</author>
			<updated>2021-04-14T11:39:30Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=147323#p147323</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Удалить строку из файла и перезаписать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=147322#p147322" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>blackgorod пишет:</cite><blockquote><p>Вы троллите?</p></blockquote></div><p>Нет, вовсе нет. Странно, что попытка добиться от вас примерного описания команд скрипта воспринимается вами, как троллинг. Я подумал, вы понимаете, что именно нужно делать, но не знаете, как это записать, значит, я ошибался.<br /></p><div class="quotebox"><cite>blackgorod пишет:</cite><blockquote><p>Из файла с пятью строками, на выходе должен быть файл с 4 строками (первая строка удаляется)</p></blockquote></div><p>Можно, например, читать файл построчно, все строки, кроме самой первой, добавлять в переменную. Так у вас получится текст без первой строки. Потом удаляете файл, и записываете заново с новым текстом. Теперь у вас есть алгоритм. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2021-04-14T10:55:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=147322#p147322</id>
		</entry>
</feed>
