Ich habe dieses kleine Batch-Skript vor einiger Zeit unter dem Namen QSTART
. Vielleicht wird es helfen.
Sie können damit (theoretisch) Warteschlangen von beliebigen BATCH-Befehlen erstellen und ausführen. Warteschlangen sind reine Textdateien, die im %TEMP%
Verzeichnis gespeichert werden .
Es ist ein sehr einfaches Skript, das ich verwende, um beispielsweise Zip-Befehle bei Backups in die Warteschlange zu stellen.
Ich habe nicht viel debuggen, deshalb können Sie eventuell vorhandene Fehler korrigieren. Ich bin nicht zu 100% sicher, ob er jeden BATCH-Befehlsstring richtig verarbeitet, er sollte jedoch für einfache Aufgaben geeignet sein.
Wichtig. Jeder Befehl in der Warteschlange wird genau so ausgeführt, wie er ist. Das Skript prüft nicht auf Fehler, aber das kann durch einfache ERRORLEVEL
Überprüfung innerhalb der FOR
Schleife behoben werden.
Ich bin auch kein professioneller Programmierer und weiß, dass das Skript etwas chaotisch ist (dh ich wusste keine andere Möglichkeit, einen Befehl in der Warteschlange auszuführen; der integrierte START
Befehl funktioniert bei mir manchmal nicht).
Am Ende des Skripts finden Sie Hilfe und einige Beispiele. Verwenden Sie QSTART
ohne Argumente, um es anzuzeigen.
@echo OFF setlocal rem qstart root directory set ROOT=%~dp0 call :DEBUG "qstart root directory: %ROOT%" rem queue storage directory set QDIR=%TMP% call :DEBUG "queue directory: %QDIR%" rem 1.parameter (mandatory) - queue ID rem if no queue ID given display help message set QID=%~1 call :DEBUG "queue ID: %QID%" if "%QID%"=="" goto :MSG_HELP set QFILE=%QDIR%\%QID%.Q call :DEBUG "queue file: %QFILE%" shift rem 2. parameter (mandatory) - queue operation set QOP=%~1 shift call :DEBUG "queue operator: %QOP%" if "%QOP%"=="add" goto :QADD if "%QOP%"=="list" goto :QLIST if "%QOP%"=="load" goto :QLOAD if "%QOP%"=="new" goto :QNEW if "%QOP%"=="remove" goto :QREMOVE if "%QOP%"=="run" goto :QRUN if "%QOP%"=="save" goto :QSAVE goto :ERR_SYNTAX rem add command to queue rem create queue if not exists :QADD if not exist "%QFILE%" call :QNEW set QCMD=: :NEXTPAR set QCMD=%QCMD% %1 shift if not "%~1"=="" goto :NEXTPAR set QCMD=%QCMD:: =% call :DEBUG "queued command: %QCMD%" echo %QCMD% >>"%QFILE%" goto :EOF rem list queued commands rem warn if queue not exists :QLIST if not exist "%QFILE%" ( call :ERR_BADQID ) else ( type "%QFILE%" ) goto :EOF rem import queue from file rem create queue if not exists rem warn if file not exists :QLOAD if not exist "%QFILE%" call :QNEW set FILE=%~1 call :DEBUG "load file: %FILE%" if not exist "%FILE%" ( call :ERR_NOFILE ) else ( copy /B /Y "%QFILE%"+"%FILE%" "%QFILE%" >NUL ) goto :EOF rem clear queue rem create queue if not exists :QNEW if exist "%QFILE%" call :QREMOVE copy /B /Y NUL "%QFILE%" >NUL goto :EOF rem remove queue rem warn if queue not exists :QREMOVE if not exist "%QFILE%" ( call :ERR_BADQID ) else ( del /F /Q "%QFILE%" >NUL ) goto :EOF rem execute queued commands rem clear queue after execution :QRUN if not exist "%QFILE%" ( call :ERR_BADQID ) else ( setlocal ENABLEDELAYEDEXPANSION for /F "tokens=* delims=" %%C in (%QFILE%) do ( %%C rem alt.way of execution: start "" /B /WAIT %%C call :DEBUG "ERROR LEVEL of last operation: !ERRORLEVEL!" ) endlocal rem call :QREMOVE call :QREMOVE ) goto :EOF rem export queue to file rem warn if queue not exists rem overwrite file if exists :QSAVE set FILE=%~1 call :DEBUG "save file: %FILE%" if not exist "%QFILE%" ( call :ERR_BADQID ) else ( copy /B /Y "%QFILE%" "%FILE%" >NUL ) goto :EOF rem messages ------------------------------------------------------------------ rem bad syntax error rem show help :ERR_SYNTAX echo ERROR: syntax error call :MSG_HELP goto :EOF rem bad queue id error :ERR_BADQID echo ERROR: bad queue ID '%QID%' goto :EOF rem file not found error :ERR_BADFILE echo ERROR: file not found '%FILE%' goto :EOF rem usage information :MSG_HELP echo qstart v.0.1.5 - by rapia19@interia.pl echo Allows to create and execute queues of BATCH commands. echo. echo USAGE: qstart echo qstart {-h^|--help^|?^|/?} echo queue ID echo queue operator echo queued command call echo import/export filename echo -h --help ? or /? shows ^(this^) help message echo Allowed operations: echo add adds command to the queue echo list lists all queued commands echo load imports ^(appends^) queued commands from a file echo new creates new or clears existing queue echo remove deletes queue echo run executes all queued command and deletes queue echo save exports queue to a file echo ALSO: echo set QDEBUG=1 turns on displaying debug messages echo EXAMPLES: echo qstart Hello add echo "Hello world!" echo qstart Hello add pause echo qstart Hello list echo qstart Hello save Hello-copy.txt echo qstart Hello new echo qstart Hello load Hello-copy.txt echo qstart run pause goto :EOF rem display debug message and pause :DEBUG if "%QDEBUG%"=="1" ( echo ### DEBUG INFO ### %~1 pause >NUL ) goto :EOF