Please I need help regarding my batch script. It was running perfectly, but later on when I wanted to run it keep repeating my previous result it displayed. eg I executed a
If you are running it in the same console window both times then the problem will likely be an uninitialised variable, and you are seeing the last result.
To use VBS to check the numbers then try this as the first part of your code.
Leave in the last goto :eof
to stop it falling through the compare into the following code.
Check the final if compares to be sure they are doing what you want.
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set file="C:\Program Files (x86)\GE Aviation\AB139 HGS\DB\AW139 DB.gdb"
if not exist %file% goto :EOF
FOR %%A IN (%file%) DO set size=%%~zA
>"%temp%\math.vbs" echo Set objArgs = WScript.Arguments: num = objArgs(0) : result = 0
>>"%temp%\math.vbs" echo if num ^> 1073741824 then result=1
>>"%temp%\math.vbs" echo if num ^> 6442450944 then result=2
>>"%temp%\math.vbs" echo Wscript.echo result
for /f %%a in ('cscript /nologo "%temp%\math.vbs" %size% ') do set z=%%a
del "%temp%\math.vbs"
:: z will be 2 if %size% greater than 6442450944
:: z will be 1 if %size% greater than 1073741824
:: z will be 0 if %size% less than 1073741825
if %z% EQU 2 (goto EXECUTE)
if %z% EQU 1 (goto EXECUTE)
if %z% EQU 0 (goto LOGOUT)
goto :EOF
The number in set minbytesize=6442450944
is to big.
Batch can only handle 32bit numbers.
But as you quote the numbers the string compare function will be used, so a size of "9"
will be greater than "6442450944"
.
To get a correct compare you can prefix the number with zeros, in your case it's simple as you know how long the second number is.
...
set "size=000000000000%size%"
set "size=%size:~-10%"
if "%size%" GEQ "%minbytesize%" (goto EXECUTE)
It's still a string compare, but it's also correct for numbers now.
Btw. This will not be your main problem.
It could be a good idea to set ECHO ON
to see where your problem occurs.
What time format you are using?
If it's using prefixed zeros for the hour you got problems at set /a hh=%hh%+100