Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Добавить возможность закрытия скрипта при отсутствии нужных файлов (http://forum.oszone.net/showthread.php?t=312340)

krokradio 04-03-2016 14:36 2612826

Добавить возможность закрытия скрипта при отсутствии нужных файлов
 
Есть у меня скрипт удаления файлов по маске (нашел где-то на форуме, подправил под себя)
Код:

@echo off
SetLocal EnableExtensions
 
set mask=*_00.alb
set folder=E:\Air\pool
 
set /a n=0, c=0
for /f "delims=" %%f in ('dir /b /s /a-d "%folder%\%mask%"') do set /a c+=1& del /f /a "%%f" && set /a n+=1
 
exit /b

Проблема в том, что этот скрипт у меня прописан в запуске каждые 10 минут. Если он находит файлы с нужной маской - он корректно отрабатывает и закрывается. Если же в папке таких файлов нету - командная строка остается висеть с сообщением, что файл не найден.
Что нужно добавить в этот скрипт, что б он не найдя нужных файлов просто закрывался?

Elven 04-03-2016 14:43 2612833

Проверку на наличие нужных файлов.
Код:

@echo off
SetLocal EnableExtensions
 
set mask=*_00.alb
set folder=E:\Air\pool

if exist %folder%\%mask% (
set /a n=0, c=0
for /f "delims=" %%f in ('dir /b /s /a-d "%folder%\%mask%"') do set /a c+=1& del /f /a "%%f" && set /a n+=1
) else (
exit /b)

exit /b


Iska 04-03-2016 14:45 2612837

Код:

set mask=*_00.alb
set folder=E:\Air\pool
 
2>nul del /f /q /s /a "%folder%\%mask%"


krokradio 04-03-2016 14:52 2612842

Ндяс... элементарно. Достаточно вспомнить, что пытались вдолбить в голову учителя информатики 20 лет назад ))). Спасибо.

krokradio 04-03-2016 15:08 2612857

Еще вместо
Код:

exit /b
нужно было оставить просто
Код:

exit
что б командная строка закрывалась

megaloman 04-03-2016 15:46 2612878

krokradio,
Iska несомненно привёл наиболее эффективное решение для удаления файлов по маске, но у Вас под циклом еще какие-то действия, я не анализирую их назначение, однако Если же в папке таких файлов нет, то ситуацию, наверное, можно купировать так:
Код:

for /f "delims=" %%f in ('dir /b /s /a-d "%folder%\%mask%" 2^>nul') do set /a c+=1& del /f /a "%%f" && set /a n+=1

Iska 04-03-2016 15:57 2612879

megaloman, навряд ли:
Цитата:

Цитата krokradio
нашел где-то на форуме, подправил под себя »

Так что, скорее всего, остатки «того» пакетного файла.


Время: 17:02.

Время: 17:02.
© OSzone.net 2001-