/ / Ako získať návratový kód systému Windows pomocou dávkového súboru - okná, dávkový súbor, návratový kód

Ako získať Windows vrátiť kód s dávkovým súborom - windows, dávkový súbor, návratový kód

Mám nejaké skripty Perl, ktoré sú vyvolané dávkou systému Windows. Skripty Perl poskytujú návratové kódy, ktoré potrebujem na výstup, ale aj dostanem 0. Aj pri absolútne zníženom skripte perl:

use Modern::Perl "2015";

exit 1;

Dostanem 0 als ERRORLEVEL. Tu je časť môjho dávkového súboru systému Windows, kde vyvolávam skript perl:

cmd /c "C:Strawberry32portableshell.bat C:Usersabcerror.pl"
echo ERRORLEVEL Error Script: %ERRORLEVEL%

Výstupom je „ERRORLEVEL Error Script: 0“.

Už som sa pokúsil spustiť / čakať ... spustený z cmd, ale tu vidím druhé okno konzoly, ktoré musím manuálne ukončiť. To nie je to, čo chcem.

Ak zadám "C: Strawberry32portableshell.bat C: Usersabcerror.pl" ručne v okne konzoly, vidím / dostanem očakávanú úroveň chybovosti 1, čo je tu zle?

odpovede:

0 pre odpoveď č. 1

Niekoľko bodov tu. Najprv ste nám neuvedli kód, v ktorom „vyvolávate skript perl“, ale kód, v ktorom vyvolávate portableshell.bat súbor, a vy ste nám neukazovali obsah takéhoto súboru Dávkový súbor, Prvým a najjednoduchším spôsobom riešenia problému je:

1- Vložte do svojho súboru Batch súbor rovnaký príkaz môžete použiť na "vyvolanie skriptu Perl" v systéme Windows C:Strawberry32portableshell.bat súboru. To určite poskytne prístup k úrovni chýb zo skriptu perl.

Predpokladám, že obsah portableshell.bat súbor sú v podstate dva riadky: ten, ktorý spúšťa skript perl nasledovaný týmto riadkom:

exit /B %errorlevel%

Účelom predchádzajúceho riadku je vrátiť chybovú úroveň zo skriptu perl do dávkového súboru, ktorý volal tento jeden dávkový súbor. Tento mechanizmus funguje perfektne, pokiaľ tento dávkový súbor sa volá cez call príkaz:

2- Vyvolajte C:Strawberry32portableshell.bat súbor prostredníctvom call príkaz:

call C:Strawberry32portableshell.bat C:Usersabcerror.pl

Ak portableshell.bat súbor je vyvolaný prostredníctvom cmd /c namiesto call, musíte nastaviť úroveň návratnosti chýb programu cmd.exe cez rovinu exit príkaz, s NO /B prepínač:

3- Vyvolajte C:Strawberry32portableshell.bat súbor cez cmd /c riadok, ale ukončite ho príkazom:

exit %errorlevel%

Môžete si prečítať ďalšie vysvetlenie vecí týkajúcich sa úrovne chýb a rozdielov exit /B number proti exit number na Aké sú hodnoty ERRORLEVEL nastavené internými príkazmi cmd.exe?, Na tejto stránke si môžete prečítať, že a start /B /WAIT portableshell.bat Príkaz môže byť tiež použitý na vyriešenie tohto problému, ale táto metóda vyžaduje tiež ukončenie súboru .bat exit %errorlevel% rovnakým spôsobom ako cmd /c metóda.