У меня есть файл perl, который вызывает командный файл для установки сторонней программы.
Main.pl
system ("Installer.bat");
print "Error code is $? \n";
Installer.bat
@echo off
installer.exe
echo errorlevel is %errorlevel% > logfile
exit %errorlevel%
Код ошибки 3010 возвращается пакетным файлом, и он предполагает, что требуется перезагрузка.
Тем не менее, модуль Perl печатает 49664. Я думал, что это должно было напечатать 3010. Может кто-нибудь объяснить, как это работает? Я хочу получить код ошибки для перезагрузки, требуемой в моем Perl-коде, а затем выполнить некоторую работу по очистке и перезагрузить компьютер из модуля Perl.
Следующие связанные пункты также неясны.
- Пакетные файлы Windows имеют только 255 кодов ошибок, так как можно вернуть 3010 в качестве кода ошибки?
- Это место предполагает, что нам нужно сдвинуть код ошибки вправо на 8 бит, чтобы получить собственный код ошибки. Поэтому, если я сдвину 49664 вправо на 8, я получу 194 (что по-прежнему не совпадает с 3010). Однако я также отмечаю, что 3010 Mod 256 = 194