Показать полную графическую версию : Условие изменения файла
Подскажите, пожалуйста, как с помощью bat скопировать файл при двух условиях:
1. если он есть (т.е. подключен внешний накопитель)
2. если файл изменен (дата изменения копируемого файла больше, чем дата файла, на место которого производится копирование)
@echo OFF
if exist "G:\11\12.pdf" copy "G:\11\12.pdf" "C:\" /y
pause
Sisin, давайте начнём с другого — как планируется определять искомый накопитель, в данном случае, проще говоря — как планируется определять букву искомого раздела?
как планируется определять искомый накопитель »
Предполагаю, что тут всё проще... т.е. по запуску пакетника определяется наличие файла, независимо от наличия носителя.
А вот с работа датами в cmd, как известно, задача часто нетривиальная, поэтому проще организовать это через powershell:
как с помощью 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}}"
Sisin, давайте начнём с другого — как планируется определять искомый накопитель, в данном случае, проще говоря — как планируется определять букву искомого раздела? »
Он всегда G:
раз уж потребовался именно батник, то: »
Спасибо) Но хотелось бы без powershell.
Хочу понять для себя, т.к. не нашел ответа.
megaloman
30-08-2019, 10:41
Sisin, xcopy /d решает Вашу задачу даже без батника, при условии, что пути заведомо известны и не надо определять букву носителя.
xcopy /d решает Вашу задачу даже без батника, при условии, что пути заведомо известны и не надо определять букву носителя. »
Но в xcopy /d надо указывать дату, а как мне сравнить даты?? Мне же надо скопировать, если дата больше.
megaloman
30-08-2019, 12:05
Sisin, голубчик, да Вы, как я погляжу, тоже верхогляд, как и я. :). Читать хелп надо внимательно :)
/D:m-d-y Копирование файлов, измененных не ранее указанной даты.
Если дата не указана, заменяются только конечные файлы,
более старые, чем исходные.
Он всегда G: »
Сегодня мы все G:. Это сегодня он G:. А завтра может быть и не G:, на то он и съёмный.
megaloman
30-08-2019, 16:47
А завтра может быть и не 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
if exist, а дальше robocopy.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.