Неверный синтаксис, скобки и else
должны быть в одной строке.
Следующий скрипт:
@echo off
if exist c:\ (
echo if true
)
else (
echo if false
)
сгенерирует:
if true
'else' is not recognized as an internal or external command,
operable program or batch file.
if false
потому что она видит первую закрывающую скобку как end оператора if
.
Я не уверен почему вы не видитеошибка, если вы не вызовете свой скрипт с 2>nul:
- это исключит ошибку, и вы просто увидите:
if true
if false
В любом случае, правильный способДля этого нужно правильно отформатировать оператор if
.В вашем случае это будет:
for %%g in (*.txt) do (
if exist z:\ (
copy /y "%%g" "z:\outgoing\"
move /y "%%g" "e:\ftp\clients\out_test\inv\archive\"
) else (
echo Directory z:\ for test is offline.
)
)
Вы можете возможно также улучшить его, не проверяя наличие z:
для каждого отдельного файла,Вы можете обнаружить, что это работает лучше:
if not exist z:\ (
echo Directory z:\ for test is offline.
) else (
copy /y *.txt "z:\outgoing\"
move /y *.txt "e:\ftp\clients\out_test\inv\archive\"
)
Обратите внимание, что я не говорю, что лучше , так как у вас есть доступ к большему количеству контекста, чем я. Это решение, которое вы должны принятьна основе полной картины.