Возникли проблемы с оператором if-else / обработкой ошибок. Я пытался заставить это работать, не могу этого сделать. Я хочу, чтобы пользователь ввел идентификатор клиента, а затем удалил каталог, связанный с указанным клиентом, если он существует.

Код:

@echo off
set /p id=Enter ID:
rd /s /q "\\Images\Public on Images\DMS Scanned Clients\%id%"
echo \\Images\Public on Images\DMS Scanned Clients\%id%
pause

Так, например, пользователь будет вводить 956862. Затем, если каталог в папке \Images \Public on Images \ Scanned Clients \ 956862 существует, он будет удален, в противном случае появится сообщение о том, что его не существует.

Спасибо

1 ответ1

0
@Echo off
pushd %1 >nul 2>&1  
If errorlevel 0 if not errorlevel 1 Echo %~nx1 is a folder
If errorlevel 1 Echo %~nx1 is not a folder
Popd

If /i "%cmdcmdline:~0,6%"=="cmd /c" pause

Однако в программировании мы тестируем, а не тестируем. Тестирование требует много системных ресурсов. Поэтому для проверки требуется два дорогих доступа к диску. Выполнение и проверка результата (то есть возвращаемого числа 0) - это только один доступ к диску и быстрая проверка числа.

rd /s c:\somefolder && Echo Folder deleted || Echo Folder didn't exist

&& и || значит делать, если errorlevel равен нулю или не равен нулю. Это проще, чем If errorlevel 0 if not errorlevel 1 echo errorlevel is 0 на нескольких строках. Смотрите мой пост здесь. Печатает% ^ into cmd.exe пасхальное яйцо Windows?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .