Компьютерный форум 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=269164)

astronomares 02-10-2013 11:14 2227266

Копирование файлов без замены
 
Подскажите пожалуйста есть ли возможность создать такой батник.
он должен из одной папки скопировать во вторую файлы новые за сегодня.
copy дает возможность копировать файлы с заменой. но мне надо чтобы во второй папке файлы которые уже там есть не перезаписывались (т.к. 2ая папка будет использоваться как бэкап)
т.е. пусть он копирует все папки и файлы, но если имена совпадают то он не будет их менять. или это можно как то по-другому сделать?

Iska 02-10-2013 12:48 2227338

astronomares, сначала определитесь, что Вам таки нужно, затем изложите это внятно и по-русски.

astronomares 02-10-2013 13:37 2227382

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

sunnykey 02-10-2013 14:23 2227410

Код:

#Powershell script.
#Don't forget unlock script executing by
#using command "Set-ExecutionPolicy RemoteSigned" or "Set-ExecutionPolicy Unrestricted"
#Save this file with ".ps1" extension
$OlderThan=New-TimeSpan -Days 1
$CurFiles=Get-ChildItem c:\TestFolder\* -Recurse -Force | `
    ? {$_.CreationTime -gt ((Get-Date)-$OlderThan)} | `
    Copy-Item -Destination C:\Backup -Recurse -ErrorAction Continue


astronomares 02-10-2013 14:31 2227417

Цитата:

$OlderThan=New-TimeSpan -Days 1
$CurFiles=Get-ChildItem c:\TestFolder\* -Recurse -Force | `
? {$_.CreationTime -gt ((Get-Date)-$OlderThan)} | `
я так понял он проверяет фАЙЛЫ НА ИЗМЕНЕНИЕ и копирует их?

astronomares 02-10-2013 15:47 2227456

а нельзя сделать проверку по имени, а не по дате созданий файлов?

Iska 02-10-2013 16:16 2227469

Цитата:

Цитата astronomares
а нельзя сделать проверку по имени, а не по дате созданий файлов? »

Я же просил выше изложить внятно. В итоге,
читать дальше »
до:
Цитата:

Цитата astronomares
он должен из одной папки скопировать во вторую файлы новые за сегодня. »

и после:
Цитата:

Цитата astronomares
взять файлы из одной папки и перенести в другую. »

Цитата:

Цитата astronomares
а нельзя сделать проверку по имени, а не по дате созданий файлов? »


Приведите тогда хотя бы примеры имён файлов.

El Sanchez 02-10-2013 16:40 2227479

Цитата:

Цитата astronomares
а нельзя сделать проверку по имени, а не по дате созданий файлов? »

astronomares,
Код:

@Echo Off
SetLocal
Set Source=C:\Source
Set Output=C:\Output

Echo:N|XCopy /ih "%Source%\*.*" "%Output%" 1>nul


astronomares 02-10-2013 16:41 2227483

а есть разница какие имена у файлов?
пусть будет
источник c:\papka1\file1.xls
то куда надо c:\papka2\
соответственно внутри папок много файлов.

просто не понимаю смысл в четких названиях. можно назвать папка1 и папка2 и файлы по такому же принципу.
Или объясните что для чего четкие название файлов.

Цитата:

Цитата El Sanchez
Echo:N|XCopy /ih "%Source%\*.*" "%Output%" 1>nul »

а что делает команда 1>nul

Iska 02-10-2013 16:54 2227489

Цитата:

Цитата astronomares
Или объясните что для чего четкие название файлов. »

Нет уж, это Вы объясните, что есть:
Цитата:

Цитата astronomares
сделать проверку по имени »

Цитата:

Цитата astronomares
а что делает команда 1>nul »

Перенаправляет вывод утилиты со стандартного устройства вывода на устройство «nul». Проще говоря — подавляет вывод.

astronomares 02-10-2013 17:24 2227499

пусть будет
источник c:\papka1\file1.xls
то куда надо c:\papka2\
соответственно внутри папок много файлов.

Iska 02-10-2013 18:08 2227518

astronomares, я лично — пас. Не дорос до понимания.

El Sanchez 02-10-2013 21:17 2227584

Цитата:

Цитата El Sanchez
Echo:N|XCopy /ih "%Source%\*.*" "%Output%" 1>nul »

astronomares, этот вариант не годится, поспешил я. Вот другой:
Код:

@Echo Off
SetLocal
Set Source=C:\Source
Set Output=C:\Output

XCopy /lueihy "%Source%\*.*" "%Output%"|Find ":\" 1>"%TEMP%\~tmp" 2>nul
XCopy /eihy /exclude:%TEMP%\~tmp "%Source%\*.*" "%Output%" 2>nul
Del /F /Q "%TEMP%\~tmp" 2>nul


astronomares 03-10-2013 08:34 2227761

Цитата:

Цитата El Sanchez
XCopy /lueihy "%Source%\*.*" "%Output%"|Find ":\" 1>"%TEMP%\~tmp" 2>nul
XCopy /eihy /exclude:%TEMP%\~tmp "%Source%\*.*" "%Output%" 2>nul
Del /F /Q "%TEMP%\~tmp" 2>nul »


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

El Sanchez 03-10-2013 09:06 2227770

astronomares, нет, первая строка с xcopy ничего не копирует, она делает список полных путей файлов, уже существующих в целевом каталоге. Список перенаправляется во временный файл. Этот файл - маска для последующего вызова xcopy (с параметром /exlude) уже с реальным копированием.

astronomares 03-10-2013 10:03 2227805

попробовал пишет скопировано 0 файлов еще при создании списка в конечном итоге тоде пусто

El Sanchez 03-10-2013 17:20 2228003

Цитата:

Цитата astronomares
попробовал пишет скопировано 0 файлов еще при создании списка в конечном итоге тоде пусто »

astronomares, ладно, а так?
Код:

@Echo Off
SetLocal
Set Source=C:\Source
Set Output=C:\Output

XCopy /leuihy "%Source%\*.*" "%Output%"|Find ":\" 1>"%WINDIR%\Temp\~tmp" 2>nul
XCopy /eihfy /exclude:%WINDIR%\Temp\~tmp "%Source%\*.*" "%Output%" 2>nul
Del /F /Q "%WINDIR%\Temp\~tmp" 2>nul


astronomares 09-10-2013 08:52 2231161

помогли мне на работе. получился вот такой батник.

XCOPY /C /Y /S source output
attrib output +R /S /D

source - папка источник
output - папка результат
сначала копируем файлы в папку 2
потом добавляет атрибут ко всем файлам только на чтение и в следующий раз при отработке скрипта он не может поменять уже существующие файлы. и копирует только новые.


Время: 06:44.

Время: 06:44.
© OSzone.net 2001-