Opgelost Flits in batch file

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

Senso

Inventaris
Lid geworden
13 jun 2016
Berichten
11.229
Besturingssysteem
W10 Pro en W11 Pro
Office versie
Office 2007 H&S en Office 2021 Prof Plus
Ergens zit er een oorzaak voor een flits in onderstaande batch file. Waar?

PHP:
@Echo off
echo:
rem --------------------------------------------------------------
wmic path win32_localtime get dayofweek
rem --------------------------------------------------------------
@Echo off
for /f %%i in ('powershell ^(get-date^).DayOfWeek') do set dow=%%i
echo %dow%
rem --------------------------------------------------------------
@Echo off
rem 0,2 for mm/dd/yyyy  or 3,2 for dd/mm/yyyy
set month-num=%date:~3,2%
rem remove any leading zero :
IF "%month-num:~0,1%"=="0" SET month-num=%month-num:~1%
FOR /f "tokens=%month-num%" %%a in ("Januari Februari Maart April Mei Juni Juli Augustus September Oktober November December") do set mo-name=%%a
echo %mo-name%
rem --------------------------------------------------------------
echo %date% - %time%
rem --------------------------------------------------------------
echo:
@Echo off
set "weekn="

    for /f %%W in (
        'mshta vbscript:Execute("createobject(""scripting.filesystemobject"").GetStandardStream(1).writeline(DatePart(""ww"",Now()))"^^^&close^)'
    ) do @(
     set "weekn=%%W"
    )
echo Weeknummer %weekn%
echo:
rem --------------------------------------------------------------
@Echo off
rem TITLE PRINT_MONTH NAME
rem To get valuese from local machine

for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a
set year=%dt:~0,4%
set month=%dt:~4,2%
set day=%dt:~6,2%

rem set month name for the corresponding numbers

if %month%==01 set monthname=JANUARY
if %month%==02 set monthname=FEBRUARY
if %month%==03 set monthname=MARCH
if %month%==04 set monthname=APRIL
if %month%==05 set monthname=MAY
if %month%==06 set monthname=JUNE
if %month%==07 set monthname=JULY
if %month%==08 set monthname=AUGUST
if %month%==09 set monthname=SEPTEMBER
if %month%==10 set monthname=OCTOBER
if %month%==11 set monthname=NOVEMBER
if %month%==12 set monthname=DECEMBER

rem print month name

echo %monthname%
echo:
rem --------------------------------------------------------------
pause
 
Probeer het hier eens mee, dan zie je waar de "flits" optreedt en dat mo-name niet gevuld wordt.
Code:
@Echo off
echo:
rem --------------------------------------------------------------
wmic path win32_localtime get dayofweek
rem --------------------------------------------------------------
@Echo off
for /f %%i in ('powershell ^(get-date^).DayOfWeek') do set dow=%%i
echo %dow%
rem --------------------------------------------------------------
@Echo off
rem 0,2 for mm/dd/yyyy  or 3,2 for dd/mm/yyyy
set month-num=%date:~3,2%
rem remove any leading zero :
IF "%month-num:~0,1%"=="0" SET month-num=%month-num:~1%
FOR /f "tokens=%month-num%" %%a in ("Januari Februari Maart April Mei Juni Juli Augustus September Oktober November December") do set mo-name=%%a
echo Nu zou mo-name getoond moeten worden.
echo %mo-name%
rem --------------------------------------------------------------
echo %date% - %time%
rem --------------------------------------------------------------
echo:
@Echo off
set "weekn="
echo pause1
pause
    for /f %%W in (
        'mshta vbscript:Execute("createobject(""scripting.filesystemobject"").GetStandardStream(1).writeline(DatePart(""ww"",Now()))"^^^&close^)'
    ) do @(
     set "weekn=%%W"
    )
echo pause2
pause
echo Weeknummer %weekn%
echo:
rem --------------------------------------------------------------
@Echo off
rem TITLE PRINT_MONTH NAME
rem To get valuese from local machine

