Пакетные файлы Windows 10: странное поведение на файлах, которые работали в предыдущих версиях - PullRequest
0 голосов
/ 05 марта 2019

Итак, у меня есть следующий пакетный файл, который запускает игровой сервер для Sauerbraten :

@ECHO OFF

set SAUER_BIN=bin

IF /I "%PROCESSOR_ARCHITECTURE%" == "amd64" (
    set SAUER_BIN=bin64
)
IF /I "%PROCESSOR_ARCHITEW6432%" == "amd64" (
    set SAUER_BIN=bin64
)

start %SAUER_BIN%\sauerbraten.exe "-q$HOME\My Games\Sauerbraten" -gserver-log.txt -d %*

Пакетный файл поставляется по умолчанию с установкой игры и отлично работает в Windows7.

Когда я запускаю его с правами администратора, во всплывающем окне я получаю следующую ошибку:

Windows cannot find 'bin64\sauerbraten.exe'. Make sure you've typed the name correctly, then try again.

Я проверил, что файл существует и что написание правильное.

В том же каталоге есть другой пакетный файл для запуска самой игры, который идентичен за исключением пары параметров запуска в последней строке.При запуске работает нормально.Я скопировал этот файл в другой и сделал изменения видимыми в случае, если были невидимые символы или что-то еще, но это не имело никакого значения.

@ECHO OFF

set SAUER_BIN=bin

IF /I "%PROCESSOR_ARCHITECTURE%" == "amd64" (
    set SAUER_BIN=bin64
)
IF /I "%PROCESSOR_ARCHITEW6432%" == "amd64" (
    set SAUER_BIN=bin64
)

start %SAUER_BIN%\sauerbraten.exe "-q$HOME\My Games\Sauerbraten" -glog.txt %*

Когда сервер не работает от имени администратора, сервер фактически кажетсязапуск (поскольку он выводит в файл журнала и выдает ошибку, утверждающую, что он не может создать хост сервера, который, как я подозреваю, связан с необходимостью запуска от имени администратора).

Почему я вижу такое поведение?Я не могу придумать никакого разумного объяснения.

1 Ответ

0 голосов
/ 05 марта 2019

В зависимости от того, как ваш исполняемый файл принимает свои аргументы, я бы предложил:

@Echo Off
Set "SAUER_BIN=bin"
If Defined PROCESSOR_ARCHITEW6432 Set "SAUER_BIN=bin64"
If %PROCESSOR_ARCHITECTURE:~-2%==64 Set "SAUER_BIN=bin64"
Start "" "%~dp0%SAUER_BIN%\sauerbraten.exe" -q"$HOME\My Games\Sauerbraten" -g"log.txt" -d"%*"

Или:

@Echo Off
Set "SAUER_BIN=bin"
If Defined PROCESSOR_ARCHITEW6432 Set "SAUER_BIN=bin64"
If %PROCESSOR_ARCHITECTURE:~-2%==64 Set "SAUER_BIN=bin64"
Start "" "%~dp0%SAUER_BIN%\sauerbraten.exe" "-q$HOME\My Games\Sauerbraten" "-glog.txt" "-d%*"

Я не могу контролировать ваши дополнительные аргументы, поэтому вы 'Я должен решить, должно ли это читать "%*" или %*.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...