Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Удаление по маске, кроме папки исключения. (http://forum.oszone.net/showthread.php?t=211016)

serjei 12-07-2011 13:50 1711822

[решено] Удаление по маске, кроме папки исключения.
 
Всем привет, есть такой вот батник:
@echo off
For /R C:\ %%i in (*.mp3,*.jpg,*.jpeg,*.avi,*.mov) Do (
Del /q "%%i")

Подскажите как можно сделать так что бы этот батник работал но не удалял ничего в папке C:\Shared
Если через бат такое нельзя, то если не затруднит выложите на другом языке, подходящем для logon скрипта win 2k3.

amel27 12-07-2011 15:48 1711899

Цитата:

Цитата serjei
что бы этот батник работал но не удалял ничего в папке C:\Shared »

такой вариант:
Код:

for /d %%a in ("C:\*") do if /i not "%%a"=="C:\Shared" (del/s/q %%~sa\*.mp3 %%~sa\*.jpg %%~sa\*.jpeg %%~sa\*.avi %%~sa\*.mov
)


serjei 13-07-2011 04:56 1712226

Работает, только в корне диска С:/ не удаляет ничего.

amel27 13-07-2011 05:29 1712230

Цитата:

Цитата serjei
в корне диска С:/ не удаляет »

добавить отдельную строку для этого случая:
Код:

for /d %%a in (C:\*) do if /i not "%%a"=="C:\Shared" del/s/q %%~sa\*.mp3 %%~sa\*.jpg %%~sa\*.jpeg %%~sa\*.avi %%~sa\*.mov
del /q C:\*.mp3 C:\*.jpg C:\*.jpeg C:\*.avi C:\*.mov


serjei 13-07-2011 09:44 1712307

Большое спасибо.

serjei 01-08-2011 06:57 1723681

Подниму тему, дабы не плодить)) А как вместо удаления сделать перемещение файлов в сетевую папку на основе этого батника? Так что бы он сканил по расширению и перемещал эти файлы на сетевую папку.

amel27 01-08-2011 10:58 1723769

serjei, на основе этого батника не получится - в отличии от DEL, команда MOVE НЕ может:

- самостоятельно обрабатывать подкаталоги;
- принимать в командной строке несколько параметров - шаблонов имен файлов

Поэтому, требуется максимально конкретная постановка новой задачи: ЧТО и КУДА перемещать... Кстати, при перемещении из разных подкаталогов имена файлов могут совпасть, как быть в этом случае?.. На форуме неоднократно поднимались похожие темы, для примера:

CMD/BAT - [решено] Батник сбора файлов из поддиректорий в общую папку
CMD/BAT - [решено] Перемещение и удаление файлов по условию и маске

serjei 01-08-2011 11:16 1723780

Собственно нужно все .mp3 .jpg и проч удалять на компах юзверей. Но собственно не все пользователи перенесли рабочие фото на сервер, так вот чтоб не нароком ничего лишнего не удалить, первое время я хотел скидывать все доки на сервер, и если там что важное, то вернуть хозяину с "бонусом" за внимательность. Этот батник который все удаляет, сканит ведь винты по маске и удаляет, а мне нужно что бы он так же сканил винты но не удалял а переносил все на сервер.

http://forum.oszone.net/showthread.php?p=1179744 вот этот подходит вроде, но я со своими познаниями врядли интерпретирую)) Может кто поможет в этом деле?

amel27 01-08-2011 14:17 1723921

serjei, вариант с сохранением исходной структуры каталогов,
для каждого ПК на сервере создается своя папка с таким же именем:
Код:

@echo off
set SHARE=\\MyServer\BACKUP

for /d %%a in (C:\*) do (set "$a=%%a"
 SetLocal EnableDelayedExpansion
 if /i not "!$a:~3!"=="Shared" if /i not "!$a:~3!"=="Windows" if /i not "!$a:~3!"=="Program Files" (
  pushd "!$a!\" && (for /f "delims=" %%A in ('"dir/b/s/a-d *.jpg *.mp3 2>Nul"') do (
  xcopy/q/y/z/v "%%A" "%SHARE%\%ComputerName%%%~pA">Nul && del/f/q "%%A")
  popd))
EndLocal)


serjei 02-08-2011 04:52 1724310

Спасибо))

serjei 03-08-2011 12:13 1725113

Вдруг вот при выполнении появилось это
@echo off
for /d %%a in (C:\*) do if /i not "%%a"=="C:\Windows" "C:\Program Files" (del/s/q %%~sa\*.mp3 %%~sa\*.jpg %%~sa\*.jpeg %%~sa\*.avi %%~sa\*.mov)

неожиданное появление: %%a.

del /q C:\*.mp3 C:\*.jpg C:\*.jpeg C:\*.avi C:\*.mov

Хотя при тестах все удалялось, что на тестовой, что на рабочей машине.

amel27 03-08-2011 13:01 1725155

Цитата:

Цитата serjei
for /d %%a in (C:\*) do if /i not "%%a"=="C:\Windows" "C:\Program Files" »

гм.. эт конечно неправильно, но в моём коде нет такого...
способ получения полного лога: http://forum.oszone.net/post-1675364-18.html

serjei 03-08-2011 13:48 1725175

@echo off
for /d %%a in (C:\*) do if /i not "%%a"=="C:\Windows" "C:\Program Files" (del/s/q %%~sa\*.mp3 %%~sa\*.jpg %%~sa\*.jpeg %%~sa\*.avi %%~sa\*.mov)
del /q C:\*.mp3 C:\*.jpg C:\*.jpeg C:\*.avi C:\*.mov

