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

Аватара пользователя
megaloman

Re: CMD/BAT - BAT-скрипт удаления файлов

Сообщение megaloman »

CMD по имени

Код:

Код: Выделить всё

@Echo Off
cls
	Set "BoxIn=Z:\Box_In"
	Set "Find=^.*[0-9][0-9]\.jpg$"
	For /f "usebackq delims=" %%f In (`2^>nul Dir /B /A:-D /O:-N "%BoxIn%\*.*" ^| findstr.exe /R /I /C:"%Find%"`) Do (
		If Exist "%BoxIn%\%%f" (
			Set "Name=%%~nf"
			For /f "usebackq skip=1 delims=" %%i In (`2^>nul Call Dir /B /A:-D /O:-N "%BoxIn%\%%Name:~0,-2%%*.*" ^| findstr.exe /R /I /C:"%Find%"`) Do Del "%BoxIn%\%%i"
		)
	)
pause
Exit /B

Если по размеру, заменить /O:-N на /O:-S

во втором For
Аватара пользователя
ShaddyR

Re: CMD/BAT - BAT-скрипт удаления файлов

Сообщение ShaddyR »

ShaddyR,
Цитата ShaddyR:



Вопрос: WHY???
CMD/BAT - BAT-скрипт удаления файлов




Опечатка с потерянным x:?

Команда del x: /f /s /q "__rar_*" удалит сначала X:, затем "__rar_*". Для сей команды порядок ключей и имён/масок файлов/каталогов не важен.
Аватара пользователя
iglezz

Re: CMD/BAT - BAT-скрипт удаления файлов

Сообщение iglezz »

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

Re: CMD/BAT - BAT-скрипт удаления файлов

Сообщение greg zakharov »

Цитата iglezz:



Опечатка с потерянным x:?
CMD/BAT - BAT-скрипт удаления файлов




то бишь, "x:\__rar_*" ?

Тоже не вяжется:


Цитата iglezz:



Команда del x: /f /s /q "__rar_*" удалит сначала X:
CMD/BAT - BAT-скрипт удаления файлов




что невозможно по определению, не так ли? А вот дальше - см. п.1 -


Цитата ShaddyR:



Побёг лог убиваемого, который мне намекнул на то, что на самом деле всё совсем не так, как в реальности: эта дура стала сносить всё подряд, вне зависимости от типа, пути и имени файла.
CMD/BAT - BAT-скрипт удаления файлов




Повторюсь еще раз: в имени убитых файлов не было ни намёка на ни на rar, ни на __ и уж никак не на какие-либо их совмещения. Эта команда НЕ ДОЛЖНА БЫЛА убить ничего лишнего, вот в чем соль. Иначе - обоснуй, где я свернул в нетуда.

>

Захаров, тебе лично могу организовать юбилейную подарочную перманентную подпись БАЛАБОЛ. Не желаешь? Есть что по сути сказать?
Аватара пользователя
ShaddyR

Re: CMD/BAT - BAT-скрипт удаления файлов

Сообщение ShaddyR »

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



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



del /?

[spoiler]Код:
[/spoiler]

Код: Выделить всё

Удаление одного или нескольких файлов.
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

Re: CMD/BAT - BAT-скрипт удаления файлов

Сообщение Iska »

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



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



del /?

[spoiler]Код:
[/spoiler]

Код: Выделить всё

Удаление одного или нескольких файлов.
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_*» в текущем каталоге текущего диска.



В общем, как всегда: умолчания — зло.
Аватара пользователя
greg zakharov

Re: CMD/BAT - BAT-скрипт удаления файлов

Сообщение greg zakharov »

Цитата Iska:



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

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

В общем, как всегда: умолчания — зло.
CMD/BAT - BAT-скрипт удаления файлов




Следует ещё добавить, что в таких случаях, когда используются маски типа "x:" (а это именно маска, т.к. отсутствует конкретное имя и подставляется "x:\*.*"), ключ /s (рекурсия), вообще вселенское зло, т.к. команда DEL с таким набором ключей, будет почти аналогичной "format x:"... Изображение
Аватара пользователя
YuS_2

Re: CMD/BAT - BAT-скрипт удаления файлов

Сообщение YuS_2 »

Цитата Iska:



В общем, как всегда: умолчания — зло.
CMD/BAT - BAT-скрипт удаления файлов





Цитата YuS_2:



когда используются маски типа "x:" (а это именно маска, т.к. отсутствует конкретное имя и подставляется "x:\*.*"),
CMD/BAT - BAT-скрипт удаления файлов




да какой же ебил решил, что если я не указал маску - значит, ее надо придумать за меня? Я же ему сказал дословно "где" и "что именно", сфигали лезть интеллект проявлять? Понял, спасибо, буду внимательнее читать хелп. В любом случае, инцидент много о чем напомнил и был даже весьма полезен, как я и написал выше.

>

Захаров,


Скрытый текст

[spoiler]строить из себя психолога будешь в другом месте, здесь ни конференция вообще, ни раздел или тема в частности не подходят. Остальные инсинуации - следствие твоей (само)уверенности в том, что ты что-то знаешь обо мне и много о людях. В двух словах - вообще мимо, во всех "аргументах". Почему - можешь попробовать применить свою аналитику на себя - может, чего узнаешь нового. Это же касается и вымышленной "угрозы" - перечитай это сообщение заново, оно содержит ответ и на этот "вопрос". Если желаешь поспорить и доказать, как ты немеряно крут в понимании других - ЛС к твоим услугам, там же я тебе все расскажу более подробно... если захочешь Изображение[/spoiler]
Аватара пользователя
ShaddyR

Re: CMD/BAT - BAT-скрипт удаления файлов

Сообщение ShaddyR »

ShaddyR, в любом случае, это было ещё до MS DOS.
Аватара пользователя
Iska

Re: CMD/BAT - BAT-скрипт удаления файлов

Сообщение Iska »

Цитата ShaddyR:



да какой же ебил решил, что если я не указал маску - значит, ее надо придумать за меня?
CMD/BAT - BAT-скрипт удаления файлов




Хоть я и ругаю иногда микрософт за его недосмотры, но в данном случае, возможно, я сам выразился недостаточно верно.

Если заглянуть в хелп, там указано:


Цитата:



имена Список из одного или нескольких файлов или каталогов.

Для удаления группы файлов можно использовать подстановочные

знаки. Если указан каталог, будут удалены все файлы в этом

каталоге.



То бишь, в данном случае, x: - это каталог (ну или иначе - диск с корневым каталогом, согласно синтаксису CMD), а ключ /s - рекурсия, т.е. скрипт выполняет вполне то, что ему указано, несмотря на имя "__rar_*", которое для скрипта не является именем файла, это может быть и каталог, и файл. Т.о. для него, это два имени "x:" и "__rar_*", которые он и обрабатывает.

В общем, переходите на powershell, для таких задач он более вменяем, с точки зрения конкретных настроек и кроме того, существует возможность везде явно отделять каталоги от файлов.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»