for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a
set year=%dt:~0,4%
set month=%dt:~4,2%
set day=%dt:~6,2%

rem set month name for the corresponding numbers

if %month%==01 set monthname=JANUARY
if %month%==02 set monthname=FEBRUARY
if %month%==03 set monthname=MARCH
if %month%==04 set monthname=APRIL
if %month%==05 set monthname=MAY
if %month%==06 set monthname=JUNE
if %month%==07 set monthname=JULY
if %month%==08 set monthname=AUGUST
if %month%==09 set monthname=SEPTEMBER
if %month%==10 set monthname=OCTOBER
if %month%==11 set monthname=NOVEMBER
if %month%==12 set monthname=DECEMBER

rem print month name

echo %monthname%
echo:
rem --------------------------------------------------------------
pause
 
Zoals je kunt zien wordt de maand naam (mo-name) wel getoond > Januari De flits treedt op bij activering Press any key na pause1.
 

Bijlagen

  • Batch.jpg
    Batch.jpg
    80,3 KB · Weergaven: 7
Laatst bewerkt:
Ik heb jouw code exact overgenomen zoals die op het forum staat. Hoe kan daar nu ineens ECHO is off staan. ?
 
Die flits komt door het uitvoeren van dat vbscript gedeelte.
 
Die schrijft een regel = line? Waarom verschijnt die dan kort op het scherm?
 
Door het starten van VB Script.
In plaats van VB Script kan je ook deze regel gebruiken:
Code:
@for /f %%a in ('powershell.exe get-date -UFormat %%V') do @set weekn=%%a
Dan ben je vn die flits af.
 
Laatst bewerkt:
Ga ik proberen.
 
In feite kan je de hele batchfile vervangen door dit:
Code:
@Echo Off
for /f %%a in ('powershell.exe get-date -Format "dddd"') do @set dow=%%a
echo Dag van de week: %dow%

for /f %%a in ('powershell.exe get-date -UFormat %%V') do @set weekn=%%a
echo Weeknummer: %weekn%

for /f %%a in ('powershell.exe Get-Date -Format "MMMM"') do @set maandnr=%%a
echo Maand: %maandnr%
Pause
 
Laatst bewerkt:
Ja, zo kan het.
Ik zou het alles overziende en meerdere batch files zo graag zien.

Woensdag
22 januari 2025
16:30:17,14
Maand 1
Week 4
Weekdag 3 (van maandag 1 tot en met zondag 7)
Weekdag 4 (van zondag 1 tot en met zaterdag 7)

Bedankt voor de hulp.👍
 
Uitgebreide bechijving van powershell.exe Get-Date:
 
Ben een heel eind gekomen. Wie wil het afmaken? Maand 01 goed?
Weekdag kom ik niet uit. (2x)
PHP:
@Echo off
rem Woensdag
rem 22 januari 2025
rem 16:30:17,14
rem Maand 1
rem Week 4
rem Weekdag 3 (van maandag 1 tot en met zondag 7)
rem Weekdag 4 (van zondag 1 tot en met zaterdag 7)
@Echo off
echo.
rem ----------------------------------------------
rem Uitvoer woensdag
for /f %%a in ('powershell.exe get-date -Format "dddd"') do @set dow=%%a
echo %dow%
rem
rem ----------------------------------------------
rem Uitvoer 22 januari 2025
@echo off
setlocal

for /f %%I in ('wmic os get localdatetime /format:list ^| find "="') do set "%%I"
set "YYYY=%localdatetime:~0,4%"
set /a "MM=1%localdatetime:~4,2% - 100"
set "DD=%localdatetime:~6,2%"
for /f "tokens=%MM%" %%I in ("januari februari maart april mei juni juli augustus september oktober november december") do set "month=%%I"

