jhb-kaltduscher
Goto Top

ECHO ON-OFF Status Save und Restore

Hallo

Nicht lokale Batch-Routinen* verändern den Status aufrufenden Programms,
sofern ein ECHO ON oder OFF in der Subroutine verwendet werden.

Um dies zu umgehen muss der ECHO-Status am Eingang gesichert werden,
und beim Verlassen wieder gesetzt werden.

Eingang >> @Call :Echo
           ....
           ....
Am Ende >> @Echo %$Echo%
                     @Goto :EOF

Die Subroutine
           :Echo
           @Echo > %~dp0$Echo.txt
           @FOR /f "tokens=1-3 delims=()" %%a in (%~dp0$Echo.txt) DO  SET $Echo=%%b  
           @Del %~dp0$Echo.txt
           @Goto :EOF

Dise 7 Zeilen ermöglichen es, dass der ECHO-Status im aufrufenden Programm
nicht verändert wird.

Das Test-Programm Echo-Test zeigt die Funktion für
Start mit ECHO ON
und
Start mit ECHO ON

::----------------------------------
::                DEMO                   
::   Subroutine :Echo on/off?
::
:: Status ECHO ON/OFF für
:: NICHT lokale Batch-Routinen 
::----------------------------------

@Setlocal EnableExtensions
@CHCP 1252
@Color F0

@Echo ON                        & REM ECHO ON             
@Echo
@Echo @Call_:Echo               & REM Sichern Echo-Status
@Call :Echo
@Echo Return=[%$Echo%]
@Echo OFF
@Echo
@Echo Setze_Echo_%$Echo%
@Echo %$Echo%                   & REM Restore Echo-Status  
@Echo


@Echo.
@Echo.
@Echo OFF                       & REM ECHO OFF 
@Echo
@Echo @Call_:Echo               & REM Sichern Echo-Status
@Call :Echo
@Echo Return=[%$Echo%]
@Echo ON
@Echo
@Echo Setze_Echo_%$Echo%
@Echo %$Echo%                   & REM Restore Echo-Status  
@Echo

@Pause
@Endlocal
@Goto :EOF

:: ------Subroutine ----------------------------------------------------
:Echo
@Echo > %~dp0$Echo.txt
@FOR /f "tokens=1-3 delims=()" %%a in (%~dp0$Echo.txt) DO  SET $Echo=%%b  
@Del %~dp0$Echo.txt
@Goto :EOF

Die Anzeige
#echo

Content-ID: 6250046982

Url: https://administrator.de/contentid/6250046982

Ausgedruckt am: 24.11.2024 um 02:11 Uhr