Условие изменения файла
Подскажите, пожалуйста, как с помощью bat скопировать файл при двух условиях:
1. если он есть (т.е. подключен внешний накопитель)
2. если файл изменен (дата изменения копируемого файла больше, чем дата файла, на место которого производится копирование)
Код:
@echo OFF
if exist "G:\11\12.pdf" copy "G:\11\12.pdf" "C:\" /y
pause
|
Sisin, давайте начнём с другого — как планируется определять искомый накопитель, в данном случае, проще говоря — как планируется определять букву искомого раздела?
|
Цитата:
Цитата Iska
как планируется определять искомый накопитель »
|
Предполагаю, что тут всё проще... т.е. по запуску пакетника определяется наличие файла, независимо от наличия носителя.
А вот с работа датами в cmd, как известно, задача часто нетривиальная, поэтому проще организовать это через powershell:
Цитата:
Цитата Sisin
как с помощью bat скопировать файл при двух условиях »
|
раз уж потребовался именно батник, то:
Код:
@echo off
set "src=G:\11\12.pdf"
set "dst=C:\12.pdf"
powershell -c "&{if((gi '%src%').lastaccesstime -gt (gi '%dst%').lastaccesstime){cp '%src%' '%dst%' -force}}"
|
Цитата:
Цитата Iska
Sisin, давайте начнём с другого — как планируется определять искомый накопитель, в данном случае, проще говоря — как планируется определять букву искомого раздела? »
|
Он всегда G:
Цитата:
Цитата YuS_2
раз уж потребовался именно батник, то: »
|
Спасибо) Но хотелось бы без powershell.
Хочу понять для себя, т.к. не нашел ответа.
|
Sisin, xcopy /d решает Вашу задачу даже без батника, при условии, что пути заведомо известны и не надо определять букву носителя.
|
Цитата:
Цитата megaloman
xcopy /d решает Вашу задачу даже без батника, при условии, что пути заведомо известны и не надо определять букву носителя. »
|
Но в xcopy /d надо указывать дату, а как мне сравнить даты?? Мне же надо скопировать, если дата больше.
|
Sisin, голубчик, да Вы, как я погляжу, тоже верхогляд, как и я. :). Читать хелп надо внимательно :)
Цитата:
Цитата XCopy /?
/D:m-d-y Копирование файлов, измененных не ранее указанной даты.
Если дата не указана, заменяются только конечные файлы,
более старые, чем исходные.
|
|
Сегодня мы все G:. Это сегодня он G:. А завтра может быть и не G:, на то он и съёмный.
|
Цитата:
Цитата Iska
А завтра может быть и не G:, на то он и съёмный. »
|
И, самое плохое, не понятно: это флэшка или внешний винт. Однако, если размещение исходного и обновляемого файлов не совпадают, то:
Код:
@Echo Off
Set "From=11\12.pdf"
Set "To=C:"
FOR /F "usebackq tokens=1 skip=1 delims=:" %%d IN (`"wmic logicaldisk get caption | FINDSTR /R /C:"[A-Z]""`) DO (
If Exist "%%d:\%From%" >nul xcopy /Y /D "%%d:\%From%" "%To%\"
)
Exit /B
|
DJ Mogarych |
30-08-2019 20:53 2886058 |
if exist, а дальше robocopy.
|
Время: 10:38.
© OSzone.net 2001-