Назад | Перейти на главную страницу

Пакетный - как скопировать файл по минимальному размеру и дате изменения?

У меня есть этот простой пакетный скрипт, который копирует самый новый файл из какого-то каталога в другое место. Я хочу, чтобы этот сценарий также игнорировал все файлы (в разделе команд DIR) размером менее 1 ГБ.

FOR /F "delims=|" %%I IN ('DIR "Y:\DEVL\*.*" /B /A-D') DO SET NewestFile=%%I 

copy "Y:\DEVL\%NewestFile%" "F:\DEVL\%NewestFile%"

Любая помощь будет очень признательна.

Опция 1: Если вы хотите скопировать самый новый файл, но только если он больше 1 ГБ, просто замените команду копирования на:

robocopy "Y:\DEVL" "F:\DEVL\" "%NewestFile%" /min:1073741824

/ min: n определяет минимальный размер в байтах.

Вариант 2: Если вы хотите скопировать самый новый файл из всех файлов, размер которых превышает 1 ГБ, это сложнее.

@echo off

Set CopyResult=0
FOR /F "delims=|" %%I IN ('DIR "Y:\DEVL\*.*" /B /O:-d /T:w /A-D') DO Call :DoCopy "%%I"
Goto :EOF

:DoCopy
  IF %CopyResult%==1 Goto :EOF
  set CurrentFile=%1
  robocopy "Y:\DEVL" "F:\DEVL" %CurrentFile% /njs /njh /is /min:107374182
  Set CopyResult=%errorlevel%

/ min: n определяет минимальный размер в байтах.