1 (изменено: ypppu, 2013-07-10 17:21:44)

Тема: CMD/BAT: Как игнорировать файлы при удалении?

Удаляю файлы так:

del /f /q *.cfg

как мне удалить все файлы *.cfg, но не удалять файлы 1.cfg, 2.cfg, 3.cfg

2

Re: CMD/BAT: Как игнорировать файлы при удалении?

Как то так (для пакетного файла "%" надо удвоить):

for %i in (*.cfg) do if not "%~ni"=="1" if not "%~ni"=="2" if not "%~ni"=="3" del /f /q "%~i"
Забыл пароль и потерял e-mail.

3 (изменено: Hydrogenium, 2013-07-10 10:55:35)

Re: CMD/BAT: Как игнорировать файлы при удалении?

shiz пишет:
for %i in (*.cfg) do if not "%~ni"=="1" if not "%~ni"=="2" if not "%~ni"=="3" del /f /q "%~i"

добавил строку в *.bat
чё-то не фурычит
))

4

Re: CMD/BAT: Как игнорировать файлы при удалении?

shiz пишет:

(для пакетного файла "%" надо удвоить)

Забыл пароль и потерял e-mail.

5

Re: CMD/BAT: Как игнорировать файлы при удалении?

Ekklesiast пишет:

добавил строку в *.bat

чё-то не фурычит

«Подымите мне очи…»:

shiz пишет:

для пакетного файла "%" надо удвоить

6

Re: CMD/BAT: Как игнорировать файлы при удалении?

спасиб ))

7

Re: CMD/BAT: Как игнорировать файлы при удалении?

Ekklesiast, напишите заголовок темы по-русски.

8 (изменено: Hydrogenium, 2013-07-10 13:38:54)

Re: CMD/BAT: Как игнорировать файлы при удалении?

del

9

Re: CMD/BAT: Как игнорировать файлы при удалении?

добрый день!
если задание изменим: удалить все файлы *.cfg, кроме самого "старого" *.cfg
как теперь будет выглядеть батник?

10 (изменено: shiz, 2013-07-13 16:51:04)

Re: CMD/BAT: Как игнорировать файлы при удалении?

rost, попробуйте на свой страх и риск:

for /f "skip=1 delims=" %%i in ('dir /b /o:-d *.cfg') do del "%%~i"
Забыл пароль и потерял e-mail.

11 (изменено: rost, 2013-07-13 19:44:27)

Re: CMD/BAT: Как игнорировать файлы при удалении?

зачет

12

Re: CMD/BAT: Как игнорировать файлы при удалении?

Ещё способ исключить файлы при удалении - поставить исключаемым файлам атрибуты скрытый и/или системный в любой комбинации командой attrib. После команды del снять атрибуты.
Можно наоборот - удаляемым файлам поставить нужные атрибуты, а в команде del использовать ключ /a

13 (изменено: Hydrogenium, 2013-12-29 20:36:58)

Re: CMD/BAT: Как игнорировать файлы при удалении?

След. задача:

Есть папка, мне там нужно удалить все файлы кроме файлов с расширением *.cfg и *.txt
Также нужна возможность задавать переменный путь и маски (*.cfg и *.txt), типа так:


set FILEMASK= *.cfg and *.txt
set FILEPATH= 1

for %%i in ('dir /b /s "%FILEPATH%\*.*"') do if not "%%~ni"==%FILEMASK% del /f /q "%%~i"

Подскажите как сделать

14

Re: CMD/BAT: Как игнорировать файлы при удалении?

После проверки замени ECHO на DEL:

set "FILEMASK=.*\.cfg$ .*\.txt$"
set "FILEPATH=P:\subdir"

pushd "%FILEPATH%"
for /f "delims=" %%i in ('dir /a:-d /b^|findstr /v /i "%FILEMASK%"') do echo "%%i"
popd

15 (изменено: Hydrogenium, 2013-12-30 00:44:37)

Re: CMD/BAT: Как игнорировать файлы при удалении?

wisgest, Спасиб



След. задача:


set "FILEMASK=.*\a3dapi.dll$"
set "FILEMASK=%FILEMASK% .*\voice_tweak.exe$"
set "FILEMASK=%FILEMASK% .*\Mssv12.asi$"
set "FILEMASK=%FILEMASK% .*\.wad$"
set "FILEPATH=1"
pushd "%FILEPATH%"
for /f "delims=" %%i in ('dir /a:-d /b^|findstr /v /i "%FILEMASK%"') do del /f /q /a "%%i"
popd

Как-то неудобно сделал список игнорируемых файлов (их будет штук 20)  в столбик.

Хотелось бы как-то так:


set "FILEMASK=
.*\a3dapi.dll$
.*\voice_tweak.exe$
.*\Mssv12.asi$
.*\.wad$"

Заранее огромное спасибо.

16 (изменено: wisgest, 2013-12-30 03:20:34)

Re: CMD/BAT: Как игнорировать файлы при удалении?

Ekklesiast пишет:

Хотелось бы как-то так:

Это элементарно:

set FILEMASK=^
.*\a3dapi.dll$ ^
.*\voice_tweak.exe$ ^
.*\Mssv12.asi$ ^
.*\.wad$

Только что-то меня берёт сомнение, правильно ли в данном случае составлен шаблон для FINDSTR.
По-моему, должно быть так (не проверял):

set FILEMASK=^
^^a3dapi\.dll$ ^
^^voice_tweak\.exe$ ^
^^Mssv12\.asi$ ^
.*\.wad$

~~~~~~~~~~~~~~~~~~~~
По поводу последнего примера до правки:

Ekklesiast пишет:

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

for %%i in (bin\*.cfg) do ^
  if not "%%~ni"=="auto" ^
  if not "%%~ni"=="config" ^
  if not "%%~ni"=="default" ^
  if not "%%~ni"=="lang" ^
  if not "%%~ni"=="listen" ^
  if not "%%~ni"=="server" ^
  if not "%%~ni"=="skill" ^
  if not "%%~ni"=="violence" ^
    del /f /q "%%~i"
setlocal enabledelayedexpansion
set IF=auto\config\default\lang\listen\server\skill\violence
set IF=\%IF:\=" \%"
set IF=!IF:\=if not "%%~ni"=="!
for %%i in (bin\*.cfg) do %IF% del /f /q "%%~i"
setlocal enabledelayedexpansion
set IF=auto^
\config^
\default^
\lang^
\listen^
\server^
\skill^
\violence
set IF=\%IF:\=" \%"
set IF=!IF:\=if not "%%~ni"=="!
for %%i in (bin\*.cfg) do %IF% del /f /q "%%~i"

(В двух последних примерах исправил «*» на «bin\*.cfg».)

17 (изменено: Hydrogenium, 2013-12-30 01:28:27)

Re: CMD/BAT: Как игнорировать файлы при удалении?

wisgest, спасиб