Установка метки времени в командном файле при использовании xcopy (довольно плохо знаком с cmd / batch) - PullRequest
0 голосов
/ 04 марта 2012

Пока мой сценарий:

@ECHO OFF
XCOPY   C:\Users\Jeremy\Documents\* I:\Jeremy's%1Desktop\My%~1Documents /s /i /h

Попытка создать «сценарий резервного копирования», который будет передавать все файлы из всего каталога «Джереми» на мой внешний жесткий диск.(Хочу не передавать некоторые скрытые файлы в некоторые папки, но передавать скрытые файлы в другую папку), поэтому я тоже не знаю, как это сделать.

В любом случае я хочу вместо того, чтобы каждый раз предлагать мнеперезаписать файл, я бы хотел, чтобы он перезаписывал, если он больше или больше (отсюда отметка времени).Я не уверен, как установить это и установить перезапись, если отметка времени скажет новее.Спасибо за вашу помощь, как вы можете видеть две строки в моем трудном времени.

Спасибо!

1 Ответ

2 голосов
/ 11 февраля 2013

См. ROBOCOPY для расширенных параметров копирования (например, / XO = исключить более старые файлы).

При использовании COPY или XCOPY вам придется вручную проходить по файлам и копировать их по отдельности после выполнения ваших тестов.

Зацикливание (рекурсивно) файлов в папке:

for /r "%directory%" %%f in (*.*) do (
  rem ... do sth with file %%f
)

Вы также можете получить, например, имена / каталоги файлов с помощью %~nf или %~df

Получить дату / время файла:

for /f %f in ("%file%") do (
   set timestamp=%~tf
   set day=%timestamp:~0,2%"
   set month=%timestamp:~3,2%"
   rem ... etc.
)

Получить текущую дату / время:

echo Date: %date% rem (or: set currentdate=%date%)
echo Time: %time%

Вы должны будете выполнить сравнение самостоятельно (сначала сравните год, затем сравните месяц, затем ... и т. Д.). Это может быть немного сложнее, или, по крайней мере, много работы.

Чтобы проверить, является ли файл скрытым:

for /f "delims=" %%a in ('attrib "%file%"') do (
    set attribs=%%a
    if "!attribs:~4,1!"=="H" rem ... file is hidden
)

Не забудьте установить это в начале вашей партии:

setlocal enabledelayedexpansion

Это гарантирует, что вы можете устанавливать / читать переменные внутри цикла. Тогда используйте !variable! вместо %variable%.

Это только основные инструменты, предстоит еще много работы и некоторые подводные камни для обхода. Вы действительно должны подумать об использовании ROBOCOPY.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...