Jestem całkiem nowy na tym forum, więc najpierw chcę podziękować za dostarczenie mi rozwiązań jeszcze zanim stałem się członkiem :).Nie można uzyskać poziomu błędu od nieudanego polecenia PRZESUŃ w skrypcie wsadowym
Więc mam ten kod:
for %%a in ("%PBpath%") do (
move "network location 1 files" "network location 2" >NUL
if ERRORLEVEL 0 (echo Diagram %%~na.pdf was successfuly archived) else (echo Diagram %%~na.pdf was not archived)
ECHO.%errorlevel%
)
Problem polega na tym, że nie mogę dostać ERRORLEVEL inną niż 0. Nawet gdy pliki, które mają być kopiowane brakuje miejsca, i jeszcze dostać Pomyślnie zarchiwizowana wiadomość powtarza się. Szukałem na forum podobnych pytań, ale nie mogłem z jakiegoś powodu zadziałać. Czy jest coś innego między poleceniem kopiowania i polecenia ping (polecenie ping zwraca poprawny kod zakończenia na poziomie błędu), ponieważ nie mogę go pobrać ani skopiować ani przenieść ...
Dzięki! Andrew
Dziękuję za odpowiedzi. Odpowiedź Superboba rozwiązała mój problem, dziękuję bardzo. W rzeczywistości jest to zachowanie sprzeczne z intuicją. Jednakże, polecenie ECHO.% Errorlevel% w moim przykładzie nadal zwraca 0, więc nie jest ustawione na 1 w moim przypadku. Co do odpowiedzi Endoro, czy możesz być bardziej konkretny? Próbowałem użyć% ERRORLEVEL% == 0, ponieważ żadna inna opcja nie działałaby z poziomem błędu jako zmienną, ale również tutaj nie ma wyniku. – user2844129
Czy są jakieś instrukcje między IF ERRORLEVEL 1 i ECHO.% Errorlevel%? Jeśli tak, mogliby zresetować poziom błędu. Właśnie próbowałem 'if ERRORLEVEL 1 (echo ErrorLevel% ERRORLEVEL%, plik nie został zarchiwizowany) else (echo ErrorLevel% ERRORLEVEL%, plik został zarchiwizowany)' i uzyskał oczekiwany wynik 'ErrorLevel 1, plik nie został zarchiwizowany' – Superbob
Nie, nie chcę Masz coś pomiędzy, ale masz rację, to działa. Problem polegał na tym, że echo '% ERRORLEVEL%' wewnątrz pętli for i miałem włączoną opcję DelayedExpansion. Musiałem użyć! i zadziałało. Dziękuję za pomoc! – user2844129