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

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

Закрытая тема
Настройки темы
CMD/BAT - BAT-скрипт удаления файлов

Новый участник


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

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


Привет!
В папке находится 60 тыс файлов. У всех название сформировано по маске _дата_название_id.jpg Например, _20181212_розы_544.jpg.
И есть файл со значениями id для удаления. Эти id в файле расположены в столбец, один id на одну строку.
Как сделать скрипт, который удалял бы все файлы, в названии которых есть id, указанный в файле?
Или это только отдельную прогу писать?

Отправлено: 11:52, 19-12-2018

 

Аватара для ShaddyR

Железных Дел Мастер


Moderator


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

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


слегка вклинюсь: меня тут реакция командного процессора M$ на простую задачу ввела в задумчивость. А именно: попросил зачистить темповские хвосты от rar'а, вида __rar_<цифры>.<цифры>, на всём диске, где намусорил, собака. Ничтоже сумняшеся, дал команду
del x: /f /s /q "__rar_*"
Побёг лог убиваемого, который мне намекнул на то, что на самом деле всё совсем не так, как в реальности: эта дура стала сносить всё подряд, вне зависимости от типа, пути и имени файла. Вопрос: WHY???
ЗЫ: несмертельно, заодно увидел пару лишних папок в логе, приберу с архива, но по факту - непонятно.

-------
[FAQ] Как определить аппаратную конфигурацию компьютера и правильно задать вопрос
-------
В благодарность за помощь нажимаем ссылочку "Полезное сообщение" внизу этого самого сообщения (подробнее). Помните: админ конфеты НЕ ПЬЁТ ;)
-------
Говори, что думаешь и думай, что говоришь! (c) || МОЙ ShaddyR.at.UA/blog - Новая метла и инвентаризация)


Отправлено: 15:16, 06-07-2021 | #11



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

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


Старожил


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

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


ShaddyR,
Цитата ShaddyR:
Вопрос: WHY??? »
Опечатка с потерянным x:?
Команда del x: /f /s /q "__rar_*" удалит сначала X:, затем "__rar_*". Для сей команды порядок ключей и имён/масок файлов/каталогов не важен.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:36, 06-07-2021 | #12


Забанен


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

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


У ShaddyR подпись нужно сменить на "Кирпичных Дел Мастер".

Отправлено: 21:15, 06-07-2021 | #13


Аватара для ShaddyR

Железных Дел Мастер


Moderator


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

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


Цитата iglezz:
Опечатка с потерянным x:? »
то бишь, "x:\__rar_*" ?
Тоже не вяжется:
Цитата iglezz:
Команда del x: /f /s /q "__rar_*" удалит сначала X: »
что невозможно по определению, не так ли? А вот дальше - см. п.1 -
Цитата ShaddyR:
Побёг лог убиваемого, который мне намекнул на то, что на самом деле всё совсем не так, как в реальности: эта дура стала сносить всё подряд, вне зависимости от типа, пути и имени файла. »
Повторюсь еще раз: в имени убитых файлов не было ни намёка на ни на rar, ни на __ и уж никак не на какие-либо их совмещения. Эта команда НЕ ДОЛЖНА БЫЛА убить ничего лишнего, вот в чем соль. Иначе - обоснуй, где я свернул в нетуда.
>
Захаров, тебе лично могу организовать юбилейную подарочную перманентную подпись БАЛАБОЛ. Не желаешь? Есть что по сути сказать?

-------
[FAQ] Как определить аппаратную конфигурацию компьютера и правильно задать вопрос
-------
В благодарность за помощь нажимаем ссылочку "Полезное сообщение" внизу этого самого сообщения (подробнее). Помните: админ конфеты НЕ ПЬЁТ ;)
-------
Говори, что думаешь и думай, что говоришь! (c) || МОЙ ShaddyR.at.UA/blog - Новая метла и инвентаризация)


Отправлено: 01:59, 07-07-2021 | #14


Ветеран


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

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


ShaddyR, это не так работает.

1. Команда del принимает в качестве аргументов множественные имена файлов/масок:
del /?
Код: Выделить весь код
Удаление одного или нескольких файлов.

DEL [/P] [/F] [/S] [/q] [/A[[:]атрибуты]] имена
ERASE [/P] [/F] [/S] [/q] [/A[[:]атрибуты]] имена

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

  /P            Запрос подтверждения перед удалением каждого файла.
  /F            Принудительное удаление файлов, доступных только для чтения.
  /S            Удаление указанных файлов из всех подкаталогов.
  /Q            Отключение запроса на подтверждение при удалении файлов.
  /A            Отбор файлов для удаления по атрибутам.
  атрибуты      R  Файлы, доступные только для чтения.
                S  Системные файлы.
                H  Скрытые файлы.
                A  Файлы, готовые для архивирования.
                I  Файлы с неиндексированным содержимым.
                L  Точки повторной обработки.
                -  Префикс "-" имеет значение НЕ.

Изменение команд DEL и ERASE при включении расширенной обработки команд:

Результаты вывода для ключа /S принимают обратный характер, то есть выводятся
только имена удаленных файлов, а не файлов, которые не удалось найти.

В указанном примере таких аргументов два: «x:» и «"__rar_*"».

2. «x:» в данном контексте означает: «все файлы текущего каталога диска x:», поскольку, коль ни имя файла, ни маска файлов не заданы — к пути «x:» применяется умолчальная маска «*.*». Если специально текущий каталог для диска не менялся — им будет по умолчанию корневой каталог. Отсюда — фактически применяется такое: «x:\*.*».

3. И токмо опосля пытается найти и удалить файлы по маске «__rar_*» в текущем каталоге текущего диска.

В общем, как всегда: умолчания — зло.

Последний раз редактировалось Iska, 07-07-2021 в 04:53.

