Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Скрипт копирования файла по названию из даты

Ответить
Настройки темы
CMD/BAT - [решено] Скрипт копирования файла по названию из даты

Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


В определенной папке раз в сутки создается файл с именем, например, 10.09.2020.doc . То есть, каждый день создается файл с датой этого дня.
Как написать скрипт, чтобы копировать файл за прошлые сутки?
То есть, 11.09.2020 этот скрипт будет запускаться и должен скопировать в другое место файл 10.09.2020.doc

Отправлено: 17:34, 26-11-2020

 

Ветеран


Contributor


Сообщения: 2703
Благодарности: 1683

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
	Set "BoxIn=Z:\Box_In" 
	Set "BoxOut=Z:\Box_Arc"

	Set /A DeltaDay=-1
	FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "ToDay=%%d" &Call Set "ToDay=%%ToDay:~6,2%%.%%ToDay:~4,2%%.%%ToDay:~0,4%%"
	Call :FromDate %DeltaDay% %ToDay% "DDat"

Echo	Copy "%BoxIn%\%DDat:~6,2%.%DDat:~4,2%.%DDat:~0,4%.doc" "%BoxOut%\"
	Copy "%BoxIn%\%DDat:~6,2%.%DDat:~4,2%.%DDat:~0,4%.doc" "%BoxOut%\"
Exit /B

:FromDate

rem Пересчет даты на заданное кол-во дней
rem В первом аргументе +- дни
rem Во втором аргументе дата в формате dd.mm.yyyy
rem В третем аргументе имя переменной в кавычках где получим новую дату в формате yyyymmdd 

rem Заимствовано http://forum.oszone.net/thread-186889.html
rem вызов Call :FromNow %DeltaDay% %Date% "yyyymmdd"
rem результат в перемменной %yyyymmdd%

 SetLocal
 Set "DT=%~2"
 Set yyyy=%DT:~-4%& set /a mm=100%DT:~3,2%%%100& set /a dd=100%DT:~,2%%%100
 Set /A JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4
 Set /A L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001
 Set /A L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11
 Set /A J=J+2-12*L,I=100*(N-49)+I+L
 Set /A yyyy=I,mm=100+J,dd=100+K
 EndLocal& Set "%~3=%yyyy%%mm:~-2%%dd:~-2%"
GoTo :Eof

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:04, 26-11-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


(*.*)


Administrator


Сообщения: 36473
Благодарности: 6671

Профиль | Сайт | Отправить PM | Цитировать


С датами намного проще работать в PowerShell. Решается фактически в одну строку, переменные для наглядности
Код: Выделить весь код
$source = "C:\source"
$target = "C:\target"
$format = "{0:dd.MM.yyyy}" #10.09.2020
$filename = -join("$($format -f (Get-Date).AddDays(-1))", ".doc")
Copy-Item -Path $source\$filename -Destination $target
См. также примеры работы с датами:
Даты создания отчета и установки системы
Как массово задать дату изменения или создания файлов в PowerShell

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:39, 26-11-2020 | #3


Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо, все работает!!!

Отправлено: 16:08, 27-11-2020 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Скрипт копирования файла по названию из даты

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Сделать задержку, размер которой определить по названию файла Alexander_88 Скриптовые языки администрирования Windows 7 08-07-2018 19:11
CMD/BAT - [решено] Не работает скрипт копирования самого свежего файла по текущей дате dark-------13 Скриптовые языки администрирования Windows 6 18-02-2016 08:42
CMD/BAT - [решено] переименование директории по названию файла в ней shmel_sv@vk Скриптовые языки администрирования Windows 4 23-03-2015 21:25
CMD/BAT - [решено] Копирование файла по его начальному названию (Маске) idlazarev_alex@vk Скриптовые языки администрирования Windows 3 16-08-2014 22:35
CMD/BAT - Скрипт копирования файла с парка компьтеров. exo Скриптовые языки администрирования Windows 4 14-09-2009 15:24




 
Переход