Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Параллельный отбор

Ответить
Настройки темы
CMD/BAT - [решено] Параллельный отбор

Пользователь


Сообщения: 94
Благодарности: 10

Профиль | Отправить PM | Цитировать


Доброе время суток!

Помогите, пожалуйста, решить вот такую проблему: мой батник удаляет временные файлы по расширениям *.tmp, *.old и т. д., их там много. Мне нужно как-то сделать поиск "параллельным", чтобы не начинать поиск каждый раз сначала. То есть, я хочу, чтобы при поиске файлов просматривались сразу все перечисленные расширения, а не по очереди. Существует ли такая возможность? А то уже надоело ждать по 40 минут, пока всё очистится - слишком много файлов и папок просматривается. Заранее спасибо!

Отправлено: 19:16, 07-04-2012

 

Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Bruce Wayne,
Можно запустить сразу несколько копий батника. Например, батник получает аргумент в виде расширения файла:
Код: Выделить весь код
del /s /a \*.%1
То тогда можно этот батник вызвать так:
Код: Выделить весь код
C:\> for %i in (old tmp temp) do start 1.cmd %i
Или в самом батнике запускать новый экземпляр cmd.exe:
Код: Выделить весь код
for %%i in (tmp temp old) do start cmd /c "del /s /a \*.%%i"
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:35, 07-04-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 352
Благодарности: 119

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
del /f /q /s /a *.bak *.old *.tmp
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:42, 07-04-2012 | #3


Пользователь


Сообщения: 94
Благодарности: 10

Профиль | Отправить PM | Цитировать


Foreigner, спасибо большое!) Ваш вариант вполне устраивает,

Код: Выделить весь код
for %%i in (tmp temp old) do start cmd /c "del /s /a \*.%%i"
но раздражает огромное количество окон, открывающихся в процессе выполнения. Нельзя ли их как-нибудь скрыть? Я пробовал с помощью утилит, но не получилось. Возможно, я не туда ставил команду утилиты, а именно перед "cmd" в вышеуказанном коде.

kiripanda, спасибо Вам за помощь!) Только Вы, видимо не совсем так меня поняли. Да, получилась одна строчка, но каждый тип файлов батник ищет по новой, т. е. он сначала проверяет все пути на наличие расширения, указанного первым, затем снова проверяет те же самые пути на наличие типа файлов, указанного вторым и т. д. Я хотел бы, чтобы батник проверял все пути только один раз, удаляя все указанные расширения. Метод Foreigner хорош тем, что батник выполняется многократно и одновременно, что создаёт эффект того, что мне и нужно.

Отправлено: 21:11, 07-04-2012 | #4


Старожил


Сообщения: 352
Благодарности: 119

Профиль | Отправить PM | Цитировать


Цитата Bruce Wayne:
Я хотел бы, чтобы батник проверял все пути только один раз, удаляя все указанные расширения. »
Замените /q на /p и убедитесь, что так оно и есть.
А метод Foreigner наоборот, запускает по отдельному поиску на каждое расширение.

Отправлено: 21:38, 07-04-2012 | #5


Пользователь


Сообщения: 94
Благодарности: 10

Профиль | Отправить PM | Цитировать


kiripanda, блин, извиняюсь, теперь я не так выразился: я имел в виду, что батник проверяет каждую папку заново по каждому из указанных расширений, затем переходит к следующей папке, тоже проверяет её от начала и до конца ровно столько раз, сколько указано типов файлов т. д. до тех пор, пока не будут проверены все папки. Мне же нужно, чтобы каждая папка проверялась один раз на наличие всех указанных расширений сразу.

Отправлено: 21:49, 07-04-2012 | #6


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Цитата Bruce Wayne:
но раздражает огромное количество окон »
start с ключом /b
Код: Выделить весь код
... do start /b cmd /c "...
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:54, 07-04-2012 | #7


Старожил


Сообщения: 352
Благодарности: 119

Профиль | Отправить PM | Цитировать


Цитата Bruce Wayne:
батник проверяет каждую папку заново по каждому из указанных расширений, затем переходит к следующей папке, тоже проверяет её от начала и до конца ровно столько раз, сколько указано типов файлов т. д. до тех пор, пока не будут проверены все папки. Мне же нужно, чтобы каждая папка проверялась один раз на наличие всех указанных расширений сразу. »
Гм. А как ищет
Код: Выделить весь код
dir /b *.bak *.old *.tmp
каждое расширение по отдельности или все сразу?

Отправлено: 22:04, 07-04-2012 | #8


Пользователь


Сообщения: 94
Благодарности: 10

Профиль | Отправить PM | Цитировать


kiripanda, не знаю, всё слишком быстро) Но, походу, по очереди)

Foreigner, огромное спасибо!) Думаю, проблема решена, но хочу выслушать ещё варианты, если они будут - пока не стану закрывать тему.

Отправлено: 22:17, 07-04-2012 | #9


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Цитата kiripanda:
каждое расширение по отдельности или все сразу? »
Надо все сразу. По времени запуск в отдельном процессе явно быстрей
Код: Выделить весь код
 
> cmd /v:on
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

 > echo !time! && 1>nul dir /b /s \*.tmp \*.old \*.temp && echo !time!
22:13:52,65
22:13:57,56
Код: Выделить весь код
 > cmd /v:on
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

 > (
Продолжить? echo !time!
Продолжить? for %i in (old tmp temp) do start /b cmd /c "1>nul dir /b /s \*.%i"
Продолжить? echo !time!
Продолжить? )
22:21:01,52

 > start /b cmd /c "1>nul dir /b /s \*.old"

 > start /b cmd /c "1>nul dir /b /s \*.tmp"

 > start /b cmd /c "1>nul dir /b /s \*.temp"
22:21:01,55

Отправлено: 22:23, 07-04-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Параллельный отбор

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Параллельный запуск программ. saneck AutoIt 0 16-01-2012 03:26
Параллельный порт. optima22 Материнские платы и память 14 13-02-2011 22:12
Любой язык - Отбор изображений по цвету/каналу, определение цветовой информации Tosyk Скриптовые языки администрирования Windows 2 03-01-2011 08:27
VBS/WSH/JS - Отбор файлов по расширению, последующее их удаление. SaintVictor Скриптовые языки администрирования Windows 3 22-05-2010 13:21
Прочее - Отбор трафика sdc-alex Сетевые технологии 3 10-12-2008 20:16




 
Переход