Это сообщение посчитали полезным следующие участники:

Отправлено: 04:42, 07-07-2021 | #15


Забанен


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

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


Цитата ShaddyR:
Есть что по сути сказать?
По сути:
1.настоящий мастер не станет заниматься копипастом кода, не осмыслив его содержимое, а значит не будет постить сообщения подобные этому:
Цитата ShaddyR:
эта дура стала сносить всё подряд, вне зависимости от типа, пути и имени файла. Вопрос: WHY???
2.отрицание вами объективного (см. аргумент выше) укажет лишь на ограниченность (вашу)
3.отсутствие самоиронии (и как следствие, чувство юмора) обычно указывает на озлобленность человека (главным образом из-за жизненных неудач)
4.злоупотребление положением модератора, в частности угрозы
Цитата ShaddyR:
организовать юбилейную подарочную перманентную подпись БАЛАБОЛ
лишь дополняют аргументацию не в вашу пользу

Отправлено: 09:03, 07-07-2021 | #16


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Iska:
2. «x:» в данном контексте означает: «все файлы текущего каталога диска x:», поскольку, коль ни имя файла, ни маска файлов не заданы — к пути «x:» применяется умолчальная маска «*.*». Если специально текущий каталог для диска не менялся — им будет по умолчанию корневой каталог. Отсюда — фактически применяется такое: «x:\*.*».
3. И токмо опосля пытается найти и удалить файлы по маске «__rar_*» в текущем каталоге текущего диска.
В общем, как всегда: умолчания — зло.»
Следует ещё добавить, что в таких случаях, когда используются маски типа "x:" (а это именно маска, т.к. отсутствует конкретное имя и подставляется "x:\*.*"), ключ /s (рекурсия), вообще вселенское зло, т.к. команда DEL с таким набором ключей, будет почти аналогичной "format x:"...

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:11, 07-07-2021 | #17


Аватара для ShaddyR

Железных Дел Мастер


Moderator


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

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


Цитата Iska:
В общем, как всегда: умолчания — зло. »
Цитата YuS_2:
когда используются маски типа "x:" (а это именно маска, т.к. отсутствует конкретное имя и подставляется "x:\*.*"), »
да какой же ебил решил, что если я не указал маску - значит, ее надо придумать за меня? Я же ему сказал дословно "где" и "что именно", сфигали лезть интеллект проявлять? Понял, спасибо, буду внимательнее читать хелп. В любом случае, инцидент много о чем напомнил и был даже весьма полезен, как я и написал выше.
>
Захаров,
Скрытый текст
строить из себя психолога будешь в другом месте, здесь ни конференция вообще, ни раздел или тема в частности не подходят. Остальные инсинуации - следствие твоей (само)уверенности в том, что ты что-то знаешь обо мне и много о людях. В двух словах - вообще мимо, во всех "аргументах". Почему - можешь попробовать применить свою аналитику на себя - может, чего узнаешь нового. Это же касается и вымышленной "угрозы" - перечитай это сообщение заново, оно содержит ответ и на этот "вопрос". Если желаешь поспорить и доказать, как ты немеряно крут в понимании других - ЛС к твоим услугам, там же я тебе все расскажу более подробно... если захочешь

-------
[FAQ] Как определить аппаратную конфигурацию компьютера и правильно задать вопрос
-------
В благодарность за помощь нажимаем ссылочку "Полезное сообщение" внизу этого самого сообщения (подробнее). Помните: админ конфеты НЕ ПЬЁТ ;)
-------
Говори, что думаешь и думай, что говоришь! (c) || МОЙ ShaddyR.at.UA/blog - Новая метла и инвентаризация)


Отправлено: 01:50, 09-07-2021 | #18


Ветеран


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

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


ShaddyR, в любом случае, это было ещё до MS DOS.

Отправлено: 06:20, 09-07-2021 | #19


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата ShaddyR:
да какой же ебил решил, что если я не указал маску - значит, ее надо придумать за меня? »
Хоть я и ругаю иногда микрософт за его недосмотры, но в данном случае, возможно, я сам выразился недостаточно верно.
Если заглянуть в хелп, там указано:
Цитата:
имена Список из одного или нескольких файлов или каталогов.
Для удаления группы файлов можно использовать подстановочные
знаки. Если указан каталог, будут удалены все файлы в этом
каталоге.
То бишь, в данном случае, x: - это каталог (ну или иначе - диск с корневым каталогом, согласно синтаксису CMD), а ключ /s - рекурсия, т.е. скрипт выполняет вполне то, что ему указано, несмотря на имя "__rar_*", которое для скрипта не является именем файла, это может быть и каталог, и файл. Т.о. для него, это два имени "x:" и "__rar_*", которые он и обрабатывает.
В общем, переходите на powershell, для таких задач он более вменяем, с точки зрения конкретных настроек и кроме того, существует возможность везде явно отделять каталоги от файлов.

-------
scio me nihil scire. Ѫ


Отправлено: 09:19, 09-07-2021 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Скрипт для удаления файлов и папок BKPB Скриптовые языки администрирования Windows 32 04-02-2018 20:14
Любой язык - Скрипт удаления файлов в папке старше N дней dobermann Скриптовые языки администрирования Windows 1 18-03-2016 20:31
VBS/WSH/JS - Скрипт удаления папок/подпапок и файлов zhuk09 Скриптовые языки администрирования Windows 4 07-12-2015 12:41
CMD/BAT - [решено] Как переделать скрипт удаления папок, на скрипт удаления файлов ufooo Скриптовые языки администрирования Windows 2 02-06-2015 12:22
CMD/BAT - [решено] Скрипт для удаления файлов. Bond01 Скриптовые языки администрирования Windows 8 01-10-2010 11:02




 
Переход