需要协助批处理文件(游戏服务器)

时间:2015-09-28 22:16:32

标签: windows batch-file cmd

大家好,我想帮助我从头开始创建的这个批处理文件。仅供参考我没有编码exp。

# MySQL Connection string #
function Connect-MySQL([string]$user, [string]$pass, [string]$MySQLHost, [string]$database)
{
    # Load MySQL .NET Connector Objects 
    [void][system.reflection.Assembly]::LoadWithPartialName("MySql.Data")

    $connStr = "server=" + $MySQLHost + ";port=3306;uid=" + $user + ";pwd=" + $pass + ";database=" + $database + ";Pooling=FALSE"
    $conn = New-Object MySql.Data.MySqlClient.MySqlConnection($connStr)
    $conn.Open()
    return $conn
}

# Close Conn
function Disconnect-MySQL()
{
    $conn.Close()
}

# MySQL Connection Vars #
$user = ''
$pass = ''
$database = ''
$MySQLHost = ''

$script:conn = Connect-MySQL $user $pass $MySQLHost $database

function Execute-MySQLNonQuery([string]$query)
{
    $command = $conn.CreateCommand()
    $command.CommandText = $query
    $RowsInserted = $command.ExecuteNonQuery()

    if ($RowsInserted)
    {
        return $RowInserted
    }
    else
    {
        return $false
    }
}

$events = Get-WinEvent -FilterHashtable @{ LogName = 'System'; ID = 7001, 7002 } | select replacementstrings, machinename, timegenerated

foreach ($event in $events)
{
    $sid = $event.replacementstrings[1]
    $time = $event.timegenerated
    $id = $event.machinename
    $query = "INSERT INTO info.ewarp_testing (data1,data2,data3) VALUES ('$sid','$time','$id')"
    $Rows = Execute-MySQLNonQuery $query
}

所以我有一个Windows Server VPS,我托管我托管的Dedi Box。我有一个名为“Unturned”的游戏有六个游戏服务器。托管这么多服务器的唯一方法是通过桌面快捷方式单独启动它们。

我真的希望@echo off color B echo About to start.... TIMEOUT 5 echo Killing any Servers before I start them.... TIMEOUT 5 taskkill /f /im Unturned.exe echo DONE! TIMEOUT 5 echo Starting =ZBG= servers.... TIMEOUT 5 start "" /b "C:\Users\Administrator\Desktop\pvp1ar.lnk" TIMEOUT 5 start "" /b "C:\Users\Administrator\Desktop\pvp2sn.lnk" TIMEOUT 5 start "" /b "C:\Users\Administrator\Desktop\pvp3ar.lnk" TIMEOUT 5 start "" /b "C:\Users\Administrator\Desktop\pvp4sn.lnk" TIMEOUT 5 start "" /b "C:\Users\Administrator\Desktop\pvp5ar.lnk" TIMEOUT 5 start "" /b "C:\Users\Administrator\Desktop\pvp6sn.lnk" TIMEOUT 8 :loop echo **@@**DONT FORGET TO CLOSE ME**@@** goto loop exit 不会说“timeout”,我尝试使用please press any key to continuepause命令,我无法让它工作,它需要拥有我在上面脚本中设置的时间量,这样服务器就可以开始干净而不会从同一时间开始出现错误。

我需要脚本执行相同的操作,但最后有一个计时器,每4小时重新启动一次。谈论它很简单但我不太了解这一点。

1 个答案:

答案 0 :(得分:1)

以这种方式使用超时:

@timeout /T 5 /nobreak >NUL

必读: 在cmd HELP TIMEOUTHELP GOTOHELP STARTHELP ECHO

此脚本每4小时重启一次服务器。

@echo off
color B

:loop
cls

echo About to start....

@timeout /T 1 /nobreak >NUL
echo Killing any Servers before I start them.... 

@timeout /T 1 /nobreak >NUL
taskkill /f /im Unturned.exe
echo DONE!

@timeout /T 10 /nobreak >NUL
echo Server #1 is going to start
start "" /b "C:\Users\Administrator\Desktop\pvp1ar.lnk"

echo Server #2 is going to start
@timeout /T 10 /nobreak >NUL
start "" /b "C:\Users\Administrator\Desktop\pvp2sn.lnk"

echo Server #3 is going to start
@timeout /T 10 /nobreak >NUL
start "" /b "C:\Users\Administrator\Desktop\pvp3ar.lnk"

echo Server #4 is going to start
@timeout /T 10 /nobreak >NUL
start "" /b "C:\Users\Administrator\Desktop\pvp4sn.lnk" 

echo Server #5 is going to start
@timeout /T 10 /nobreak >NUL
start "" /b "C:\Users\Administrator\Desktop\pvp5ar.lnk"

echo Server #6 is going to start
@timeout /T 10 /nobreak >NUL
start "" /b "C:\Users\Administrator\Desktop\pvp6sn.lnk"

REM Every 4 hours kill and start servers. note 1H = 3600 seconds
REM use timeout then goto loop
@timeout /T 14400 /nobreak >NUL

goto loop 

注意:

  1. 如果您想查看上一次timeout删除>NUL
  2. 中的倒计时
  3. 如果要按需重启服务器,请删除/nobreak