[2000] Batch/DOS, MD check date, move files to folder*

Pagina: 1
Acties:
  • 200 views sinds 30-01-2008
  • Reageer

  • proza
  • Registratie: September 2001
  • Laatst online: 04-05 19:06
Op zoek naar het volgende, ben niet helemaal onbekend met DOS commands. Maar de volgende wens zou ik graag uitgewerkt zien, wie kan me daar mee helpen.

Met een webcam schiet ik om de minuut plaatjes die een bestandsnaam hebben die erals volgt uitziet;
webcam-20040713-2136.jpg
webcam-20040713-2137.jpg
webcam-20040713-2138.jpg
etc....

Nu wil ik dat mijn server net na 00:00 uur via de schedular een batch runt die er voor zorgt dat er een check gedaan wordt op de datum , hier een dag vanaf trekt (want het is inmiddels 00:00 uur geweest) En dan een folder aanmaakt met deze net vergaarde gegevens om dan alle bestanden daar naar toe te verplaatsten .

code:
1
2
3
4
5
6
Check datum en tijd ; ( Het is nu 14 juli 2004 00:05 )
Trek daar één dag vanaf
MD 20040713
Verplaats alle files die overeenkomen met webcam-20040713*.*
move \webcam\webcam-YYmd*.*  to  \webcam\20040713
einde


Het moeilijkse deel zit in de variable qua tijd, voor de check en het aanmaken van de juiste directory en daarna de move van de juiste bestanden. Want er worden immers al weer nieuwe bestanden aangemaakt voor dag 14 juli 2004 in de webcam directory. Heeft iemand een idee hoe ik zoiets kan aanpakken of me een stukje op weg kan helpen. _/-\o_

If you see me collapse, pause my Garmin!🚶🏃


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:08

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 ziet geen programmeerprobleem. Eerder een aantal dos commando's achter elkaar zetten :) Daar zijn ze in WOS veel beter in :P

>> Windows Operating Systems

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Zo simpel is dat niet, 1 dag eraf trekken want stel dat het de 1e is. dan komt het op 0 uit, en zoniet dan moet je nog bepalen of het dan 30, 31, 28 of 29 moet worden.

Zelf start ik dat scrippie om 23:59 zet dan variabelen en ga pas 4 minuten later verder met het scrippie.

Hier mijn source:

@echo off
cd \scripts\webcams\
Rem Datum in variabele zetten
:start
for /F "tokens=1,2,3,4 delims=- " %%i IN ('Date /T') do set dag=%%i&set dagnr=%%j&set maandnr=%%k&set jaarnr=%%l

..\sleep 240
..\pkzipc -add \wwwroot\pix\cams\archief\cams_%jaarnr%_%maandnr%_%dagnr%.zip \wwwroot\pix\cams\archief\%jaarnr%_%maandnr%_%dagnr%*.jpg
..\sleep 60
del \wwwroot\pix\cams\archief\%jaarnr%_%maandnr%_%dagnr%*.jpg


sleep en pkzipc zijn externe commando's

[ Voor 4% gewijzigd door Verwijderd op 13-07-2004 22:21 ]


Verwijderd

ik zal morgen wel een stukje code posten. om in een batch 1 dag af te trekken van een datum in volledig dos is ongeveer 2 a4-tjes programmeerwerk. zeker niet makkelijk :)

de code hierboven is overigens afhankelijk van je localsettings. tenminste als je wil dat jaarnr werkelijk het jaar weergeeft.

[ Voor 31% gewijzigd door Verwijderd op 13-07-2004 22:13 ]


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Vertel eventjes welk OS we het hier over hebben? :)

  • pven
  • Registratie: Oktober 1999
  • Niet online
offtopic:
Met welk programma maak je iedere minuut een 'snapshot'?

|| Marktplaats-meuk. Afdingen mag! ;-) || slotje.com for sale || Dank pven! ||


  • proza
  • Registratie: September 2001
  • Laatst online: 04-05 19:06
Re:OS = Windows 2000 Server :*)

If you see me collapse, pause my Garmin!🚶🏃


Verwijderd

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
@echo off
:: ****************************************************************
:: batchfile for automatically zipping of old logs (typically iis) 
:: made by: J.A. Korving
:: version: 1.0.1
:: date: 12-3-2001
:: programs/batches needed: pkzip25.exe, setdatetime.cmd
:: ****************************************************************


:: ****************************************************************
:: setting variables
:: ****************************************************************

:: program directory (where programs and batches are stored)

set progdir=c:\nttools
set batchdir=c:\nttools\batches

:: iislog directory, templog and zipfile dir

set logdir=c:\test
set zipdir=c:\test
set logfile=%logdir%\temp.log

:: setting prefix of logfile
:: ( iis logs typically look like: exYYMMDD.log
:: where YY = year, MM = Month, DD = Day )

set prefix=ex

:: ****************************************************************
:: finding right logfile to add to zip.
:: determing present date
:: date_1=day, date_2=month, date_3=year (depends on local settings)
:: dayb4DD = day - 1
:: ****************************************************************

call %batchdir%\setdatetime -e

set DD=%date_1%
set MM=%date_2%
set YYYY=%date_3:~0,4%
set YY=%YYYY:~2,2%
set /a dayb4DD=%DD%-1

call %batchdir%\setdatetime -c

:: ****************************************************************
:: calculating previous day
:: testing DD-variable
:: ****************************************************************

if %DD%==10 goto set_10_09
set test=%DD:~0,1%
if %test%==0 goto calc_day_b4
set /a dayb4DD=%DD%-1
goto zipping