for /d %%a in ("D:\*") do if /i not "%%a"=="D:\Shared" (del/s/q "%%~sa\*.mp3" "%%~sa\*.jpg" "%%~sa\*.jpeg" "%%~sa\*.avi" "%%~sa\*.mov")
del /q D:\*.mp3 D:\*.jpg D:\*.jpeg D:\*.avi D:\*.mov

for /d %%a in ("E:\*") do if /i not "%%a"=="E:\Shared" (del/s/q "%%~sa\*.mp3" "%%~sa\*.jpg" "%%~sa\*.jpeg" "%%~sa\*.avi" "%%~sa\*.mov")
del /q E:\*.mp3 E:\*.jpg E:\*.jpeg E:\*.avi E:\*.mov


Это батник который запускаю.
Лог:
""C:\Program Files"" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
""C:\Program Files"" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
""C:\Program Files"" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
""C:\Program Files"" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Не удается найти C:\*.mp3
Не удается найти D:\FM42XX~1.24\*.mp3
Не удается найти D:\Manuals\*.mp3
Не удается найти D:\Share\*.mp3
Не удается найти D:\Virtual\*.mp3
Удален файл - D:\6239~1\Акт титул.jpg
Удален файл - D:\6239~1\стр.1.jpg
Удален файл - D:\6239~1\стр.2.jpg
Не удается найти D:\*.mp3

я в общем совсем запутался))

amel27 03-08-2011 14:29 1725206

serjei, может так?
Код:

@echo off
for /d %%a in (C:\* D:\* E:\*) do (
if /i not "%%a"=="C:\Windows" if /i not "%%a"=="C:\Program Files" if /i not "%%a"=="D:\Shared" if /i not "%%a"=="E:\Shared" (
del/s/q %%~sa\*.mp3 %%~sa\*.jpg %%~sa\*.jpeg %%~sa\*.avi %%~sa\*.mov
))

P.S. используйте для кода/содержимого файлов и логов тег CODE... плз

serjei 04-08-2011 05:18 1725635

спс, отпишусь по результатам.

Цитата:

P.S. используйте для кода/содержимого файлов и логов тег CODE... плз

Я в програмированнии полный ноль)) если можно то опишите подробней плз данное действие.

ferget 04-08-2011 08:11 1725655


serjei 04-08-2011 09:40 1725687

Ах вон про что)) я то думал про другое.

serjei 05-08-2011 16:23 1726452

А возможно ли исключить USB устройства из сканирования? даже если флешка имеет букву диска D или E.

iDrug 04-02-2012 22:08 1851929

пожалуйста, напишите мне батник который бы
1. удалял все папки (вместе с их содержимым) внутри C:\windows\ у которых имя начинается с $NtUninstallKB и чтобы не было никаких запросов.
т.е. мне надо что-то типа
Код:

rd c:\windows\$ntuninstallkb* /s /q
но только в cmd rd не поддерживает * (в отличие от del).

2. удалял бы все папки внутри c:\WINDOWS\$hf_mig$\ но не её саму - на случай, если винда не догадается в след. раз её сначала создать, а также ради того, чтобы узнать как это наконец делается, ведь
Код:

rd c:\windows\$hf_mig$\* /s /q
нельзя использовать по вышеописанной причине.

Anonymоus 04-02-2012 22:43 1851961

1.
Код:

For /F "delims=" %%D In ('Dir "%WinDir%\$ntuninstallkb*" /B /A:D') Do (RD /S /Q "%WinDir%\%%D")
2.
Код:

For /F "delims=" %%D In ('Dir "%WinDir%\$hf_mig$\" /B /A:D') Do (RD /S /Q "%WinDir%\$hf_mig$\%%D")

iDrug 05-02-2012 00:59 1852014

Anonymоus,
Непредвиденное появление: %%D.
Foreigner, Anonymоus,
спасибо!

Foreigner 05-02-2012 07:55 1852095

iDrug,

Если прямо из cmd, то используй %D вместо %%D

iDrug 13-02-2012 03:56 1857420

Anonymоus,
а можно ещё 2 скрипта, пожалуйста?
Цитата:

Цитата Anonymоus
For /F "delims=" %%D In ('Dir "%WinDir%\$hf_mig$\" /B /A:D') Do (RD /S /Q "%WinDir%\$hf_mig$\%%D") »

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

Anonymоus 13-02-2012 05:09 1857428

iDrug, для удаления всех файлов, включая файлы в поддиректориях, но не трогая сами директории:
Код:

For /R "D:\Test" %%A In (*) Do (Del "%%A")
А это для удаления вообще всего - и файлов, и поддиректорий из указанного места, будьте осторожны.
Код:

For /F "delims=" %%A In ('Dir "D:\Test\*" /B') Do (RD /S /Q "D:\Test\%%A" 2>nul||Del /Q "D:\Test\%%A")

iDrug 13-02-2012 21:21 1858009

Цитата:

Цитата Anonymоus
для удаления всех файлов, включая файлы в поддиректориях »

а можно именно без поддиректорий?

Anonymous, спасибо.

Anonymоus 13-02-2012 22:01 1858037

Код:

For /F "delims=" %%A In ('Dir "D:\Test\*" /B /A-D') Do (Del "D:\Test\%%A")

ddv122 17-02-2012 22:53 1861132

не хочу создавать новую тему подскажите, реально ли сделать поиск файлов .*exe на диске по именам папок в корне диска и удалить его
к примеру\
на диске С: папка opera
нужно найти файл Opera.exe
и удалить его

Iska 18-02-2012 03:42 1861216

Цитата:

Цитата ddv122
не хочу создавать новую тему »

Цитата:

Цитата Iska
ddv122, чем раньше Вы поймёте, что не надо превращать темы в чаты, тем лучше. Один вопрос — одна тема. »



Время: 14:08.

Время: 14:08.
© OSzone.net 2001-