<?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=10541&amp;type=atom" />
	<updated>2015-04-03T07:24:32Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=10541</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=92957#p92957" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Dr.Jekyll]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30028</uri>
			</author>
			<updated>2015-04-03T07:24:32Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=92957#p92957</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=92950#p92950" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Irbis]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27384</uri>
			</author>
			<updated>2015-04-03T02:44:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=92950#p92950</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=92949#p92949" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>
GoSub Tasks
</code></pre></div><p>Тут нужно использовать GoTo, т.к. из процедуры Tasks нет возврата (команды Return). Поэтому делать вызов её нет смысла, нужно просто на неё переходить.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2015-04-03T02:35:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=92949#p92949</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=92948#p92948" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Dr.Jekyll]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30028</uri>
			</author>
			<updated>2015-04-02T21:47:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=92948#p92948</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=92899#p92899" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Dr.Jekyll]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30028</uri>
			</author>
			<updated>2015-04-01T06:57:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=92899#p92899</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=92898#p92898" />
			<content type="html"><![CDATA[<p>YMP, спасибо, учту.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2015-04-01T06:57:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=92898#p92898</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=92897#p92897" />
			<content type="html"><![CDATA[<p><strong>Malcev</strong><br />Регистр — это такая ячейка памяти в процессоре. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2015-04-01T06:50:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=92897#p92897</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=92896#p92896" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Dr.Jekyll пишет:</cite><blockquote><p>Я над этим думал, но тогда все-равно статистика будет удаляться при каждом включении или при перезагрузке ноута первого числа ... или я совсем туплю ...</p></blockquote></div><p>Проверяется не число, а месяц.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2015-04-01T06:49:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=92896#p92896</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=92895#p92895" />
			<content type="html"><![CDATA[<p>Допустим, начался февраль, при каждом включении скрипта вы проверяете есть ли в регистре 02, если нету то стираете 01(январь) и прописываете 02. Если уже стоит 02, то ничего не стираете и ждете марта.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2015-04-01T06:14:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=92895#p92895</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=92893#p92893" />
			<content type="html"><![CDATA[<p>Я над этим думал, но тогда все-равно статистика будет удаляться при каждом включении или при перезагрузке ноута первого числа ... или я совсем туплю ...</p>]]></content>
			<author>
				<name><![CDATA[Dr.Jekyll]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30028</uri>
			</author>
			<updated>2015-04-01T05:59:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=92893#p92893</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=92892#p92892" />
			<content type="html"><![CDATA[<p>Например, при удалении пишите в реестр номер текущего месяца. При запуске скрипт будет сравнивать эту запись с текущим месяцем. Если совпадают, ничего не делать. Если не совпадают, удалить.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2015-04-01T05:47:30Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=92892#p92892</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Ежемесячное однократное выполнение задачи]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=92890#p92890" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Dr.Jekyll]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30028</uri>
			</author>
			<updated>2015-04-01T05:12:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=92890#p92890</id>
		</entry>
</feed>
