現在、私は現在、特定の日のある特定の時刻にユーザーのPCを自動的にシャットダウンするバッチファイルを作成中です。これまで私はこれを達成しました。今私は起動時に起動し、特定の値に達するまで続けるスタンドアロン版をコーディングしています。バッチファイル - 変数値の出力を防止する
:Loop
for /f "tokens=1-3 delims=:,. " %%A in ("%time%") do (
set "Hour=%%A"
set "Min=%%B"
)
set /a Hour = Hour %% 12
if %Hour%==0 set "Hour=12"
set "Allm=%Hour%:%Min%"
echo %Allm%
cls
if %Allm% equ %_input% (goto:Continue) else goto:Loop
IF %errorlevel% EQU 0 GOTO Loop
:Continue
for /f %%a in ('date /t') do set DAY=%%a
IF %DAY% equ %S% (goto:shutdown) else goto:Loop
:shutdown
echo @echo off &setlocal >>PMLite.bat
echo :Loop >>PMLite.bat
echo for /f "tokens=1-3 delims=:,. " %%A in ("%time%") do (>>PMLite.bat
echo set "Hour=%%A" >>PMLite.bat
echo set "Hour=%%B" >>PMLite.bat
echo echo. >>PMLite.bat
echo) >>PMLite.bat
echo echo. >>PMLite.bat
echo set /a Hour = Hour %% 12 >>PMLite.bat
echo if %Hour%==0 set "Hour=12" >>PMLite.bat
echo echo. >>PMLite.bat
echo set "Allm=%Hour%:%Min%" >>PMLite.bat
echo echo. >>PMLite.bat
echo echo %Allm% >>PMLite.bat
echo IF %Allm%==9:20 GOTO timereached >>PMLite.bat
echo IF %errorlevel% EQU 0 GOTO Loop >>PMLite.bat
echo :timereached >>PMLite.bat
echo for /f %%a in ('date /t') do set DAY=%%a >>PMLite.bat
echo IF %DAY% equ %S% (goto:shutdown) else goto:Loop >>PMLite.bat
echo :shutdown >>PMLite.bat
echo pause >>PMLite.bat
echo shutdown.exe -s -f -t 00 >>PMLite.bat
私の主な目標は、プログラムがPCの現在の日付/時刻を監視し、「PMLite.bat」というバッチファイルのファイルを生成することです、ユーザーが作成した変数の値は、シャットダウンよりも満たしている場合、そのpc。具体的には、次のコードecho IF %errorlevel% EQU 0 GOTO Loop >>PMLite.bat
を持つ行#340に注意してください。時間がユーザーの要求に合致しなくなるまで時間をチェックするように要求していない場合は、値0を実行する必要があります。しかし、生成された.batに出力するので、PMLite.bat IF 0 EQU 0 GOTO Loop
に次のような結果が得られます。これは、errorlevelの値をスクリプトに出力することが役に立たないためです。スクリプトに%errorlevel%を維持しながら、生成されたスクリプトに出力する方法はありますか?
コードを画像として送信しないでください。コードをコピーして質問に貼り付け、そのコードブロックを作成します。 – Squashman
パーセント記号%% errorlevel %%を二重にするか、キャレットでエスケープする^%errorlevel ^% – Richard
dateコマンドはロケールによって大きく異なることに注意してください。ロケールに依存しないwmicを使用する方が良いです –