:calc_day_b4

set /a dayb4DD=%DD:~1,2%-1
if %dayb4DD%==0 goto prev_month
set dayb4DD=0%dayb4DD%
goto zipping

:prev_month
if "%MM%" == "01" goto prev_year
if "%MM%" == "02" set MM=01
if "%MM%" == "03" set MM=02
if "%MM%" == "04" set MM=03
if "%MM%" == "05" set MM=04
if "%MM%" == "06" set MM=05
if "%MM%" == "07" set MM=06
if "%MM%" == "08" set MM=07
if "%MM%" == "09" set MM=08
if "%MM%" == "10" set MM=09
if "%MM%" == "11" set MM=10
if "%MM%" == "12" set MM=11

:: Set day to last day of (now) previous month
:: note: this may result in faults when february has 29 days!!!

if not %YYYY%==2008 goto set_day
if not %MM%==02 goto set_day
echo.
echo you shouldnt still use this script...
echo you probably have no idea what this script is doing
echo so you better find out
echo.
pause
set dayb4DD=29
goto zipping

:set_day
if "%MM%" == "01" set dayb4DD=31
if "%MM%" == "02" set dayb4DD=28
if "%MM%" == "03" set dayb4DD=31
if "%MM%" == "04" set dayb4DD=30
if "%MM%" == "05" set dayb4DD=31
if "%MM%" == "06" set dayb4DD=30
if "%MM%" == "07" set dayb4DD=31
if "%MM%" == "08" set dayb4DD=31
if "%MM%" == "09" set dayb4DD=30
if "%MM%" == "10" set dayb4DD=31
if "%MM%" == "11" set dayb4DD=30
if "%MM%" == "12" set dayb4DD=31
goto zipping

:prev_year

set /a YYYY=%YYYY%-1
set YY=%YYYY:~2,2%
set MM=12
set dayb4DD=31
goto zipping

:set_10_09

set dayb4dd=09
goto zipping

:: ****************************************************************
:: adding files to zip
:: ****************************************************************

:zipping
echo adding now

%progdir%\pkzip25 -add %zipdir%\%MM%%YYYY%.zip %logdir%\%prefix%%YY%%MM%%dayb4DD%.log >>%logfile%

:: ****************************************************************
:: checking for adding of logfile ex[date-1day].log
:: if successful deleting templog and zipped logfile
:: ****************************************************************

find /i "done" %logfile%
if %errorlevel%==1 goto end

del %logfile%
del %logdir%\%prefix%%YY%%MM%%dayb4DD%.log

:end


dit gebruikte ik om logfile te zippen. het geeft iig een idee hoe je het moet aanpakken.
(setdatetime is slechts een batch die dag maand jaar van elkaar scheid)

btw crappy batch als het ik het nu terugkijk :)

  • proza
  • Registratie: September 2001
  • Laatst online: 04-05 19:06
Start met scheduled task om 23:58 op de Windows server de onderstaande code, werkt perfect. Mijn dank is groot, voor diegene die input hebben gegeven. En Arie in het bijzonder. _/-\o_

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
::MoveWEBCAMpic.cmd:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::
::Check datum net voor 00:00 uur voor aanmaken van archive directory
::
for /F "tokens=1,2,3,4 delims=- " %%i IN ('date /T') do set dag=%%i&set dagnr=%%j&set maandnr=%%k&set jaarnr=%%l
for /F "tokens=1,2 delims=: " %%u IN ('time /T') do set uurnr=%%u&set minuutnr=%%v
mkdir %jaarnr%%maandnr%%dagnr%
::
:: wacht tot na 00:00 uur voor de uitvoer van move command
::
sleep 180
move webcam-%jaarnr%%maandnr%%dagnr%*.jpg %jaarnr%%maandnr%%dagnr%
::
:: Check datum voor logfile stamp
::
for /F "tokens=1,2,3,4 delims=- " %%i IN ('date /T') do set dag=%%i&set dagnr=%%j&set maandnr=%%k&set jaarnr=%%l
::
echo Completed on %dag% %dagnr%-%maandnr%-%jaarnr% at %uurnr%:%minuutnr%, all CAM-%jaarnr%%maandnr%%dagnr%*.jpg files moved to archive %jaarnr%%maandnr%%dagnr%>>move.log

::
::MovWEBCAMpic.cmd:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

[ Voor 133% gewijzigd door proza op 15-07-2004 22:06 ]

If you see me collapse, pause my Garmin!🚶🏃


  • proza
  • Registratie: September 2001
  • Laatst online: 04-05 19:06
En zo gaat het nog beter en zonder external program files. (Input got from newsserver user)

::MoveWebCamPic.cmd::::::::::::::::::::::::::::::::::::::::::::::::::::::: B)
@echo off
setlocal
:: suit the following set to match your date format
set today=%date:~10,4%%date:~7,2%%date%:~4,2%

for /F "delims=" %%A in ('dir /A /B WEBCAM-*.jpg') do (
for /F "tokens=2 delims=-" %%B in ("%%A") do (
IF "%today%" NEQ "%%B" (
if Not exist %%B MD %%B&echo Created %%B>>Your.log
MOVE %%A %%B
echo Moved %%A to %%B>>Your.log
)))
popd
::MoveWebCamPic.cmd::::::::::::::::::::::::::::::::::::::::::::::::::::::: B)

If you see me collapse, pause my Garmin!🚶🏃

Pagina: 1