2017-06-23 17 views
0

バッチファイルを使用して.exeが実行されているかどうかを確認したい場合は、30秒間pingを設定して無限に再確認します。 .exeが実行されていない場合は、別の.batファイルを起動し、必要なユーザーアクションがない状態で定数ループを再度確認してください。上記の.exeを無限に実行していない場合は、チェック、再チェック、起動するバッチファイル

私はここで多くのページをチェックし、何かを得るために多くのことを試してシームを傾けました。だからもっと詳細を与える。

「7dtd.exe」が実行されていることを確認したら、この.batファイルが必要です。実行している場合は待機していますが、約30秒間タイマーとしてping nullが表示されています「7dtd.exe」が実行されているかどうかを再確認してください。それが実行されていない場合は別の "startdedi.bat"ファイルを開始し、同じ "7dtd.exe"をチェックし、無限にチェックを続ける必要があります。どんな助けも素晴らしいだろう!

startdedicated.bat

@echo off 
rem Starts a dedicated server 
rem 
rem -quit, -batchmode, -nographics: Unity commands 
rem -configfile   : Allows server settings to be set up in an xml config file. Use no path if in same dir or full path. 
rem -dedicated     : Has to be the last option to start the dedicated server. 

set LOGTIMESTAMP= 


:: -------------------------------------------- 
:: REMOVE OLD LOGS (only keep latest 20) 

for /f "tokens=* skip=19" %%F in ('dir 7DaysToDieServer_Data\output_log*.txt /o-d /tc /b') do del 7DaysToDieServer_Data\%%F 



:: -------------------------------------------- 
:: BUILDING TIMESTAMP FOR LOGFILE 

:: Check WMIC is available 
WMIC.EXE Alias /? >NUL 2>&1 || GOTO s_start 

:: Use WMIC to retrieve date and time 
FOR /F "skip=1 tokens=1-6" %%G IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
    IF "%%~L"=="" goto s_done 
    Set _yyyy=%%L 
    Set _mm=00%%J 
    Set _dd=00%%G 
    Set _hour=00%%H 
    Set _minute=00%%I 
    Set _second=00%%K 
) 
:s_done 

:: Pad digits with leading zeros 
Set _mm=%_mm:~-2% 
Set _dd=%_dd:~-2% 
Set _hour=%_hour:~-2% 
Set _minute=%_minute:~-2% 
Set _second=%_second:~-2% 

Set LOGTIMESTAMP=__%_yyyy%-%_mm%-%_dd%__%_hour%-%_minute%-%_second% 

:s_start 


:: -------------------------------------------- 
:: STARTING SERVER 


echo|set /p="251570" > steam_appid.txt 

start 7daystodieserver -logfile 7DaysToDieServer_Data\output_log%LOGTIMESTAMP%.txt -quit -batchmode -nographics -configfile=serverconfig.xml -dedicated 


echo Starting server ... 
timeout 15 

cls 

echo. 
echo Server running in background, you can close this window. 
echo You can check the task manager if the server process is really running. 
echo. 
echo. 

pause 

私は、このコマンドを試し、それは限り時にサーバーが閉じるコマンドウィンドウが起動したままと

@echo off 
cls 
:start 
@echo Starting 7DTD Dedicated Test Server... 

7daystodieserver -logfile 7DaysToDieServer_Data\output_log%LOGTIMESTAMP%.txt -quit -batchmode -nographics - 

configfile=serverconfig.xml -dedicated 

echo. 
for /F "tokens=2" %%i in ('date /t') do set mydate=%%i 
set mytime=%time% 
echo Restarting Test Server: %mydate%:%mytime% 
echo. 
goto start 

に私はそれを必要な方法で作業することが縫い目それを再起動し、サーバーが終了した時刻を知らせます。みんなに助けてくれてありがとう、これは私を夢中にさせてくれた!!!

+1

