Показать полную графическую версию : копирование по сети с заменой на новые файлы.
Подскажите как батником скопировать папку по сети, но не добавлять, а заменять. Может сначала удалять содержимое, а потом копировать?
Вот скрипт, который работает сейчас.
@echo off
set bkroot=\\192.168.0.199\bk
D:
cd D:\SQL_BACKUP
for /d %%i in (*) do (
cd %%i
call :vmove %%i
cd ..
)
goto :eof
:vmove
set bkdir=%bkroot%\sql\%1
md %bkdir% 2>nul
for %%F in (*) do (
xcopy /Y %%F %bkdir% && del %%F
)
1. Поменяйте местами "D:" и "cd D:\SQL_BACKUP" - если текущим для диска D: окажется уже не существующий каталог, то перехода в нужный каталог может не произойти, поэтому сначала назначается каталог, а затем осуществляется переход на диск (в свежих версиях винды переход произойдет еще при смене каталога)
2. Уточните, плиз, что Вы подразумеваете под "добавлением"? Ваша команда xcopy должна именно заменять уже имеющиеся файлы! :dont-know
* Если речь идет о том, чтобы файлы в бэкапе, скопированные ранее и уже несуществующие в исходнике также удалялись, то вполне достаточно (имхо) перед "md %bkdir% 2>nul" добавить удаление этого самого каталога: rd /s /q %bkdir% 2>nul
в свежих версиях винды переход произойдет еще при смене каталога »
Начиная с каких версий ОС появилось такое поведение?
Iska, точно сказать не могу, еще с w98 приучил себя в батниках сначала менять путь, а потом уже переходить на диск, а тут случайно обнаружил (уже на XP SP2), что при выполнении "CD Disk:\Path" сменился текущий диск.
El Scorpio
16-07-2010, 06:05
Подскажите как батником скопировать папку по сети, но не добавлять, а заменять. »
xcopy ЧТО КУДА /I /E /Y /U /D /H /C
- копировать в папку
- копировать файлы из подкаталогов
- перезаписывать файлы
- копировать только файлы, уже существующие в конечной папке (оно?)
- копировать только новые файлы
- копировать скрытые/системные файлы
- продолжать копирование при ошибках
El Sanchez
17-07-2010, 11:02
Iska, точно сказать не могу, еще с w98 приучил себя в батниках сначала менять путь, а потом уже переходить на диск, а тут случайно обнаружил (уже на XP SP2), что при выполнении "CD Disk:\Path" сменился текущий диск. »
NiOl, для одновременной смены диска и каталога еще с WinNT для команды CD придуман параметр /D. :secret:
El Scorpio, еще бы ключ /Z добавить - специально для сети. :)
нужно скопировать папку через сеть на другую машину, дайте плиз исходник.
El Scorpio
23-07-2010, 01:05
kyle21, скопировать папку по сети можно двумя способами
1. Просто указать UNC-путь - xcopy ЧТО \\ИМЯ_КОМПЬЮТЕРА\КУДА ПАРАМЕТРЫ
2. Примонтировать сетевую папку, как сетевой диск командами subst или net use, скопировать файлы и отмонтировать сетевой диск
subst \\NAME\Folder z:
xcopy ЧТО КУДА
subst z: /d
Если копируем с локального диска на сетевую шару, то можно воспользоваться такой вкусностей, как PushD/PopD - тем более, что сохранненные ею пути стеккируются:
@Echo off
set Src=<адрес Откуда>
set Dst=<адрес Куда>
Pushd %Src%
set Src=%CD%
Push %Dst%
xcopy %Src% /I /E /Y /U /D /H /C /Z
Popd
Popd
А если копируете с сервера на сервер и много, то такой вариант плох:
1. Вы качаете по сети (возможно даже по перегруженной сети) данные к себе, а затем от себя
2. Серваки частенько соединены между собой более шустрым свичем, а то и имеют дополнительную, отдельную сеть (для скорости) - уточните у Вашего админа.
Поэтому удобнее копировать по сети ТОЛЬКО ОДИН раз: сразу с сервера на сервер, минуя Ваш комп.
для этого надо:
1. Соответствующие права на серваках
2. Скачать с сайта "мелкомягких" PSExec из набора PSTools.
Этот же батник запускаете удаленно с любого из серверов: psExec \\Server -u Admin -p Password -c -v MyBatchFile.bat MyBatchFile.bat
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.