Чтобы получить errorlevel1, единственное, что я думаю, вы можете сделать, это иметь источник файла, которого там нет.
Возможно ли получить `errorlevel 1` из` xcopy` в Windows 10?
Документация 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.
Я бегу Windows 10 64 - битной системы (испанский локали), и я попробовал все, что я мог придумать, чтобы получить 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
? Что мне не хватает?
2 ответа на вопрос
Единственное, о чем я могу думать, это какое-то условие гонки: когда xcopy собирает список файлов, которые он будет копировать, и фактически делает копию, какой-то другой процесс удаляет или перемещает файлы.
Если вы можете получить ошибку 1, если отсутствуют только НЕКОТОРЫЕ из исходных файлов, то это может быть сделано специально. Единственный способ сделать это специально - это запустить 2 или более отдельных процесса, одну команду xcopy и одну команду удаления или перемещения, и все они будут работать с одними и теми же исходными файлами. Вам понадобится источник с большим количеством файлов, чтобы дать конкурирующим процессам время обогнать друг друга.
- Запустите команду move, del или robocopy / mov для папки с большим количеством файлов.
- в другом окне и задолго до того, как первая команда завершится, запустите команду xcopy
Пропуск ключа / C может означать, что если это первый файл, который xcopy попытается выполнить, то при этом он сразу же сдастся без копирования каких-либо файлов, что удовлетворяет условию копирования файлов.
Похожие вопросы
-
12
Почему папка / winsxs становится такой большой и ее можно уменьшить?
-
2
Повышенные привилегии для запуска приложений в Windows?
-
14
PDF Viewer в Windows
-
-
7
Какие службы Windows можно безопасно отключить?
-
8
Firefox PDF плагин для просмотра PDF в браузере на Windows
-
1
Windows теряет макет экрана
-
1
Есть ли способ предотвратить установку / обновление, чтобы засорять мой жесткий диск загадочными пап...
-
1
Как я могу получить доступ к принтеру Windows Vista из Ubuntu по сети?
-
6
Просмотр журнала в Windows
-
3
Фоновая проблема Windows с двумя экранами