Can I make a file that has a variable expiration date depending on the date it was run, for example,
for I want to make my batch expire after one month from starting date Or I must use a fixed expiration date stored inside the variable in the batch file as below.
@echo off
Title EXPIRATION DATE WITH BATCH
for /f "tokens=* delims=" %%a in ('wmic os get LocalDateTime /value') do for /f "tokens=* delims=" %%# in ("%%a") do set "%%#"
set "LocalDateTime=%LocalDateTime:~0,8%"
REM echo %LocalDateTime%
:: EXPIRATION DATE ::
set "EXP_DATE=20201231"
:::::::::::::::::::::
if %LocalDateTime% GTR %EXP_DATE% (
color 0C
echo this wont work anymore
Timeout /t 5 /NoBreak >NUL
exit /b
)
START "" "Chrome"
Exit
This is the Expiration date coded by Hackoo and as I know he's from the best people here for coding but this date is a Fixed date, not a variable date for example IF I sent my batch to anyone and for some reason, he didn't open my file for a while this may lead my file to be expired before opening, so I tried to write code to make the expired date as a variable to make my batch a trial edition for one month as an example
and Here is my code
@echo off
:: Getting your local date
for /f "tokens=* delims=" %%a in ('wmic OS get LocalDateTime /value') do for /f "tokens=* delims=" %%# in ("%%a") do set "%%#"
:: Store the local date inside avariable
set "CurrentDateTime=%LocalDateTime:~0,8%"
IF Exist Exp_File.txt GOTO FILE_EXIST
:: Analysis the date into three parts
set /a "Current_Year=%CurrentDateTime:~0,4%"
set /a "Current_Month=%CurrentDateTime:~4,2%"
set /a "Current_Day=%CurrentDateTime:~6,2%"
echo %CurrentDateTime% & pause
::Determine the next month
set /a "Next_Month=%Current_Month%+1"
::echo %Next_Month% & pause
:STEP1
set /a "EXP_Date=%Current_Year%%Next_Month%%Current_Day%"
echo %EXP_Date%>Exp_File.txt
::echo %EXP_Date% & pause
GOTO STEP2
:FILE_EXIST
set /p EXP_Date=<Exp_File.txt
echo %EXP_Date% & pause
::Compare between Expiration date and Current date
:STEP2
IF %CurrentDateTime% GTR %EXP_Date% ( GOTO EXIT ) else GOTO PAYPASS
:PAYPASS
echo Application working
pause
:EXIT
echo Your Application is expired & pause
exit
But unfortunately, it didn't work as I can write a simple code only and after testing this code I found three issues in this code
1- it didn't work if i changed the month of my local PC to be 08 or 09 and it give me an error message
Invalid number. Numeric constants are either decimal (17),
hexadecimal (0x11), or octal (021).
2- If I tried to change my date from 1 to 8 also it gives me the wrong expiration date stored in my outside file I mean if the current date is 20220601 the expiration date will be 2022701 instead of 20220701 and this leads to my batch displaying expiration message, so how to insert 0 before the number of months it ranges between 1 and 9
3- It didn't work for me if I changed my date month to 12 I mean how to calculate the next month if the starting month is 12 correctly?
Finally, how do I store my expiration date value as a key in the registry file
Can I make a file that has a variable expiration date depending on the date it was run, for example,
for I want to make my batch expire after one month from starting date Or I must use a fixed expiration date stored inside the variable in the batch file as below.
@echo off
Title EXPIRATION DATE WITH BATCH
for /f "tokens=* delims=" %%a in ('wmic os get LocalDateTime /value') do for /f "tokens=* delims=" %%# in ("%%a") do set "%%#"
set "LocalDateTime=%LocalDateTime:~0,8%"
REM echo %LocalDateTime%
:: EXPIRATION DATE ::
set "EXP_DATE=20201231"
:::::::::::::::::::::
if %LocalDateTime% GTR %EXP_DATE% (
color 0C
echo this wont work anymore
Timeout /t 5 /NoBreak >NUL
exit /b
)
START "" "Chrome"
Exit
This is the Expiration date coded by Hackoo and as I know he's from the best people here for coding but this date is a Fixed date, not a variable date for example IF I sent my batch to anyone and for some reason, he didn't open my file for a while this may lead my file to be expired before opening, so I tried to write code to make the expired date as a variable to make my batch a trial edition for one month as an example
and Here is my code
@echo off
:: Getting your local date
for /f "tokens=* delims=" %%a in ('wmic OS get LocalDateTime /value') do for /f "tokens=* delims=" %%# in ("%%a") do set "%%#"
:: Store the local date inside avariable
set "CurrentDateTime=%LocalDateTime:~0,8%"
IF Exist Exp_File.txt GOTO FILE_EXIST
:: Analysis the date into three parts
set /a "Current_Year=%CurrentDateTime:~0,4%"
set /a "Current_Month=%CurrentDateTime:~4,2%"
set /a "Current_Day=%CurrentDateTime:~6,2%"
echo %CurrentDateTime% & pause
::Determine the next month
set /a "Next_Month=%Current_Month%+1"
::echo %Next_Month% & pause
:STEP1
set /a "EXP_Date=%Current_Year%%Next_Month%%Current_Day%"
echo %EXP_Date%>Exp_File.txt
::echo %EXP_Date% & pause
GOTO STEP2
:FILE_EXIST
set /p EXP_Date=<Exp_File.txt
echo %EXP_Date% & pause
::Compare between Expiration date and Current date
:STEP2
IF %CurrentDateTime% GTR %EXP_Date% ( GOTO EXIT ) else GOTO PAYPASS
:PAYPASS
echo Application working
pause
:EXIT
echo Your Application is expired & pause
exit
But unfortunately, it didn't work as I can write a simple code only and after testing this code I found three issues in this code
1- it didn't work if i changed the month of my local PC to be 08 or 09 and it give me an error message
Invalid number. Numeric constants are either decimal (17),
hexadecimal (0x11), or octal (021).
2- If I tried to change my date from 1 to 8 also it gives me the wrong expiration date stored in my outside file I mean if the current date is 20220601 the expiration date will be 2022701 instead of 20220701 and this leads to my batch displaying expiration message, so how to insert 0 before the number of months it ranges between 1 and 9
3- It didn't work for me if I changed my date month to 12 I mean how to calculate the next month if the starting month is 12 correctly?
Finally, how do I store my expiration date value as a key in the registry file
Can I make a file that has a variable expiration date depending on the date it was run, for example,
for I want to make my batch expire after one month from starting date Or I must use a fixed expiration date stored inside the variable in the batch file as below.
@echo off
Title EXPIRATION DATE WITH BATCH
for /f "tokens=* delims=" %%a in ('wmic os get LocalDateTime /value') do for /f "tokens=* delims=" %%# in ("%%a") do set "%%#"
set "LocalDateTime=%LocalDateTime:~0,8%"
REM echo %LocalDateTime%
:: EXPIRATION DATE ::
set "EXP_DATE=20201231"
:::::::::::::::::::::
if %LocalDateTime% GTR %EXP_DATE% (
color 0C
echo this wont work anymore
Timeout /t 5 /NoBreak >NUL
exit /b
)
START "" "Chrome"
Exit
This is the Expiration date coded by Hackoo and as I know he's from the best people here for coding but this date is a Fixed date, not a variable date for example IF I sent my batch to anyone and for some reason, he didn't open my file for a while this may lead my file to be expired before opening, so I tried to write code to make the expired date as a variable to make my batch a trial edition for one month as an example
and Here is my code
@echo off
:: Getting your local date
for /f "tokens=* delims=" %%a in ('wmic OS get LocalDateTime /value') do for /f "tokens=* delims=" %%# in ("%%a") do set "%%#"
:: Store the local date inside avariable
set "CurrentDateTime=%LocalDateTime:~0,8%"
IF Exist Exp_File.txt GOTO FILE_EXIST
:: Analysis the date into three parts
set /a "Current_Year=%CurrentDateTime:~0,4%"
set /a "Current_Month=%CurrentDateTime:~4,2%"
set /a "Current_Day=%CurrentDateTime:~6,2%"
echo %CurrentDateTime% & pause
::Determine the next month
set /a "Next_Month=%Current_Month%+1"
::echo %Next_Month% & pause
:STEP1
set /a "EXP_Date=%Current_Year%%Next_Month%%Current_Day%"
echo %EXP_Date%>Exp_File.txt
::echo %EXP_Date% & pause
GOTO STEP2
:FILE_EXIST
set /p EXP_Date=<Exp_File.txt
echo %EXP_Date% & pause
::Compare between Expiration date and Current date
:STEP2
IF %CurrentDateTime% GTR %EXP_Date% ( GOTO EXIT ) else GOTO PAYPASS
:PAYPASS
echo Application working
pause
:EXIT
echo Your Application is expired & pause
exit
But unfortunately, it didn't work as I can write a simple code only and after testing this code I found three issues in this code
1- it didn't work if i changed the month of my local PC to be 08 or 09 and it give me an error message
Invalid number. Numeric constants are either decimal (17),
hexadecimal (0x11), or octal (021).
2- If I tried to change my date from 1 to 8 also it gives me the wrong expiration date stored in my outside file I mean if the current date is 20220601 the expiration date will be 2022701 instead of 20220701 and this leads to my batch displaying expiration message, so how to insert 0 before the number of months it ranges between 1 and 9
3- It didn't work for me if I changed my date month to 12 I mean how to calculate the next month if the starting month is 12 correctly?
Finally, how do I store my expiration date value as a key in the registry file
Appreciate it for anyone can help