<?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=10541</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=10541&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Ежемесячное однократное выполнение задачи».]]></description>
		<lastBuildDate>Fri, 03 Apr 2015 07:24:32 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=92957#p92957</link>
			<description><![CDATA[<p>Спасибо, <strong>YMP</strong>, переделал.</p><div class="quotebox"><cite>Irbis пишет:</cite><blockquote><p>А чем способ с постоянно запущенным скриптом лучше встроенного в Win планировщика заданий?</p></blockquote></div><p>1. Не люблю виндюжатные &quot;приложения&quot;.<br />2. Этот скрипт один раз настроил и будет работать всегда, а &quot;планировщик&quot; надо каждый раз настраивать после сноса винды. Она у меня долго не держится из-за моих экспериментов (в отличие от Linux).<br />3. ... а это кому-что нравится - должна быть альтернатива.<br />4. Можно подсунуть кому-нибудь в комп &quot;сюрприз&quot; (естественно, сделав скрипт незаметным и скомпилить в exe)<br />5. ... да мало-ли еще для чего кому-нибудь пригодится, что не может &quot;планировщик&quot; ... <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Dr.Jekyll)]]></author>
			<pubDate>Fri, 03 Apr 2015 07:24:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=92957#p92957</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=92950#p92950</link>
			<description><![CDATA[<p>А чем способ с постоянно запущенным скриптом лучше встроенного в Win планировщика заданий?<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p><span class="postimg"><img src="http://savepic.net/6580869.png" alt="http://savepic.net/6580869.png" /></span></p></div></div>]]></description>
			<author><![CDATA[null@example.com (Irbis)]]></author>
			<pubDate>Fri, 03 Apr 2015 02:44:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=92950#p92950</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=92949#p92949</link>
			<description><![CDATA[<div class="codebox"><pre><code>
GoSub Tasks
</code></pre></div><p>Тут нужно использовать GoTo, т.к. из процедуры Tasks нет возврата (команды Return). Поэтому делать вызов её нет смысла, нужно просто на неё переходить.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Fri, 03 Apr 2015 02:35:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=92949#p92949</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=92948#p92948</link>
			<description><![CDATA[<p>Сваял! Теперь все работает правильно. Задача выполняется только один раз в месяц независимо от выключений или перезагрузок компа первого числа (если в это время был включен комп или при первом его включении в новом месяце). Если же его совсем не выключать, то все будет выполнено в 00:00:01 часов первого числа каждого месяца. </p><p>Если кому-нибудь нужно, выкладываю рабочий код:</p><div class="codebox"><pre><code>#NoEnv
#SingleInstance force
SetBatchLines -1

If !A_IsAdmin
    {
    Run *RunAs &quot;%A_ScriptFullPath%&quot;
    ExitApp
    }
;__________________________________________________________________________________________________________________
; TrayMenu

Menu Tray, NoStandard
Menu Tray, Tip, Monthly Tasks
Menu Tray, Add, Автозапуск с Windows, SwitchAutoLaunch
Menu Tray, Add
Menu Tray, Add, Выйти из программы, CloseProg
Menu Tray, Default, Выйти из программы

RegRead AutoLaunch, HKCU, Software\Microsoft\Windows\CurrentVersion\Run, MonthlyTasks
    If !AutoLaunch ; Добавление Monthly Tasks в автозапуск
        {
        RegWrite REG_SZ, HKCU, Software\Microsoft\Windows\CurrentVersion\Run, MonthlyTasks, % &quot;&quot;&quot;&quot; . A_ScriptFullPath . &quot;&quot;&quot;&quot;
        }
AutoLaunchOn := 1 ; Метка для проверки автозапуска SwitchAutoLaunch
Menu Tray, Check, Автозапуск с Windows
GoTo Tasks
;__________________________________________________________________________________________________________________
; Переключение автозапуска

SwitchAutoLaunch:
If AutoLaunchOn
    {
    RegDelete HKCU, Software\Microsoft\Windows\CurrentVersion\Run, MonthlyTasks
    AutoLaunchOn := &quot;&quot;
    Menu Tray, UnCheck, Автозапуск с Windows
    }
    Else
        {
        RegWrite REG_SZ, HKCU, Software\Microsoft\Windows\CurrentVersion\Run, MonthlyTasks, % &quot;&quot;&quot;&quot; . A_ScriptFullPath . &quot;&quot;&quot;&quot;
        AutoLaunchOn := 1
        Menu Tray, Check, Автозапуск с Windows
        }
return
;__________________________________________________________________________________________________________________
; Выполнение задач

Tasks:
FormatTime NextMonth, % A_Year Chr(48*(A_MM = 12)) A_MM+1, MMMM ; Получение имени следующего месяца
RegRead NextTasks, HKCU, Software\MonthlyTasks, NextTasks
    If !NextTasks ; Создание записи для выполнения задач в следующем месяце (при первом запуске Monthly Tasks)
        {
        RegWrite REG_SZ, HKCU, Software\MonthlyTasks, NextTasks, % NextMonth
        }
        
If A_MMMM = % NextTasks ; Выполнение задач вначале каждого месяца
    {
    RegRead HuaweiPath, HKLM, SOFTWARE\Wow6432Node\Huawei technologies\HUAWEI Modem Nano, ExePath ; Получение из реестра Path установленной HUAWEI Modem Nano
        If HuaweiPath
            {
            FileDelete % HuaweiPath . &quot;\userdata\NetInfo.dat&quot; ; Удаление файла статистики трафика за прошедший месяц
            SplashTextOn 440, 60, Monthly Tasks, `nПроизведен ежемесячный сброс статистики 3G модема Huawei !
            Sleep 3000
            SplashTextOff
            }
    RegWrite REG_SZ, HKCU, Software\MonthlyTasks, NextTasks, % NextMonth ; Создание записи для выполнения задач в следующем месяце
    }
    
Sleep % ((23-A_Hour)*3600000+(59-A_Min)*60000+(60-A_Sec)*1000)*+1 ; Отсчет времени до полуночи (нужно, если комп работает круглосуточно)
GoTo Tasks
;__________________________________________________________________________________________________________________

CloseProg:
ExitApp
</code></pre></div><p>Здесь все закомментировано и будет несложно разобраться. Скрипт можно приспособить и под другие нужды или на выполнение сразу нескольких задач.</p><p>Еще раз благодарю <strong>YMP</strong> и <strong>Malcev</strong> за помощь!</p>]]></description>
			<author><![CDATA[null@example.com (Dr.Jekyll)]]></author>
			<pubDate>Thu, 02 Apr 2015 21:47:24 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=92948#p92948</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=92899#p92899</link>
			<description><![CDATA[<p>Ну да! Конечно! ... Наконец-то дошло, как до жирафа! <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> </p><p>&quot;If A_DD = 01&quot; здесь совсем неуместно! Надо номер месяца в реестр писать и проверять! ...</p><p>Всем СПАСИБО за помощь!</p>]]></description>
			<author><![CDATA[null@example.com (Dr.Jekyll)]]></author>
			<pubDate>Wed, 01 Apr 2015 06:57:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=92899#p92899</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=92898#p92898</link>
			<description><![CDATA[<p>YMP, спасибо, учту.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Wed, 01 Apr 2015 06:57:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=92898#p92898</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=92897#p92897</link>
			<description><![CDATA[<p><strong>Malcev</strong><br />Регистр — это такая ячейка памяти в процессоре. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Wed, 01 Apr 2015 06:50:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=92897#p92897</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=92896#p92896</link>
			<description><![CDATA[<div class="quotebox"><cite>Dr.Jekyll пишет:</cite><blockquote><p>Я над этим думал, но тогда все-равно статистика будет удаляться при каждом включении или при перезагрузке ноута первого числа ... или я совсем туплю ...</p></blockquote></div><p>Проверяется не число, а месяц.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Wed, 01 Apr 2015 06:49:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=92896#p92896</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=92895#p92895</link>
			<description><![CDATA[<p>Допустим, начался февраль, при каждом включении скрипта вы проверяете есть ли в регистре 02, если нету то стираете 01(январь) и прописываете 02. Если уже стоит 02, то ничего не стираете и ждете марта.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Wed, 01 Apr 2015 06:14:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=92895#p92895</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=92893#p92893</link>
			<description><![CDATA[<p>Я над этим думал, но тогда все-равно статистика будет удаляться при каждом включении или при перезагрузке ноута первого числа ... или я совсем туплю ...</p>]]></description>
			<author><![CDATA[null@example.com (Dr.Jekyll)]]></author>
			<pubDate>Wed, 01 Apr 2015 05:59:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=92893#p92893</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=92892#p92892</link>
			<description><![CDATA[<p>Например, при удалении пишите в реестр номер текущего месяца. При запуске скрипт будет сравнивать эту запись с текущим месяцем. Если совпадают, ничего не делать. Если не совпадают, удалить.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Wed, 01 Apr 2015 05:47:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=92892#p92892</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=92890#p92890</link>
			<description><![CDATA[<p>Добрый всем день!</p><p>Написал скрипт на ежемесячный сброс статистики 3G модема на ноуте. Собсна, вот код:</p><div class="codebox"><pre><code>#NoEnv
#SingleInstance force
SetBatchLines -1

If !A_IsAdmin
    {
    Run *RunAs &quot;%A_ScriptFullPath%&quot;
    ExitApp
    }
;__________________________________________________________________________________________________________________
; TrayMenu

Menu Tray, NoStandard
Menu Tray, Tip, Huawei Statistics Reset
Menu Tray, Add, Автозапуск с Windows, SwitchAutoLaunch
Menu Tray, Add
Menu Tray, Add, Выйти из программы, CloseProg
Menu Tray, Default, Выйти из программы

RegRead AutoLaunch, HKCU, Software\Microsoft\Windows\CurrentVersion\Run, HuaweiStatisticsReset
If !AutoLaunch ; Добавляем Huawei Statistics Reset в автозапуск
    {
    RegWrite REG_SZ, HKCU, Software\Microsoft\Windows\CurrentVersion\Run, HuaweiStatisticsReset, % &quot;&quot;&quot;&quot; . A_ScriptFullPath . &quot;&quot;&quot;&quot;
    }
AutoLaunchOn := 1 ; Метка для проверки автозапуска SwitchAutoLaunch
Menu Tray, Check, Автозапуск с Windows
GoSub Tasks
;__________________________________________________________________________________________________________________
; Переключение автозапуска

SwitchAutoLaunch:
If AutoLaunchOn
    {
    RegDelete HKCU, Software\Microsoft\Windows\CurrentVersion\Run, HuaweiStatisticsReset
    AutoLaunchOn := &quot;&quot;
    Menu Tray, UnCheck, Автозапуск с Windows
    }
    Else
        {
        RegWrite REG_SZ, HKCU, Software\Microsoft\Windows\CurrentVersion\Run, HuaweiStatisticsReset, % &quot;&quot;&quot;&quot; . A_ScriptFullPath . &quot;&quot;&quot;&quot;
        AutoLaunchOn := 1
        Menu Tray, Check, Автозапуск с Windows
        }
return
;__________________________________________________________________________________________________________________
; Выполнение задач

Tasks:
If A_DD = 01 ; Выполнение задач первого числа каждого месяца
    {
    RegRead HuaweiPath, HKLM, SOFTWARE\Wow6432Node\Huawei technologies\HUAWEI Modem Nano, ExePath ; Получение из реестра директории установленной HUAWEI Modem Nano
    If HuaweiPath
        {
        FileDelete % HuaweiPath . &quot;\userdata\NetInfo.dat&quot; ; Удаление статискики трафика за прошедший месяц
        }
    }
    
Sleep % ((23-A_Hour)*3600000+(59-A_Min)*60000+(60-A_Sec)*1000)*+1 ; Отсчет времени до полуночи
GoSub Tasks
;__________________________________________________________________________________________________________________

CloseProg:
ExitApp
</code></pre></div><p>Все работает, но криво. Недостаки:<br />1. Удаляет статистику при каждом включении или перезагрузке ноута первого числа месяца.<br />2. Если не включать ноут в первый день месяца, то сброс статистики вообще не происходит.</p><p>Как исправить это? Нужно сделать однократное удаление файла &quot;NetInfo.dat&quot; первого числа каждого месяца, а если ноут не влючался в это время, то удаление при первом включении вначале месяца.</p><p>Нужна идея. Самому ничего в голову не идет.</p>]]></description>
			<author><![CDATA[null@example.com (Dr.Jekyll)]]></author>
			<pubDate>Wed, 01 Apr 2015 05:12:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=92890#p92890</guid>
		</item>
	</channel>
</rss>
