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

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

Ответить
Настройки темы
CMD/BAT - Скрипт создающий папку с тек.датой и перемещ. в нее файлы

Аватара для Maza11

Старожил


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

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


Есть сетевая папка в которую сохраняются скриншоты формата "Snap - 2017-02-06 09.45.00.png" и так в течении дня с разным временем, каждый день.
За день- 60-100 скриншотов. За неделю накапливается слишком много скриншотов. Надо это упорядочивать.
Нужно настроить планировщик на выполнения скрипта BAT файла, который бы создавал папку с текущей датой и в нее перемещал скриншоты за сегодняшний день.

Отправлено: 13:01, 08-02-2017

 

Ветеран


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

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


Maza11,
Цитата alpap:
разве нет такого в XP? »
В Windows XP — нету.

Maza11, покажите результаты исполнения:
Код: Выделить весь код
assoc .vbs
ftype VBSFile
только либо просто скопируйте текст из окна консоли, либо не делайте масштабирование на скриншоте.

Кроме того, Вы можете задать в свойствах задания не .vbs, а сам исполняемый файл:
Код: Выделить весь код
"%SystemRoot%\System32\wscript.exe" "C:\move.vbs" "\\Backup\box"

Отправлено: 07:39, 09-02-2017 | #11



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

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


Аватара для Maza11

Старожил


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

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


Цитата megaloman:
Настройте планировщик на его выполнение, в XP, мне помнится, это не проблема, сделайте повтор его исполнения с нужной Вам периодичностью, хоть сто раз в день, хоть раз в неделю, месяц итд. Не на чем вспомнить XP. Пытаюсь по Вашему скрину: кажется, в панели управления найти назначенные задания -> кнопка (иконка?) новое задание ->выдаст окно поиска исполнимого файла. Затем настроите расписание. Там всё понятно »
Ваш BAT файл работает, спасибо

Отправлено: 10:27, 09-02-2017 | #12


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


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

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


Почему-то не работает. Помогите пожалуйста.
Код: Выделить весь код
@Echo On

Set "BoxIn=c:\temp"
Set "BoxOut=c:\temp"

Set "Mask=sshot-20??-??-??-[??-??-??].png"

FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%Mask%" /b /A:-D 2^>nul`) DO (
	FOR /F "usebackq tokens=3 delims= " %%d IN ('%%f') DO (
		If Not Exist "%BoxOut%\%%d" Md "%BoxOut%\%%d"
		Copy "%BoxIn%\%%f" "%BoxOut%\%%d\" >nul &&Del "%BoxIn%\%%f"
	)
)
pause >nul
Код: Выделить весь код
C:\>Set "BoxIn=c:\temp"

C:\>Set "BoxOut=c:\temp"

C:\>Set "Mask=sshot-20??-??-??-[??-??-??].png"

C:\>FOR /F "usebackq delims=" %f IN (`Dir "c:\temp\sshot-20??-??-??-[??-??-??].p
ng" /b /A:-D 2>nul`) DO (FOR /F "usebackq tokens=3 delims= " %d IN ('%f') DO (
If Not Exist "c:\temp\%d" Md "c:\temp\%d"
 Copy "c:\temp\%f" "c:\temp\%d\"   1>nul  && Del "c:\temp\%f"
) )

C:\>(FOR /F "usebackq tokens=3 delims= " %d IN ('sshot-2018-03-30-[11-20-56].png
') DO (
If Not Exist "c:\temp\%d" Md "c:\temp\%d"
 Copy "c:\temp\sshot-2018-03-30-[11-20-56].png" "c:\temp\%d\"   1>nul  && Del "c
:\temp\sshot-2018-03-30-[11-20-56].png"
) )

C:\>(FOR /F "usebackq tokens=3 delims= " %d IN ('sshot-2018-03-30-[11-20-57].png
') DO (
If Not Exist "c:\temp\%d" Md "c:\temp\%d"
 Copy "c:\temp\sshot-2018-03-30-[11-20-57].png" "c:\temp\%d\"   1>nul  && Del "c
:\temp\sshot-2018-03-30-[11-20-57].png"
) )

C:\>(FOR /F "usebackq tokens=3 delims= " %d IN ('sshot-2018-03-30-[11-20-58].png
') DO (
If Not Exist "c:\temp\%d" Md "c:\temp\%d"
 Copy "c:\temp\sshot-2018-03-30-[11-20-58].png" "c:\temp\%d\"   1>nul  && Del "c
:\temp\sshot-2018-03-30-[11-20-58].png"
) )

C:\>(FOR /F "usebackq tokens=3 delims= " %d IN ('sshot-2018-03-30-[11-20-59].png
') DO (
If Not Exist "c:\temp\%d" Md "c:\temp\%d"
 Copy "c:\temp\sshot-2018-03-30-[11-20-59].png" "c:\temp\%d\"   1>nul  && Del "c
:\temp\sshot-2018-03-30-[11-20-59].png"
) )

C:\>(FOR /F "usebackq tokens=3 delims= " %d IN ('sshot-2018-03-30-[11-21-01].png
') DO (
If Not Exist "c:\temp\%d" Md "c:\temp\%d"
 Copy "c:\temp\sshot-2018-03-30-[11-21-01].png" "c:\temp\%d\"   1>nul  && Del "c
:\temp\sshot-2018-03-30-[11-21-01].png"
) )

C:\>(FOR /F "usebackq tokens=3 delims= " %d IN ('sshot-2018-03-30-[11-21-02].png
') DO (
If Not Exist "c:\temp\%d" Md "c:\temp\%d"
 Copy "c:\temp\sshot-2018-03-30-[11-21-02].png" "c:\temp\%d\"   1>nul  && Del "c
:\temp\sshot-2018-03-30-[11-21-02].png"
) )

