Всем привет!
У меня есть bat он проверяет файл на сервере, сравнивает с локальным файлом, в случае, если на сервере более свежий файл, то файл копирует на локальную машину, если файл не сервере и клиент один и тот же, то и копирования не происходит. Все работает замечательно, если на локальной машине уже есть файл с которым происходит сравнение. А если файла на локальной машине нету, то в cmd происходит запрос:
Current version
\\name server\name.dll
Что означает C:\Program Files\.....\name.dll:
имя файла или каталога
(F = файл, D = каталог)?
Как избавиться от этого запроса, так чтобы cmd понимала, что у меня это файлы?
set "NewFile=\\name server\name.dll"
set "OldFile=%ProgramFiles(x86)%\........\name.dll"
echo Current version
echo N | xcopy "%NewFile%" "%OldFile%" /d/p | find /i "y">nul && echo %NewFile% || echo %OldFile%
xcopy /d /q /y "%NewFile%" "%OldFile%"
CMD/BAT - [решено] Копирование с проверкой
-
Iska
Re: CMD/BAT - [решено] Копирование с проверкой
safonov_ivan, а) для синхронизации удобнее всего пользовать robocopy, б) если в ресурсах библиотеки указана версия — лучше сравнивать по ней.
-
Iska
Re: CMD/BAT - [решено] Копирование с проверкой
Версия в библиотеке не указывается, поэтому сравнение по дате происходит.
Цитата Iska:
а) для синхронизации удобнее всего пользовать robocopy
будет проблемно, парк ОС wniXP, win7, парк не в моей конторе.
Цитата Iska:
а) для синхронизации удобнее всего пользовать robocopy
CMD/BAT - [решено] Копирование с проверкой
будет проблемно, парк ОС wniXP, win7, парк не в моей конторе.
-
Iska
Re: CMD/BAT - [решено] Копирование с проверкой
Цитата safonov_ivan:
Версия в библиотеке не указывается, поэтому сравнение по дате происходит.
Ясно.
Цитата safonov_ivan:
будет проблемно, парк ОС wniXP, win7, парк не в моей конторе.
Хреново
.
Мне не очень понятна логика Вашего пакетного файла. Я по-прежнему не вижу смысла пользовать даты; необходимо и достаточно сравнивать файлы и копировать при различии, а если целевого файла нет — просто копировать, наподобие:
Код:
Версия в библиотеке не указывается, поэтому сравнение по дате происходит.
CMD/BAT - [решено] Копирование с проверкой
Ясно.
Цитата safonov_ivan:
будет проблемно, парк ОС wniXP, win7, парк не в моей конторе.
CMD/BAT - [решено] Копирование с проверкой
Хреново
.Мне не очень понятна логика Вашего пакетного файла. Я по-прежнему не вижу смысла пользовать даты; необходимо и достаточно сравнивать файлы и копировать при различии, а если целевого файла нет — просто копировать, наподобие:
читать дальше »
Код:
Код: Выделить всё
@echo off
setlocal enableextensions enabledelayedexpansion
set sFileName=0001.txt
set sSourcePath=E:\Песочница\0297\Source
set sDestPath=E:\Песочница\0297\Destination
if exist "%sSourcePath%\%sFileName%" (
if exist "%sDestPath%\." (
if exist "%sDestPath%\%sFileName%" (
>nul fc.exe /b "%sSourcePath%\%sFileName%" "%sDestPath%\%sFileName%" || >nul copy /y "%sSourcePath%\%sFileName%" "%sDestPath%\%sFileName%"
) else (
>nul copy "%sSourcePath%\%sFileName%" "%sDestPath%\%sFileName%"
)
) else (
echo Destination path [%sDestPath%] not found.
)
) else (
echo Source file [%sSourcePath%\%sFileName%] not found.
)
endlocal
exit /b 0