あなたはそれが機能しないと言いますが、何を試しましたか?私たちはあなたのコードを書くのではなく、あなたのコードに関する特定の質問に答えるだけです。これを読んでください:[良い質問をするにはどうすればいいですか](https://stackoverflow.com/help/how-to-ask) – Clonkex

+0

'startdedi.bat'とは何ですか?'7dtd.exe'を起動するだけですか?それは何の内容ですか? – Compo

+0

**編集**機能を使用して、オリジナルの質問にそのコンテンツと付随する情報を追加してください。 – Compo

答えて

0

待つためにpingする必要がありますか?代わりにtimeoutを使用してください。見つからない場合は

このスクリプトは、7dtd.exeはstartdedi.batを開始および終了

  • を発見した場合、30秒待ってから開始し、
    • チェック実行されているかどうか
  • オーバー
    :a 
    tasklist|findstr "7dtd.exe"||startdedi.bat 
    timeout 30 
    goto a 
    

    2行目にすべてのタスク、パイプfindstrに出力され、「失敗」した場合、つまり一致するものが見つからない場合は、2番目の.batが開始されます(/fiパラメータがありますが、errorlevelは設定されません)。

    あなたが何らかの理由でpingを使用して主張する場合:

    ping -n 31 localhost 
    
    +1

    EXEが**実行されていない場合は、ロジックが元に戻り、バットを開始するので、 '&&'を '||'に変更します。バッチ使用であるため、それ以外の場合は現在のバッチが終了します。 – LotPings

    +0

    @LotPings私に通知してくれてありがとう。 – Regejok

    +0

    バッチを実行して終了しないようにとにかくありますか? –

    1

    私はRegejokが周りに間違った道を間違ったタスクリストのコマンドを持っても、条件付き命令していることを信じています。もう少し研究した後

    @ECHO OFF 
    :LOOP 
    TASKLIST /FI "IMAGENAME eq 7dtd.exe"|FIND "==">NUL&&(TIMEOUT 30 /NOBREAK>NUL 
    )||CALL startdedi.bat 
    GOTO LOOP 
    
    +0

    @ECHO OFF 使用:LOOP TASKLIST/FI "imagenameのEQ 7dtd.exe" を| FIND "=="> NUL &&(TIMEOUT 30/NOBREAK> NUL )|| CALLのstartdedi .bat GOTO LOOP .exeが実行されていない場合は、起動する前に30秒待機する予定ですか? –

    +0

    これは一方的なやりとりではなく、3時間前から私の質問に答えなかった... – Compo

    +0

    このサイトに新しいとコメントが表示されませんでした。はいstartdedi.batが条件付きでexeを開始します @ REMは、専用サーバー レム レム-quit、-batchmodeを開始オフエコー、-nographics:Unityは\t \t \t レム-configFile レムコマンドは-dedicated:専用サーバーを起動するための最後のオプションである必要があります。 ::サーバ エコーを開始|/P = "251570"> steam_appid.txt 開始7daystodieserver -logfile 7DaysToDieServer_Data \ output_log%LOGTIMESTAMP%.txtの-quit -batchmode -nographics -configfile = serverconfig.xmlの-dedicated 設定エコーサーバを起動しています... タイムアウト15 –

    0

    をしてstartdedi.batファイルにより掘り、私はこのコードを試してみました、それが今で完璧に動作しているように継ぎ目:

    これを試してみてください。すべての助けとアドバイスのおかげで再びありがとう!このコミュニティは素晴らしいです!

    @echo off 
    cls 
    :start 
    @echo Starting 7DTD Dedicated Test Server... 
    
    @echo off 
    rem Starts a dedicated server 
    rem 
    rem -quit, -batchmode, -nographics: Unity commands 
    rem -configfile   : Allows server settings to be set up in an xml config file. Use no path if in same dir or full path. 
    rem -dedicated     : Has to be the last option to start the dedicated server. 
    
    set LOGTIMESTAMP= 
    
    
    :: -------------------------------------------- 
    :: REMOVE OLD LOGS (only keep latest 20) 
    
    for /f "tokens=* skip=19" %%F in ('dir 7DaysToDieServer_Data\output_log*.txt /o-d /tc /b') do del 7DaysToDieServer_Data\%%F 
    
    
    
    :: -------------------------------------------- 
    :: BUILDING TIMESTAMP FOR LOGFILE 
    
    :: Check WMIC is available 
    WMIC.EXE Alias /? >NUL 2>&1 || GOTO s_start 
    
    :: Use WMIC to retrieve date and time 
    FOR /F "skip=1 tokens=1-6" %%G IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
        IF "%%~L"=="" goto s_done 
        Set _yyyy=%%L 
        Set _mm=00%%J 
        Set _dd=00%%G 
        Set _hour=00%%H 
        Set _minute=00%%I 
        Set _second=00%%K 
    ) 
    :s_done 
    
    :: Pad digits with leading zeros 
    Set _mm=%_mm:~-2% 
    Set _dd=%_dd:~-2% 
    Set _hour=%_hour:~-2% 
    Set _minute=%_minute:~-2% 
    Set _second=%_second:~-2% 
    
    Set LOGTIMESTAMP=__%_yyyy%-%_mm%-%_dd%__%_hour%-%_minute%-%_second% 
    
    :s_start 
    
    7daystodieserver -logfile 7DaysToDieServer_Data\output_log%LOGTIMESTAMP%.txt -quit -batchmode -nographics -configfile=serverconfig.xml -dedicated 
    
    echo. 
    for /F "tokens=2" %%i in ('date /t') do set mydate=%%i 
    set mytime=%time% 
    echo Test Server was shutdown: %mydate%:%mytime% 
    echo. 
    goto start 
    
    関連する問題