C:\>(FOR /F "usebackq tokens=3 delims= " %d IN ('sshot-2018-03-30-[11-21-03].png
') DO (
If Not Exist "c:\temp\%d" Md "c:\temp\%d"
 Copy "c:\temp\sshot-2018-03-30-[11-21-03].png" "c:\temp\%d\"   1>nul  && Del "c
:\temp\sshot-2018-03-30-[11-21-03].png"
) )

C:\>(FOR /F "usebackq tokens=3 delims= " %d IN ('sshot-2018-03-30-[11-21-04].png
') DO (
If Not Exist "c:\temp\%d" Md "c:\temp\%d"
 Copy "c:\temp\sshot-2018-03-30-[11-21-04].png" "c:\temp\%d\"   1>nul  && Del "c
:\temp\sshot-2018-03-30-[11-21-04].png"
) )

C:\>(FOR /F "usebackq tokens=3 delims= " %d IN ('sshot-2018-03-30-[11-21-05].png
') DO (
If Not Exist "c:\temp\%d" Md "c:\temp\%d"
 Copy "c:\temp\sshot-2018-03-30-[11-21-05].png" "c:\temp\%d\"   1>nul  && Del "c
:\temp\sshot-2018-03-30-[11-21-05].png"
) )

C:\>(FOR /F "usebackq tokens=3 delims= " %d IN ('sshot-2018-03-30-[11-21-07].png
') DO (
If Not Exist "c:\temp\%d" Md "c:\temp\%d"
 Copy "c:\temp\sshot-2018-03-30-[11-21-07].png" "c:\temp\%d\"   1>nul  && Del "c
:\temp\sshot-2018-03-30-[11-21-07].png"
) )

C:\>pause  1>nul
Код: Выделить весь код
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

C:\Users\User>tree.exe c:\temp
c:\temp
|-- sshot-2018-03-30-[11-20-56].png
|-- sshot-2018-03-30-[11-20-57].png
|-- sshot-2018-03-30-[11-20-58].png
|-- sshot-2018-03-30-[11-20-59].png
|-- sshot-2018-03-30-[11-21-01].png
|-- sshot-2018-03-30-[11-21-02].png
|-- sshot-2018-03-30-[11-21-03].png
|-- sshot-2018-03-30-[11-21-04].png
|-- sshot-2018-03-30-[11-21-05].png
`-- sshot-2018-03-30-[11-21-07].png

0 directories, 10 files

C:\Users\User>

Последний раз редактировалось lSVl, 30-03-2018 в 10:37.


Отправлено: 09:50, 30-03-2018 | #13


Ветеран


Contributor


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

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


lSVl, Решалась частная задача
Цитата Maza11:
скриншоты формата "Snap - 2017-02-06 09.45.00.png" »
Вы пытаетесь частное решение применить к другой задаче
Цитата lSVl:
sshot-20??-??-??-[??-??-??].png»
Для этого надо было вникнуть, как работает скрипт. Частное решение именно Вашей задачи
Код: Выделить весь код
@Echo Off

Set "BoxIn=Z:\Box_In"
Set "BoxOut=Z:\Box_In"

Set "Mask=sshot-20??-??-??-[??-??-??].png"

FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%Mask%" /b /A:-D 2^>nul`) DO (
	FOR /F "usebackq tokens=2,3,4 delims=-" %%i IN ('%%f') DO (
		If Not Exist "%BoxOut%\%%i-%%j-%%k" Md "%BoxOut%\%%i-%%j-%%k"
		Copy "%BoxIn%\%%f" "%BoxOut%\%%i-%%j-%%k\" >nul &&Del "%BoxIn%\%%f"
	)
)
Загвоздка в том, чтобы выдернуть дату из имени файла - приходится подстраиваться под формат имени.
Вот более общее решение - дата определяется не по имени файла, а по дате его последнего изменения. Но и тут засада, общности тоже нет: предполагается, что формат отображения даты в системе дд.мм.гггг
Код: Выделить весь код
@Echo Off
Set "BoxIn=Z:\Box_In"
Set "BoxOut=Z:\Box_In"

Set "Mask=sshot-20??-??-??-[??-??-??].png"

FOR /F "usebackq delims=" %%f IN (`Dir "%BoxIn%\%Mask%" /b /A:-D /O:D /T:W 2^>nul`) DO Call :Separator "%BoxIn%\%%f" "%BoxOut%"
GoTo :Eof

:Separator
	Set "DName=%~t1"
	Set "DName=%Dname:~6,4%-%Dname:~3,2%-%Dname:~0,2%"
	If Not Exist "%~2\%DName%" Md "%~2\%DName%"
	Copy %1 "%~2\%DName%\" >nul &&Del %1
GoTo :Eof

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


Последний раз редактировалось megaloman, 30-03-2018 в 12:35.

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

Отправлено: 12:07, 30-03-2018 | #14


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


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

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


megaloman, Спасибо Вам огромное!

Отправлено: 13:57, 30-03-2018 | #15



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] как в Total Commander создать папку с текущей датой? man1 Хочу все знать 1 22-05-2015 08:28
VBS/WSH/JS - Перемещение файлов в папку со вчерашней датой Chingiz87 Скриптовые языки администрирования Windows 0 15-03-2015 15:53
MySQL - Помогите написать скрипт, создающий отчёт из нескольких таблиц MySQL RasKolbas Программирование и базы данных 2 15-06-2013 17:34
CMD/BAT - [решено] копирование файла в папку с датой foma24 Скриптовые языки администрирования Windows 5 16-08-2012 12:23
CMD/BAT - [решено] BAT-ник, создающий папку с текущим именем пользователя и копирующий в нее файл Sirius9764 Скриптовые языки администрирования Windows 4 03-10-2011 19:34




 
Переход