Документация Microsoft гласит, что коды выхода xcopy
Exit code Description
0 Files were copied without error.
1 No files were found to copy.
2 The user pressed CTRL+C to terminate xcopy.
4 Initialization error occurred.
There is not enough memory or disk space,
or you entered an invalid drive name
or invalid syntax on the command line.
5 Disk write error occurred.
Я использую 64-битную систему Windows 10 (испанский язык) и перепробовал все, что мог, чтобы получить уровень errorlevel 1 от xcopy , но я не смог. И под всем, что я имею в виду, единственное, что я не проверял, это /N с длинными именами файлов в источнике, где короткие имена не разрешены (в моей среде я не могу это проверить). Обычные подозрения: были проверены несоответствующие символы подстановки, отсутствующие имена файлов, пустые папки, /D , /EXCLUDE , /A , /M , /U , ....
Я, хотя это должно быть легко (не файлы найдены ?, легко), но я был неправ, это не так, поэтому я отладил xcopy.exe и вот что я увидел:
xcopyвнутренне использует метод с именемDisplayMessageAndExit(messageID, WSTRING, exitCode)для отображения сообщения и выхода. Он также использует несколько вызововexitдля выхода из программы в некоторых случаях (например, Ctrl-C)Я не нашел ни одного вызова
exitкоторый мог бы использовать значение1Из списка вызовов, сделанных в
DisplayMessageAndExit, ни один из них не передает / получает значение1качестве кода выхода.Из списка обращений к
DisplayMessageAndExitтолько один из них использует MessageID0x5622(в моей установке связанные ресурсы находятся вC:\Windows\System32\es-ES\ulib.dll.mui, это зависит от локали), то естьNo se encuentra el archivo: %1(File not found - %1), и код выхода, использованный в вызове, равен4
Может быть, есть способ, с помощью которого xcopy может генерировать код выхода 1 , но я не знаю как.
Итак, вопрос: есть ли способ получить код выхода уровня errorlevel 1 из xcopy? Что мне не хватает?
