<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Редактирование скрипта без ручного вмешательства.]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=18428</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=18428&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Редактирование скрипта без ручного вмешательства.».]]></description>
		<lastBuildDate>Fri, 18 Apr 2025 18:17:56 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Редактирование скрипта без ручного вмешательства.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162365#p162365</link>
			<description><![CDATA[<p>Действительно, у меня была идея, чтобы скрипт был отдельно, а всё остальное в другом месте, но будто бы так действительно было проще.<br /></p><div class="codebox"><pre><code>Numpad1::

IniFile := A_ScriptDir . &quot;\path.ini&quot;
IniRead, MyLogPath, %IniFile%, LogPath, Path, NoFind

if MyLogPath = NoFind
{
    FileSelectFolder, MyLogPath, , 3, Выберите папку для логов
	if (ErrorLevel)
		return

	IniWrite, %MyLogPath%, %IniFile%, LogPath, Path
}

FileAppend, Log`n, %MyLogPath%\farmlog.txt
Return</code></pre></div><p>Данный код решил проблему.</p>]]></description>
			<author><![CDATA[null@example.com (nakutaru)]]></author>
			<pubDate>Fri, 18 Apr 2025 18:17:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162365#p162365</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Редактирование скрипта без ручного вмешательства.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162364#p162364</link>
			<description><![CDATA[<p><a href="https://forum.script-coding.com/misc.php?action=rules#quotation">Не нужно цитировать</a> предыдущий пост при ответе.<br />А зачем пользователю выбирать, где будет ini-файл? Просто сохраняйте его всегда либо в папке скрипта, либо где-нибудь в A_AppData.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 18 Apr 2025 18:01:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162364#p162364</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Редактирование скрипта без ручного вмешательства.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162363#p162363</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>По горячей клавише сначала считывайте папку из ini, если не считалось, предлагайте выбрать.</p></blockquote></div><p>Раз мы завели разговор про ini-файлы, моя главная проблема в том, что я пытаюсь сделать так, чтобы путь считывался из ini-файла по клавише, без использования выбором папки пользователям каждый раз при открытии скрипта.<br /></p><div class="codebox"><pre><code>numpad1:: ; данная клавиша будет нажата при первом открытии скрипта, далее эта клавиша будет нажиматься только в случае если пользователь захочет сменить путь

FileSelectFolder, LogPath, , 3 ; выбор папки куда будет сохраняться текстовый файл, путь будет сохраняться в переменную LogPath

IniWrite, %LogPath%, %LogPath%\path.ini, LogPath, Path ; создать ini-файл в той же папке которую выбрал пользователь, в самом ini-файле будет скопирован путь этой папки
Return

numpad2:: ; эта клавиша будет нажата в любые моменты в отличие от первой клавиши, она отвечает за сохранение текста в текстовом документе, в той папке которую указал пользователь ранее

IniRead, MyLogPath, %LogPath%\folder.ini, LogPath, Path ; чтение ini-файла и попытка вынести оттуда путь который пользователь указал
FileAppend, Log`n, %MyLogPath%\log.txt ; внести текста лога в текстовый файл используя путь из ini-файла
Return</code></pre></div><p>Проблема в данной строчке:<br /></p><div class="codebox"><pre><code>IniRead, MyLogPath, %LogPath%\folder.ini, LogPath, Path</code></pre></div><p>Из-за того что пользователь указывает путь к папке один раз, при открытие скрипта, он сохраняет его в ini-файле. После открытия скрипта повторно путь уже сохранён в ini-файле (Этот файл будет лежать в указанной папке пользователем до тех пор пока пользователь не захочет сменить путь.) и нужно обратиться к этому файлу дабы вытащить оттуда путь к этой же папке, дабы там же создать текстовый файл и вписать в него текст.<br />Написал как вы посоветовали:<br /></p><div class="codebox"><pre><code>numpad1::

IniRead, MyLogPath, %IniLogPath%\path.ini, LogPath, Path, NoFindIni
if MyLogPath = NoFindIni
{
    FileSelectFolder, IniLogPath, , 3,
	IniWrite, %IniLogPath%, %IniLogPath%\path.ini, LogPath, Path
}

FileAppend, Log`n, %IniLogPath%\farmlog.txt
Return</code></pre></div><p>При первом открытии после нажатия клавиши предложил выбрать папку куда сохранить файл ini. Выбрал, сохранил. После закрытия скрипта и открытия его, снова мне предложил выбрать папку куда сохранить ini файл. Нужно, чтобы при втором открытии не было предложения вновь сохранить ini файл (потому что при первом открытии он уже есть и сохранён), а сразу считал ini-файл и продолжил скрипт. Либо я возможно, что-то не понимаю.</p>]]></description>
			<author><![CDATA[null@example.com (nakutaru)]]></author>
			<pubDate>Fri, 18 Apr 2025 17:42:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162363#p162363</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Редактирование скрипта без ручного вмешательства.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162362#p162362</link>
			<description><![CDATA[<p>По горячей клавише сначала считывайте папку из ini, если не считалось, предлагайте выбрать.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 18 Apr 2025 14:49:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162362#p162362</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Редактирование скрипта без ручного вмешательства.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162361#p162361</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Обычно для сохранения данных между запусками скрипта используется ini-файл. Смотрите команды IniWrite, IniRead.</p></blockquote></div><p>Попытался сделать через ini-файл, однако столкнулся с проблемой.<br /></p><div class="codebox"><pre><code>numpad1::

FileSelectFolder, IniLogFolder, , 3, Укажите путь к папке куда будут сохраняться логи... ; выбрать путь к папке
if IniLogFolder =
    MsgBox, Вы не выбрали папку.
else
    MsgBox, Вы выбрали папку &quot;%IniLogFolder%&quot;.
	sleep 100
	IniWrite, %IniLogFolder%, %IniLogFolder%\folder.ini, LogFolder, Folder ; создать INI файл и поместить в него путь
Return

numpad2::

IniRead, MyLogFolder, %IniLogFolder%\folder.ini, LogFolder, Folder ; обратиться к созданному INI и извлечь путь
sleep 100
FileAppend, Log`n, %MyLogFolder%\farmlog.txt  ; создать текстовый файл в выбранной папке 
Return</code></pre></div><p>После выполнения блока кода при нажатии кнопки numpad1 создаётся ini файл там где указан путь при выборе, всё работает корректно. Однако как только я закрываю скрипт и после запускаю его заново, нажимаю numpad2 (моя идея изначальна была в том чтобы второй и последующий запуск скрипта работали без использования первого блока кода который активируется на numpad1) ничего не происходит потому что скрипт не может найти заданную переменную IniLogFolder которая была указана в первом блоке кода. Единственный вариант который придумал это поместить ini-файл в какую-нибудь из системных, рабочих папок (Например: C:\users\default), но если у пользователя будет указана другая буква наименования диска (Например: F), скрипт не будет работать. Ещё вопрос имеется, возможно ли как-то после использования первого блока кода, сделать так, чтобы скрипт сам дописал в код переменную с выбранным путём?<br /></p><div class="codebox"><pre><code>FileSelectFolder, LogFolder, , 3   ; При первом запуске Пользователь выберет путь и данные запишутся в LogFolder, при последующих запусках данная строка больше не понадобится

OutputFolder = ****   ; вместо &quot;****&quot; скрипт дописал путь из LogFolder. Например: C:\MyAHK</code></pre></div><p>Чтобы в последующем скрипт мог обращаться к выбранному пути из переменной OutputFolder.</p>]]></description>
			<author><![CDATA[null@example.com (nakutaru)]]></author>
			<pubDate>Fri, 18 Apr 2025 13:41:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162361#p162361</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Редактирование скрипта без ручного вмешательства.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162360#p162360</link>
			<description><![CDATA[<p>Обычно для сохранения данных между запусками скрипта используется ini-файл. Смотрите команды IniWrite, IniRead.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 18 Apr 2025 09:55:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162360#p162360</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Редактирование скрипта без ручного вмешательства.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162359#p162359</link>
			<description><![CDATA[<p>Имею простой скрипт, который предлагает пользователю выбрать папку, а после по нажатию клавиши в этой папке создаётся текстовый файл и внутрь прописывается текст. Нужно сделать так, чтобы при первом открытие скрипта пользователь мог выбрать желаемую папку, путь к папке сохранился бы в переменной, а после каждого последующего открытия скрипта путь сохранялся и не нужно было бы указывать путь самостоятельно.</p><div class="codebox"><pre><code>numpad6::

FileSelectFolder, OutputVar, , 3  ; выбрать путь к папке
if OutputVar =
    MsgBox, Вы не выбрали папку.
else
    MsgBox, Вы выбрали папку &quot;%OutputVar%&quot;.
Return

numpad5::

FileAppend, Log`n, %OutputVar%\farmlog.txt  ; создать текстовый файл в выбранной папке 

Return</code></pre></div><p>После первого открытия пользователь получит право выбрать папку по нажатию клавиши numpad6. Как сделать так, чтобы этот выбор как то сохранился в самом коде, чтобы после второго открытия скрипта (и последующих открытий) пользователю не нужно было выбирать путь, а он бы сохранился с первого открытия. Чтобы весь код нажатия на numpad6 не воспроизводился.</p><p>Если такое возможно подскажите пожалуйста.</p>]]></description>
			<author><![CDATA[null@example.com (nakutaru)]]></author>
			<pubDate>Fri, 18 Apr 2025 00:58:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162359#p162359</guid>
		</item>
	</channel>
</rss>
