JTaches, shedule yourself tasks, messages and programs to be run when Windows starts.

Managing programs started when you start your computer is doing what Windows can not do, specifically:
-control the order in which they launch,
-control their frequency of execution (they are not all obliged to run at each start),
-if necessary, give the user the choice to launch them or not,
-wait for the end of the execution of a program before launching another one or, on the contrary, launch one without waiting for the previous one to be finished.
In short, it's really all master of these Windows session start programs. That's what JTaches does.

There are probably several tasks that you have to perform regularly on your computer, such as backing up or defragmenting your disk.
For example, you may have decided to start a backup program every three days,but without taking into account the days when the computer was stopped
- and that's what changes everything - because you went on weekend or vacation.
Indeed, there was nothing to save those days.
How to do it automatically to your PC?

The Windows Task Scheduler does not allow it.
I do not believe that any existing software is capable of it. That's why I wrote JTaches, a small portable freeware,
simple and yet powerful, which will allow you:
-to launch a program, a command, or to display a message,
-to launch a program, an order, or to display a message, this every n days,
- to launch a program, a command, or to display a message, this every n days, but without counting the days when Windows was not started.

For example, you want to make a backup every three days of actual work on the computer. You make one on a Thursday.
You work the next day, Friday. Then you go on a weekend. You do not start your computer on Saturday or Sunday. You use it again on Monday.
Tuesday, it will be three days worked since the last backup: Friday, Monday, and Tuesday. You should make a backup on Tuesday.
JTaches will take care of counting the number of days you start the computer, and start the right action when the desired number of days is reached.

Another example: you defragment your hard drive every ten days. One day, you go on vacation just after doing it. When you come back from your holidays,
certainly deserved, must the disk be defragmented? No, of course, because everything happens as if, for the computer, you had done it the day before. It will have to be done in ten days.
JTaches will be able to launch the defragmentations for you, if, of course, you have installed a defragmentation software.

These different actions are described in a text file, named JTaches.txt, which is in the JTaches folder,
and that is created the first time that you run JTaches.exe, with an action as an example to modify. With a text editor, like Windows Notepad, notepad.exe,
you can add as many actions as you want, putting one action per line, and respecting the correct syntax (see the example).
Lines that begin with ' are comments and are ignored by JTaches.

The benefits of JTaches are:

-Planning of repetitive tasks to be done every n days.
-Small, without installation.
-Do not install service. It runs then goes out or goes to sleep, so it does not occupy the system permanently.
-The tasks are easy to configure. A simple text editor is enough.
-The tasks are executed one after the other. A task is started immediately or when the previous task is completed, as desired.
-Runs silently, just starting the tasks or displaying the requested messages.
-But, in case of syntax error, it signals the line number where the error is.

JTaches runs silently and tests each line to see whether to launch it or not.

JTaches.txt file:

This file, contained in the JTaches.exe folder, is a text file that is read line by line by JTaches.exe.
Each line is interpreted differently according to its first character:

Various ways to display a message:
-Display a message: c | message
-Display a message every n calendar days: d | LastExecutionDate | n | message
-Display a message every n days of use of the pc: a | LastExecutionDate | i | n | message
-Display a message once a year from a date: b | LastExecutionDate | jj/mm | message
-Display a message once a year but only at a given date of the year.
The message will not be displayed if the pc is not turned on the day of that date. : e | LastExecutionDate | jj/mm | message
-Show a message only on even days: f | LastExecutionDate | message
-Show a message only on odd days: g | LastExecutionDate | message
-Display a message once at the beginning of JTaches: h | message
-Display a message once a day from a given time: i | HH:MM | LastExecutionDate | message
-Show a message once a given day of the week: j | Day | LastExecutionDate | message
Day must be written in full and can be Monday, Tuesday, ..., or Sunday.
-Display a message once a month from a given day of the month: k | Day | LastExecutionDate | message
Day is 1, 2, 3, ... 28, 29, 30 or 31.
Be careful, displaying a message blocks the execution of the following tasks until the user clicks a button in the message box.

