Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Скрипт, для копирования, форматирования, извлечения flash (http://forum.oszone.net/showthread.php?t=219974)

Disobedient 08-11-2011 16:41 1791057

Скрипт, для копирования, форматирования, извлечения flash
 
Доброго всем дня.

Такая вот задача.
Человек подключает флешку (SD 64 гига), с одной папкой и кучей мелких файлов внутри (видео).
Надо чтоб при запуске батника:
1. Создавалася папка с датой на HDD.
2. Содержимое флешки копировалось на HDD в эту папку с сегодняшней датой.
3. Флешка форматируется.
4. Извлекается устройство по завершении процедуры. Автоматически.
5. Если дата папки превышает 7 дней, то она удаляется без корзины.

Можно ли такое сотворить скриптами?

Iska 08-11-2011 17:05 1791076

Цитата:

Цитата Disobedient
Можно ли такое сотворить скриптами? »

1. Съёмное устройство будет всегда одно и тоже, или могут быть разные?
2. «Если дата папки превышает 7 дней…» — о какой папке здесь идёт речь?
3.
Цитата:

Цитата Disobedient
Извлекается устройство по завершении процедуры. Автоматически. »

Без сторонних средств, скриптом, в общем случае, не выйдет сего сделать. Вы готовы к этому?

Disobedient 08-11-2011 17:25 1791088

1) 2 флешки, но через один картридер, т.е. буква будет одна.
2) Каждый день новая папка с датой будет создаваться, надо чтоб она хранилась 7 дней. Потом удалялась. Всё сложно потому, что люди будут сидеть далёкие от копирования/удаления файлов. Кстати копироваться будут файлы с видеорегистратора.
3) Извлекать устройство, ну по возможности чем нибудь простым, в идеале "нажатием 1 кнопкой"

Disobedient 09-11-2011 09:31 1791459

С созданием папки всё понятно

@echo off
for /f "tokens=1-3 delims=." %%i in ("%date%") do (mkdir "%~1\%%k-%%j-%%i")

а вот как настроить xcopy, чтоб писал именно в эту папку?

с форматированием всё понятно

Для извлечения пойдёт
RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll

Disobedient 10-11-2011 11:29 1792153

@echo off
SetLocal EnableDelayedExpansion

set SRC=W:Adr
set DST=G:634

call :FromNow -4
xcopy /q/y "%SRC%\*" "%DST%\%DATE:~,5%.%DATE:~-2%\"
for /d %%i in (%DST%\*) do (
set $i=%%~ni& set "$i=!$i:~-2!!$i:~3,2!!$i:~,2!"
if !$i! lss %yymmdd% rd /s/q "%%i"
)

Erase /S /Q W:\Adr

call USB_Disk_Eject.exe /REMOVETHIS /SHOWEJECT

:FromNow
SetLocal
Set yyyy=%DATE:~-4%& set /a mm=100%DATE:~3,2%%%100& set /a dd=100%DATE:~,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 yymmdd=%yyyy:~-2%%mm:~-2%%dd:~-2%
Exit /B

Программу USB_Disk_Eject.exe можно скачать в нете и положить в корень флешки.
(флеха будет автоматом извлекаться)


Время: 07:23.

Время: 07:23.
© OSzone.net 2001-