Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Windows Новый топик    Ответить
 Копирование и удаление файлов CMD  [new]
Alexey0371
Guest
Задача:
есть папки с:\1\ и с:\2\, в которых лежат файлы.
Нужно скопировать из 2 в 1 те файлы, которых нет в папке 1,
Удалть из папки 1 те файлы, которых нет в папке 2.
Нужно сделать это в командной строке.

Заранее благодарен.
24 сен 08, 07:44    [6220273]     Ответить | Цитировать Сообщить модератору
 Re: Копирование и удаление файлов CMD  [new]
Damien
Member

Откуда: седьмой круг
Сообщений: 2361
автор
Нужно скопировать из 2 в 1 те файлы, которых нет в папке 1,
Удалть из папки 1 те файлы, которых нет в папке 2.


удалить всё из 1 и скопировать туда 2 - не катит?
А для настоящей синхронизации есть мелкие и более простые в использовании утилиты. Включая бесплатные.
SyncBack
FolderShare
24 сен 08, 08:10    [6220298]     Ответить | Цитировать Сообщить модератору
 Re: Копирование и удаление файлов CMD  [new]
Alexey0371
Guest
Дело в том объем данных большой, если сделать как ты предлагаешь то это займет около 3 часов копирования.
24 сен 08, 08:15    [6220305]     Ответить | Цитировать Сообщить модератору
 Re: Копирование и удаление файлов CMD  [new]
Damien
Member

Откуда: седьмой круг
Сообщений: 2361
автор
Нужно скопировать из 2 в 1 те файлы, которых нет в папке 1,

если нужна ещё и замена старых файлов:

xcopy c:\источник\* \\другойкомпьютер\шара\ /D /Y

Если в папке 1 есть файлы имена которых есть в 2 и они должны оставаться нетронутыми (т.е. дословно - "Нужно скопировать из 2 в 1 те файлы, которых нет в папке 1"):

DIR t:\test1\ /B > t:\test3\list.txt
xcopy t:\test2\* t:\test1\ /D /Y /EXCLUDE:t:\test3\list.txt

в примере
t:\test1\ это 1
t:\test2\ это 2

bat файл и список в папке t:\test3

а вот над удалением несуществующих в папке 2 надо ещё подумать.
В утилитах синхронизаторах несколько проще.

http://www.2brightsparks.com/freeware/
SyncBack Freeware V3.2.19.0
Command Line - поддерживает, но надо посмотреть может ли он выполнить задачу...
24 сен 08, 08:54    [6220360]     Ответить | Цитировать Сообщить модератору
 Re: Копирование и удаление файлов CMD  [new]
Alexey0371
Guest
Копирование, я реализовал.
Проблема у меня в самом удаление.

А можно удалить список файлов, которые находятся в техстовом документе?
24 сен 08, 09:09    [6220388]     Ответить | Цитировать Сообщить модератору
 Re: Копирование и удаление файлов CMD  [new]
Damien
Member

Откуда: седьмой круг
Сообщений: 2361
про удаление:

[quote]@echo off
setlocal
set "folder=C:\Temp"
set "no_del_list=c:\no_del.txt"
for /f "tokens=*" %%a in ('dir /b /a-d "%folder%" ^| findstr /i /v /g:"%no_del_list%"') do del /q "%folder%\%%a" 2>nul


Вместо C:\Temp пишешь путь к директории, где надо удалить файлы.
Вместо c:\no_del.txt пишешь путь к файлу, где находится список имен, которые не надо удалять. Каждое имя файла в списке должно быть на новой строке.
http://forum.ru-board.com/topic.cgi?forum=5&topic=4582&start=1160
[/quote]
24 сен 08, 09:30    [6220454]     Ответить | Цитировать Сообщить модератору
 Re: Копирование и удаление файлов CMD  [new]
Alexey0371
Guest
Я так глубоко не вникал в это.
А почему после выполнения

for /f "tokens=*" %%a in ('dir /b /a-d "%folder%" ^| findstr /i /v /g:"%no_del_list%"') do del /q "%folder%\%%a" 2>nul

Мне пишет вот:
Непредвиденное появление: %%a.
24 сен 08, 11:33    [6221191]     Ответить | Цитировать Сообщить модератору
 Re: Копирование и удаление файлов CMD  [new]
Damien
Member

Откуда: седьмой круг
Сообщений: 2361
автор
А почему после выполнения

for /f "tokens=*" %%a in ('dir /b /a-d "%folder%" ^| findstr /i /v /g:"%no_del_list%"') do del /q "%folder%\%%a" 2>nul

Мне пишет вот:
Непредвиденное появление: %%a.



ну так параметры задаются двумя строками выше:

@echo off
setlocal
set "folder=C:\Temp"
set "no_del_list=c:\no_del.txt"

PS

да, и поосторожней там с экспериментами. Скрипт в мгновение ока может удалить нужную инфу и себя. Я уже файлы восстанавливал :)
24 сен 08, 12:01    [6221394]     Ответить | Цитировать Сообщить модератору
 Re: Копирование и удаление файлов CMD  [new]
Alexey0371
Guest
Все решил проблему!!

Создал батник:

xcopy D:\test\2 D:\test\1 /d /y
dir D:\test\2 /b >file.txt
D:\test\del_file.bat
------------

где
del_file.bat

@echo off
setlocal
set "folder=D:\test\1"
set "no_del_list=D:\test\file.txt"
for /f "tokens=*" %%a in ('dir /b /a-d "%folder%" ^| findstr /i /v /g:"%no_del_list%"') do del /q "%folder%\%%a" 2>nul
--------------

и все работает!

ps: спасибо Damien
24 сен 08, 14:59    [6222983]     Ответить | Цитировать Сообщить модератору
 Re: Копирование и удаление файлов CMD  [new]
rrrrrrrrrr
Member

Откуда: РТ
Сообщений: 6359
ага, работает, но может подвисать на больших файлах. В итоге оптимальный выбор все-таки robocopy (ResKit), который умеет, кстати, сам делать зеркало, т.е. именно синхронизировать, а не просто копировать
26 сен 08, 00:12    [6230643]     Ответить | Цитировать Сообщить модератору
Все форумы / Windows Ответить
 
Лучший учебный центр Microsoft!
Новейшие курсы Microsoft SQL Server 2014!
Статус Academy Oracle. Очень привлекательные цены на курсы Oracle!
Курсы MySQL. Много групп в сентябре!