To run a command or a program:
-Run a command: C | A ou S | message | folder | command
The command is executed every time JTaches.txt is run if a line specifies a z pause with a strictly positive value.
The message, if any, is displayed before the command is run. The user can only confirm it.
-Run a command every n calendar days: D | A or S | LastExecutionDate | n | message | folder | command
-Run a command every n days of use of the pc: A | A or S | LastExecutionDate | i | n | message | folder | command
-Run a command once a year from a date: B | A or S | LastExecutionDate | jj/mm | message | folder | command
-Run a command only at a given date of the year: E | A or S | LastExecutionDate | jj/mm | message | folder | command
-Run a command once at the beginning of the execution: H | A or S | message | folder | command
H is interesting if you put a line z | duration with a non-zero duration because,
while with C the command is started regularly during each scan of JTaches.txt, with H it is only once.
-Run a command once a day from a given time: I | A or S | HH:MM | LastExecutionDate | message | folder | command
I suppose the use of z | duration with a duration close to one minute (60000 ms), because line I will not be processed when JTaches is asleep,
between two scans of JTaches.txt.
The command will be run during the examination of JTaches.txt immediately following the passage of the time of Windows to the value specified in line I.
-Run a command once a given day of the week: J | A or S | Day | message | LastExecutionDate | folder | command
Day must be written in full, and can be Monday, Tuesday, ..., or Sunday.
-Run a command once a month from a given day of the month: K | A or S | Day | message | LastExecutionDate | folder | command
Day could be 1, 2, 3, ... 28, 29, 30 ou 31.

How to link the run of a program or command to the run of another program or command:
-Start an order only if the previous command was not run, and at most once a day:
G | A or S | LastExecutionDate | message | folder | command

To link the display of a message and the run of a program or command:
-Display a message then run an order if the user is ok: F | A or S | LastExecutionDate | i | n | message | folder | command
With F, unlike A, B, C, ..., which can also display a message, the user has the choice between validating,
to run the command, or cancel, not to run it.

Take a break, stay or not in memory, review the tasks periodically:
-Take a break whose duration is given in milliseconds, then move on: p | duration
-Exit JTaches after reading JTaches.txt: z | 0.
-Periodically restart a scan of JTaches.txt after a delay in milliseconds: z | delay.
Example: z | 14400000 will sleep JTaches for four hours.

Note : LastExecutionDate must be in the format dd/mm/yyyy, or be 0 if never done (to initialize).
A date of type dd/mm/yyyy is always the date of the last run or the last message.

n is the repetition period, in integer number of days.

A or S means that A must be set for an Asynchronous Command Launch, S for a Synchronous Launch.
With a synchronous launch, JTaches waits for the command or program to be terminated or quit before proceeding.
Be careful with the synchronous option, as this can block JTaches completely if the launched program does not complete.
If in doubt, it is best to use only asynchronous launches.
With an Asynchronous launch, JTaches starts the command and then passes without waiting in succession, that is to say on the next line of JTaches.txt.

i, when it exists, is always before n. It's a counter. When you create a line, put 0. Then the counter value will increase. When i becomes equal to n, the line is executed.
i is the number of days that JTaches.exe was started, but did not start the task of the line where this i is.

See below the sample JTaches.txt file created by JTaches.exe when it is started the first time and this file is missing, edit it
add lines to make your own file:

Jtaches.exe starts each time Windows starts, runs once, then exits or falls asleep, depending on the z parameter.
If z> 0, it wakes up periodically to check if there is a task to perform.
If z = 0, the tasks are executed once and the program exits.
If you turn on your computer and turn it off each time you use it, use z | 0.
If you wake it up, then put it back into sleep mode, without turning it off at least once a day, for example, write z | 3600000.
If you use I (see above), put z | 60000.
When in doubt, put z | 3600000 represents one hour in milliseconds (1h = 60min = 3600s = 3600000ms).

Note: To start this program automatically when windows is launched, put a shortcut in your startup folder.