Скопируйте файлы из каталога в другой с датой в указанном диапазоне

Как вы можете видеть в объекте, мне нужно скопировать все файлы, имеющие в имени файла дату в указанном диапазоне.

Я попытаюсь объяснить лучше с примера.

У меня есть в каталоге эти файлы:

  • 20140619_LogStat.txt
  • 20140620_LogStat.txt
  • 20140621_LogStat.txt
  • 20140622_LogStat.txt
  • 20140623_LogStat.txt
  • 20140624_LogStat.txt
  • 20140625_LogStat.txt
  • 20140627_LogStat.txt
  • 20140628_LogStat.txt
  • 20140629_LogStat.txt
  • 20140630_LogStat.txt

Мне нужен пакетный файл, который спрашивает меня о начальной дате и последней дате копий файлов в другом каталоге.

Мой код:

@echo off

set /p StartDate= Inserire la data di INIZIO dei log da spostare (formato: AAAAMMDD)
set /p LastDate= Inserire la data di FINE dei log da spostare (formato: AAAAMMDD)

set /a Range=%LastDate%-%StartDate%

PAUSE

FOR %%A IN (1, 1, %Range%) DO (

set /a j=%StartDate% + 1

copy /-y "C:\%j%*.txt" "D:\directory"

)

Эта строка спросит меня о дате начала:

set /p StartDate= Inserire la data di INIZIO dei log da spostare (formato: AAAAMMDD)

Эта строка спросит меня о дате окончания (как вы можете видеть в обеих строках, я написал запрошенный формат):

set /p StartDate= Inserire la data di INIZIO dei log da spostare (formato: AAAAMMDD)

Затем я установил Range, чтобы количество дней было полезным для FOR CYCLE:

set /a Range=%LastDate%-%StartDate%

Теперь мне нужно повторить FOR CYCLE в отношении переменной Range. Затем я устанавливаю новую переменную "j", которая будет равна первому циклу (StartDate + 1), (StardDate + 2) второго цикла... и так далее...

SO.. если мой ввод (первые две строки кода): 20140619 20140625

Он: 20140625-20140619 = 6 → Переменная диапазона

Цикл for начинается с 0 и продолжается до 6.

Задайте переменную 20140619 + 0 и скопируйте файл 20140619 *.txt в каталог

Конец ЦИКЛА FOR и продолжайте суммировать 1, пока последний скопированный файл не будет 20140625, потому что 20140619 + 6 = j - 20140625

Надеюсь, что моя цель ясна.

Заранее спасибо за вашу помощь!!

2 ответа

В указанном вами формате файла это должно работать:

@echo off

set /p StartDate= Inserire la data di INIZIO dei log da spostare (formato: AAAAMMDD)
set /p LastDate= Inserire la data di FINE dei log da spostare (formato: AAAAMMDD)

FOR /L %%A IN (%startdate%, 1, %lastdate%) DO (
 if exist "C:\%%A_logstat.txt" copy /-y "C:\%%A_logstat.txt" "D:\directory"
)
pause


@echo off

set /p StartDate= Inserire la data di INIZIO dei log da spostare (formato: AAAAMMDD)
set /p LastDate= Inserire la data di FINE dei log da spostare (formato: AAAAMMDD)


set "source_dir=c:\date_files\"
set "destination_dir=d:\directory"

setlocal enableDelayedExpansion
FOR %%A IN (c:\date_files\*_LogStat.txt) DO (

 set "filename=%%~nA"
 set "file_date=!filename:~0,8!"

 if !file_date! GTR !StartDate! if !file_date! LSS !LastDate! (
 copy /-y "%%~fA" "%destination_dir%"
 )


)
endlocal

licensed under cc by-sa 3.0 with attribution.