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

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

Ответить
Настройки темы
CMD/BAT - [решено] Перемещение файлов с исключением по пути.

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


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

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


Изменения
Автор: Xarien
Дата: 10-06-2013
Описание: Изменение темы.
Есть Батник по поиску и перемещению определённых типов файлов (по расширению) с системного диска на сетевой диск.
Есть список папок исключения.


HTML код: Выделить весь код
@echo on del %SystemDrive%\*.tmp /f /s /q ping -n 5 127.0.0.1 > NUL ping -n 5 127.0.0.1 > NUL ping -n 5 127.0.0.1 > NUL MD Y:\Clean\%USERNAME% If Not Exist "Y:\Clean" ( Exit ) cacls "Y:\Clean\%USERNAME%" /E /G %USERNAME%@domainname.local:F cacls "Y:\Clean\%USERNAME%" /E /R domainname\DomainUsers for /d %%a in (%SystemDrive%\*) do (set "$a=%%a" SetLocal EnableDelayedExpansion if /i not "!$a:~3!"=="Windows" if /i not "!$a:~3!"=="Program Files" if /i not "!$a:~3!"=="Miranda" ( pushd "!$a!\" && (for /f "delims=" %%A in ('"dir/b/s/a-d *.mp3 *.rar *.zip *bak 2>Nul"') do ( xcopy /s /y /h /i "%%A" "Y:\Clean\%USERNAME%%%~pA">Nul && del /f /s /q "%%A" ) popd)) copy /y %SystemDrive%\*.mp3* Y:\Clean\%USERNAME% copy /y %SystemDrive%\*.rar* Y:\Clean\%USERNAME% copy /y %SystemDrive%\*.zip* Y:\Clean\%USERNAME% copy /y %SystemDrive%\*.bak* Y:\Clean\%USERNAME% del /q %SystemDrive%\*.mp3 %SystemDrive%\*.rar %SystemDrive%\*.zip %SystemDrive%\*.bak EndLocal) %SystemDrive% cd "%temp%" del /f /s /q *.*


Проблема в следующем. Исключения по папкам работают только в том случае, если они находятся в корне диска.

Необходимо добавить пару файлов (или вложенных папок с файлами ) в исключения, и если что редактировать bat-ник и дописывать исключения (лучше если это будет делаться прямо в bat файле, а не в отдельном txt с исключениями)

Примеры исключений которые должны работать:
C:\Documents and Settings\All Users\Application Data\Microsoft\OFFICE\DATA\OPA12.bak
C:\Documents and Settings\USERNAME\Local Settings\Application Data\Programs\Opera\skin\standard_skin.zip

Подскажите пожалуйста, как это сделать, что бы не сильно переписывать существующий Bat файл.

Заранее благодарен

Отправлено: 15:39, 06-06-2013

 

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


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

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


Граждане. Неужели никто не в силах мне помочь?

Отправлено: 23:55, 12-06-2013 | #2



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

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


Ветеран


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

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


Почитайте справку по xcopy, он умеет исключения.
Код: Выделить весь код
xcopy /e "SourcePath" "DestPath\" /exclude:exclude.txt
В exclude.txt пишите ваши исключения -- может быть название файла, часть пути, расширение. Для каждого исключения отдельная строка.
Код: Выделить весь код
\OFFICE\DATA\OPA12.bak
\Opera\skin\standard_skin.zip

Отправлено: 07:31, 13-06-2013 | #3


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


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

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


Foreigner, Спасибо. Почти получилось. Проблема в том, что для файлы всё равно удаляются. Они не копируются. Это работает. Но надо, что бы они и не удалялись.

Отправлено: 15:20, 13-06-2013 | #4


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


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

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


Разобрался. Спасибо

Хотя остался ещё вопрос. Предполагается читска по всем локальным дискам. не помню метку, к сожалению..
Но.. можно ли как-то отличить флэшку от локального диска срадствами командной строки?

Отправлено: 16:16, 13-06-2013 | #5


Ветеран


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

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


Если она — съёмное устройство, то можно: Win32_LogicalDisk class (Windows).
Код: Выделить весь код
wmic.exe LogicalDisk get Name, DriveType

Отправлено: 16:42, 13-06-2013 | #6


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


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

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


немного не понятно, как исключить её из сканирования ?

Отправлено: 17:22, 14-06-2013 | #7


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


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

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


Благодаря Foreigner, тема была решена.Правда немного в другой теме.


Решение

PHP код: Выделить весь код

@echo on
del 
%SystemDrive%*.tmp ///q
ping 
-n 5 127.0.0.1 NUL
ping 
-n 5 127.0.0.1 NUL
ping 
-n 5 127.0.0.1 NUL
MD Y
:Clean%USERNAME%
If 
Not Exist "Y:\Clean" (
Echo 
Otsutstvet Setevoi DiskY:Clean

del c
:exclude.txt
del 
%0
pause
&Exit

cacls "Y:\Clean\%USERNAME%" //%USERNAME%@domainname.com:F
cacls 
"Y:\Clean\%USERNAME%" //R domainnamedomainUsers
setlocal

set 
"wmic=wmic logicaldisk where drivetype=3 get name /value"

:: Определяем локальные диски
for /"tokens=2 delims==" %%i in (' "%wmic%" ') do call:%%i

:: Что-то делаем со список папок из корня каждого локального диска
for /"tokens=2,5 delims=?:=" %%i in (' set folder? ') do (
    
    
xcopy ////"%%i:%%j\*.aaa" "Y:\Clean\%USERNAME%\%%i\%%~nxj\"
    xcopy /s /y /h /i "
%%i:%%j*.bbb" "Y:Clean%USERNAME%%%i%%~nxj"
    echo del /s "
%%i:%%j*.aaa"
    echo del /s "
%%i:%%j*.bbb"



)

setlocal

set "
wmic=wmic logicaldisk where drivetype="3" get name"

Set NoDelete=C:\exclude.txt
@Echo %0 >%NoDelete%

@Echo \OFFICE\ >>%NoDelete%
@Echo \Windows\ >>%NoDelete%
@Echo \skin\ >>%NoDelete%
@Echo \Program Files\ >>%NoDelete%
@Echo \Program Files (x86)\ >>%NoDelete%
@Echo \totalcmd\ >>%NoDelete%

for /f %%i in (' "
%wmic%" ') do if exist %%i (

for %%j in (.aaa .bbb .ccc .ddd .xxx .yyy .jjj) do (

FOR /F "
usebackq delims=" %%f IN (`xcopy /s /y /h /i "%%i*%%j" "Y:Clean%USERNAME%" /L /EXCLUDE:%NoDelete%`) DO Del "%%f"
)
)

goto:eof

:1

pushd %1

:: Исключаем из корня диска скрытые и системные папки
for /f "
tokens=*" %%i in ('dir /b /ad-s-h') do set "folder?%1%%~snxi=%%~fi"

:: А так же те папки, которые надо исключить (их указывать короткими именами)
for %%i in (PROGRA~1,PROGRA~2,Windows,Users,MUSIC) do set "
folder?%1%%i="

:: Копируем/удаляем файлы из корня локальных дисков
for /f "
tokens=1 delims=:" %%i in ("%1") do (

    xcopy /y /h /i *.aaa "
Y:Clean%USERNAME%%%i"
    xcopy /y /h /i *.bbb "
C:Clean%USERNAME%%%i"
    echo del *.aaa
    echo del *.bbb

)

popd 


Отправлено: 07:44, 20-06-2013 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Помогите с написанием батника копирования с FTP по условиям. alexuvv Скриптовые языки администрирования Windows 5 24-06-2011 08:20
CMD/BAT - Связь батника з инетом Flashbag Скриптовые языки администрирования Windows 1 24-05-2010 14:33
CMD/BAT - [решено] Помогите с написанием Батника для запуска нескольких бат файлов по очереди Spike_LV Скриптовые языки администрирования Windows 2 01-04-2010 22:36
VBS/WSH/JS - Помогите написать аналог моего батника на VBS mitiya Скриптовые языки администрирования Windows 4 29-08-2009 16:21
CMD/BAT - Сложность с написанием батника.... 2. PupsIC Скриптовые языки администрирования Windows 1 16-09-2007 21:03




 
Переход