![]() |
Нужен Bat-ник который будет удалять файлы в папке с определенным расширением
есть папка (например) C:\Files. В ней есть ещё папки. В этих папках среди других файлов есть файлы с расширением *.r01, *.r02, *.r28 и с другими цифрами.
В ней нужно удалить файлы которые имеют расширение отличное от *.r01 и *.r16. То есть эти оставить, а с другими цифрами удалить. Каким будет батник? |
intersk,
Код:
@echo off |
intersk, №2
Код:
For /R "C:\Files" %%A In (*) Do If /i "%%~xA" NEQ ".r01" If /i "%%~xA" NEQ ".r16" Del /F /Q "%%A" 2>nul |
до кучи:
Код:
for /f "delims=" %%a in ('dir/b/s/a-d *^|findstr/eiv "\.r01 \.r16"') do del "%%a" |
Цитата:
|
ferget, так понятней?
Код:
findstr /e /i /r /v "\.r01 \.r16" |
Цитата:
|
ferget,
Код:
dir /b /s /a-d |
Уточню свой вопрос - Файлы в расширении имеют первую букву либо *.rxx либо *.hxx.
xx - это цифры. Они разные. Нужно оставить только с цифрами 01 и 16 (*.r01, *.r16, *.h01, *.h16). В папках ещё есть разные файлы. Остальные файлы в папках не удалять!!!! PS. сработал только первый вариант...но почему то файл *.cmd удаляется после работы...(и удаляет все файлы - но теперь уточнил свою задачу) |
Цитата:
Код:
for /f "delims=" %%a in ( |
|
Цитата:
Код:
findstr/eir "\.[rh][0-9][0-9]*" Код:
help findstr|more |
всего звездочку нужно поставить - вот это логическая красота! такие тонкости знаешь!
а можно данный батник запаковать в какой исполняемый файл? (при запуске выбираешь целевую папку в которой надо "почистить" и по окончании список того что удалено) |
Цитата:
если действительно надо - лучше посмотреть в сторону AutoIT/AHK Цитата:
- оформить ввод папки через параметр; - назвать батник что-нибудь типа "Чистка папки.CMD"; - скопировать его в папку "%UserProfile%\SendTo"; - выбрать в обозревателе папку и "отправить" на батник |
понятно, буду пользоваться простым способом - помещением батника в нужную папку. Тема решена!
|
Цитата:
|
понадобилась модернизация командного файла )
Еще нужно поудалять файлы такие: они содержать в себе [название][_][цифры].rsc (*****_42.rsc)/ Нужно оставить только файлы содержащие _01.rsc, _16.rsc, _93.rsc Код для удаления файлов НЕ *.r01, *.r16, *r.93 и *.h01, *.h16, *h.93 будет такой (под спойлером - прошу проверить) PS у автора командного файла заранее прошу разрешения на указание его ника при пользовании командным файлом |
Цитата:
Код:
'dir/b/s/a-d^|findstr/eir "_[0-9][0-9]*\.rsc"^|findstr/eirv "_01\.rsc _16\.rsc _93\.rsc"' |
amel27, так? или можно как то в "одну" строку уместить?
@echo off if not exist "%~1\" exit pushd "%~1" set $i=0& for /f "delims=" %%a in ( 'dir/b/s/a-d^|findstr/eir "\.[rh][0-9]*"^|findstr/eirv "\.[rh]01 \.[rh]16 \.[rh]93"' 'dir/b/s/a-d^|findstr/eir "_[0-9][0-9]*\.rsc"^|findstr/eirv "_01\.rsc _16\.rsc _93\.rsc"' ) do del "%%a">nul&&(echo %%a & set/a $i+=1) if %$i% gtr 0 ( echo ----------------- echo %$i% files deleted pause>nul ) И чтобы в конце работы батника было "для закрытия окна нажмите любую клавишу" |
|
Время: 15:18. |
Время: 15:18.
© OSzone.net 2001-