echo %DD% %month% %YYYY%
rem ----------------------------------------------
rem Uitvoer 16:30:17,14
echo %time%
rem
rem ----------------------------------------------
rem Uitvoer Maand 0
for /f %%a in ('powershell.exe get-date -UFormat %%m') do @set maandn=%%a
echo Maand %maandn%
rem fout echo Maand $currentMonth = Get-Date -UFormat %m
rem fout echo Maand (Get-Culture).DateTimeFormat.GetAbbreviatedMonthName(8)
rem
rem ----------------------------------------------
rem Uitvoer Week 0
for /f %%a in ('powershell.exe get-date -UFormat %%V') do @set weekn=%%a
echo Week %weekn%
rem ----------------------------------------------
rem Uitvoer Weekdag 3 (van maandag 1 tot en met zondag 7)
echo Weekdag ma tm zo
rem wmic path win32_localtime get dayofweek
rem ----------------------------------------------
rem Uitvoer Weekdag 4 (van zondag 1 tot en met zaterdag 7)
echo Weekdag zo tm za
rem ----------------------------------------------
rem
rem Full month name
rem (Get-Culture).DateTimeFormat.GetMonthName(8)
rem Abbreviated
rem (Get-Culture).DateTimeFormat.GetAbbreviatedMonthName(8)
rem ----------------------------------------------
pause

Alles geprobeerd blijft dezelfde uitkomst geven.

Code:
rem ----------------------------------------------
echo.
rem Uitvoer Weekdag 0 (van maandag 1 tot en met zondag 7)
set Sunday=0
for /f "skip=2 tokens=2 delims=," %%A in ('WMIC Path Win32_LocalTime Get DayOfWeek /Format:csv') do set "DOW=%%A"
rem if %DOW% == %Sunday% (
  REM do Sunday processing here...
)
echo Weekdag ma1 tm zo7  %dow%
rem
rem for /f %%i in ('powershell ^(get-date^).DayOfWeek') do set dow=%%i
rem wmic path win32_localtime get dayofweek
rem
rem ----------------------------------------------
echo.
rem Uitvoer Weekdag 1 (van zondag 1 tot en met zaterdag 7)
set Sunday=1
for /f "skip=2 tokens=2 delims=," %%A in ('WMIC Path Win32_LocalTime Get DayOfWeek /Format:csv') do set "DOW=%%A"
if %DOW% == %Sunday% (
  REM do Sunday processing here...
)
echo Weekdag zo1 tm za7  %dow%
rem
rem ----------------------------------------------
 
Dagnummer in de week:
Code:
for /f %%a in ('powershell.exe get-date -UFormat %%u') do @set dow=%%a
Oftewel:
Code:
@Echo Off
for /f %%a in ('powershell.exe get-date -Format "dddd"') do @set dow=%%a
echo Dag van de week: %dow%
for /f %%a in ('powershell.exe get-date -UFormat %%u') do @set dnw=%%a
echo Dag van de week: %dnw%

If %dnw% == 1 IF %dow% == zondag (
    Echo Sunday processing here...
)
Pause
 
Laatst bewerkt:
Dat lost het probleem van het begin van de week, zondag of maandag niet op volgens mij.
De uitkomst moet 3 en 4 zijn. In beide/alle gevallen zie ik 3 en 3 verschijnen.
 
Het kan natuurlijk EN 3 EN 4 zijn.
Je kan toch gewoon op zondag of maandag controleren?
 
Het moeten twee verschillende commandoregels zijn. De een gebaseerd op zondag als begindag de andere met maandag als begindag. Zie mijn code. Zondag staat op 0 als ik er 1 van maak, maakt dat niets uit. Maak ik van Sunday Monday dan blijft de uitkomst 3. ma di wo is 3, zo ma di wo is 4.
 
Geen idee wat je met die nummering bedoelt.
Maar ik heb laten zien hoe je dat met een geneste if kan controleren.
 
Als een week op zondag begint is het dagnummer van woensdag 4
Als een week op maandag begint is het dagnummer van woensdag 3
 
Je wilt dus weten of het dagnummer 1 of 2 is?
Code:
for /f %%a in ('powershell.exe get-date -UFormat %%u') do @set dnw=%%a
If %dnw% LSS 3 (
    Echo Sunday or monday processing here...
)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan