Хочете вирішити помилку під час видалення деяких файлів і папок


0

Я хочу вирішити помилку, якщо щось пішло не так під час видалення файлів і папок через пакетний файл. Мої цільові файли та папки знаходяться на віддаленому сервері, а не на одному сервері. Я намагався з командами pushd, popd та rd, але, на жаль, він не надсилає рівень помилок **

Мій поточний файл bat таким чином

set "Adminlogpathtofolder=\\%servername%\e$\Oracle\Middleware\user_projects\domains\Skandia\servers\AdminServer\logs\"
set "Adminpathtofolder=\\%servername%\e$\Oracle\Middleware\user_projects\domains\Skandia\servers\AdminServer\"

if exist "%Adminlogpathtofolder%" goto deleteadminlog
if not exist "%Adminlogpathtofolder%" goto noadminlog

:deleteadminlog
"pushd "%Adminlogpathtofolder%" && (rd /s /q "%Adminlogpathtofolder%" 2>nul & popd)"
if %errorlevel%==0 goto cachedeletesuccess
if NOT %errorlevel%==0 goto cachedeleteunsuccess
:cachedeletesuccess
set "cache_delete_status=success"
echo "Admin Cache Deletion Successfully"
goto exit
:cachedeleteunsuccess
set "cache_delete_status=failure"
echo "Unable to delete the cache"
goto :EOF

:noadminlog
echo "There is no log folder on the Admin Server"
goto exit
:exit

pushd "%Adminpathtofolder%"
for /f "delims=" %%i in ('dir /ad /b^|findstr /vlix "stage security logs"') do rd /s /q "%%i"
popd
if %errorlevel%==0 goto cachedeletesuccess
if NOT %errorlevel%==0 goto cachedeleteunsuccess
:cachedeletesuccess
set "cache_delete_status=success"
echo "Cache Deletion Successfully"
goto exit
:cachedeleteunsuccess
set "cache_delete_status=failure"
echo "Unable to delete the cache"
goto :EOF

Хто-небудь може мені допомогти на цьому ..

МОЯ вимога з наступними умовами

  1. Видаліть усі файли та папки, які очікують батьківську папку (журнал) на віддаленому сервері, наприклад мій шлях до віддаленого сервера

"Adminlogpathtofolder = \% ім'я сервера% \ e $ \ Oracle \ Middleware \ user_projects \ domeins \ Skandia \ servers \ AdminServer \ logs \"

  1. Видаліть усі файли та папки з деяким виключенням, наприклад, це наступний шлях

"Adminpathtofolder = \% ім'я сервера% \ e $ \ Oracle \ Middleware \ user_projects \ domeins \ Skandia \ servers \ AdminServer \"

Я хочу видалити всі файли та папки, крім деяких трьох папок та його вмісту (журнали, безпека, етап)

  1. Я хочу виправити помилку, якщо щось пішло не так під час видалення файлів або папки, скрипт повинен вийти і повторити помилку, яку я отримав у cmd .

Відповіді:


0

Чому б не використовувати IF EXISTзнову? З мого досвіду ERRORLEVELбуває дивно (як це в даному випадку читайте докладніше ), тож поки існує альтернатива (яка працює), використовуйте її!

У будь-якому випадку, ось моє перевірене та робоче рішення:

PUSHD "%Adminlogpathtofolder%"
FOR /F "delims=" %%i IN ('DIR /A:D /B') DO (
    RD /S /Q "%%i" >nul 2>&1
    IF EXIST "%%i" ECHO Failed to delete "%%i" && SET "cache_delete_status=failure"
)
IF "cache_delete_status"=="failure" (ECHO Unable to delete the admin cache) ELSE (ECHO Admin Cache Deletion Successfully & SET "cache_delete_status=success")

А для другої частини:

PUSHD "%Adminpathtofolder%"
FOR /F "delims=" %%i IN ('DIR /A:D /B^|FINDSTR /VLIX "stage security logs"') DO (
    RD /S /Q "%%i" >nul 2>&1
    IF EXIST "%%i" ECHO Failed to delete "%%i" && SET "cache_delete_status=failure"
)
IF "cache_delete_status"=="failure" (ECHO Unable to delete the cache) ELSE (ECHO Cache Deletion Successfully & SET "cache_delete_status=success")

Я не знаю, чи це цілеспрямовано чи ні, але ви використовуєте змінну chache_delete_statusдля обох частин, тому вона може виявити помилку у 2-й частині, навіть якщо такої не було. Я рекомендую вам використовувати іншу змінну для перевірки у другій частині, якщо ви не хочете, щоб це сталося.


Дякуємо за вашу відповідь, а також за пропозицію @FatalBulletHit. Я хочу використовувати перевірити [cache_delete_status] на моїй черговій партії, і не вдасться виконати роботу Дженкінса, якщо хтось із видалення не вдасться.
Нараяна Боомінатан

@FatalBuBulletHit У мене є ще одне сумнів, чи є спосіб запустити пакетний файл на віддаленому сервері. Пакетний файл також знаходиться на тому ж віддаленому сервері. Я пробував з PSTools, але мені стає недійсним HOME_DIR Шлях: HOME_DIR немає. Встановлення HOME_DIR на поточну папку ". **************************************************** ******************************************* Кінець міграції власності
Нараяна Бомінітан

@NarayanaBoominathan я не знаю, вибачте, може бути , це допомагає: stackoverflow.com/questions/32482483 / ...
FatalBulletHit
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.