bat filetje moet elke dag dir aanmaken met de datum erin

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

  • Dinictus208
  • Registratie: November 2000
  • Niet online
Hi,

Benieuw of iemand me hiermee kan helpen...

Ik wil met een bat filetje dat ik elke dag aan ga klikken (of schedulen) zorgen dat er een dir gemaakt wordt met hierin de datum van vandaag dus iets van: bk100503. Daarna wil ik de inhoud van dir naar die nieuwe, datum-in-de-naam-hebbende dir knallen.

Kan dit? dus een dir maken in dos met een concatenation (=today) erin?

I could feel at the time There was no way of knowing Fallen leaves in the night Who can say where they're blowing As free as the wind And hopefully learning Why the sea on the tide Has no way of turning


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 31-12-2025

Janoz

Moderator Devschuur®

!litemod

Ten eerste lijkt het me handiger om het bk030510 te noemen. Op die manier wordt het namelijk automatisch ook op datum gesorteerd. Voor de rest denk ik dat je aangewezen bent op andere programma's. Batch bestandjes zijn hiervoor gewoon niet uitgerust. Dit is trouwens wel erg makkelijk te maken in elke willekeurige andere programmeertaal (vb oid)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 31-12-2025

Gerco

Professional Newbie

In %DATE% staat de datum van vandaag, format is systeem afhankelijk, dat format moet je accepteren of geen batfile gebruiken, lijkt me.

Je kunt het net zo makkelijk in VB(Script) maken, is een stuk flexibeler.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Ralluph
  • Registratie: Maart 2001
  • Laatst online: 25-10-2025

Ralluph

Aus der Reihe...

Dit kan weldegelijk, alleen ligt de oplossing niet enorm voor de hand. Hieronder volgt sortdate.bat:
Batchfile:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@ECHO OFF
:: Store current date in a variable in default Locale format
FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE /T') DO SET DATE=%%B

:: Export registry settings to a temporary file
IF EXIST %TEMP%\_TEMP.REG DEL /F/Q %TEMP%\_TEMP.REG
START /W REGEDIT /E %TEMP%\_TEMP.REG "HKEY_CURRENT_USER\Control Panel\International"

:: Read the exported data
FOR /F "tokens=1* delims==" %%A IN ('TYPE %TEMP%\_TEMP.REG ^| FIND /I "iDate"') DO SET iDate=%%B
FOR /F "tokens=1* delims==" %%A IN ('TYPE %TEMP%\_TEMP.REG ^| FIND /I "sDate"') DO SET sDate=%%B

:: Remove temporary file
DEL /F/Q %TEMP%\_TEMP.REG

:: Remove quotes
SET iDate=%iDate:"=%
SET sDate=%sDate:"=%

:: Format SORTDATE depending on registry settings
IF %iDate%==0 FOR /F "TOKENS=1-4* DELIMS=%sDate% " %%A IN ('DATE /T') DO SET sortdate=%%D%%B%%C
IF %iDate%==1 FOR /F "TOKENS=1-4* DELIMS=%sDate% " %%A IN ('DATE /T') DO SET sortdate=%%D%%C%%B
IF %iDate%==2 FOR /F "TOKENS=1-4* DELIMS=%sDate% " %%A IN ('DATE /T') DO SET sortdate=%%B%%C%%D

dit bestandje doet het volgende:
  • het haalt eerst de huidige datum op;
  • vervolgens haalt het een regel uit het register, waarin staat aangegeven welke locale het systeem gebruikt, concreet of dit dd-mm-jjjj of mm-dd-jjjj is
  • vervolgens maakt het programma een environment-variabele aan met de naam sortdate, die je dan weer in een ander programma kunt gebruikten.
vervolgens kun je %sortdate% wel weer appenden in een ander batchfiletje. Ik gebruik het bijvoorbeeld in rotate.bat om slechts de 10 meest actuele logfiles te behouden (wordt 's nachts aangeroepen middels een scheduled task):
Batchfile:
1
2
3
4
5
6
7
8
9
10
11
12
13
@ECHO OFF

setlocal
CALL C:\jobs\generic\sortdate.bat
ECHO on
:: hier staat pad naar mijn logdir
set logDir=C:\mijnlogdir\

MOVE %logDir%stderr.txt %logDir%stderr\%sortdate%_stderr.txt

FOR /F "skip=10" %%i IN ('dir /A:-D-H-S /B /O:-N %logDir%stderr\') DO DEL /Q %logDir%stderr\%%i

ENDLOCAL

Ik hoop dat dit is wat je zoekt. Het heeft bij mij veel tijd gekost om hierachter te komen. Het idee om de registry te gebruiken om je locale uit te lezen heb ik op een of andere website gevonden, en daar heb ik zelf aangepast voor gebruik in sortdate.bat.
edit:

N.B.: dit werk in ieder geval onder NT 4.0, 2000 en XP. Ik heb niet geprobeerd of het ook onder windows 95, 98, 98SE of ME werkt, daar is namelijk wel sprake van een iets andere versie van de command-interpreter command.com i.p.v. cmd.exe

[ Voor 11% gewijzigd door Ralluph op 23-05-2003 14:58 . Reden: toevoeging ]


  • Dinictus208
  • Registratie: November 2000
  • Niet online
De reden waarom ik .bat denk is dat ik op mijn werk zit waar ik geen acces heb tot VB oid.

Bedankt voor de tips so far jongens. Oh ja, het formaat van de datum is me niet zo belangrijk ALS ik de dit maar terug kan vinden op datum.

Ik denk dat ik thuis maar wat gaat vogelen met VB want dat is het zo klaar.

maar ook nog even kijken naar de oplossing van Ralluph. B)

I could feel at the time There was no way of knowing Fallen leaves in the night Who can say where they're blowing As free as the wind And hopefully learning Why the sea on the tide Has no way of turning


Verwijderd

Dinictus schreef op 23 May 2003 @ 15:51:
De reden waarom ik .bat denk is dat ik op mijn werk zit waar ik geen acces heb tot VB oid.

Bedankt voor de tips so far jongens. Oh ja, het formaat van de datum is me niet zo belangrijk ALS ik de dit maar terug kan vinden op datum.

Ik denk dat ik thuis maar wat gaat vogelen met VB want dat is het zo klaar.

maar ook nog even kijken naar de oplossing van Ralluph. B)
VBScript draait praktisch op elke windows machine. Als enige voorwaarde dient de windows script host te draaien. Dus dat is wel degelijk een optie. Knip en plak de volgende code in een tekstbestand en hernoem het van een .txt naar een .vbs. Dubbelklikken et voila!

code:
1
2
3
Dim sMessage
sMessage = "He Dinictus, zie VBS werkt gewoon!"
MsgBox(sMessage)


Voor hetgeen jij wilt moet je even kijken naar het FileSystemObject:

http://msdn.microsoft.com...filesystemobjectmodel.asp

Algemene VBscript reference hier te dll: http://msdn.microsoft.com...downloads/list/webdev.asp

Voor voorbeelden verwijs ik je Experts-exchange. Daar worden veel van dit soort scripts gedeeld (tip: doorzoek met Google de inhoud van de site):
http://www.experts-exchange.com/

  • Dinictus208
  • Registratie: November 2000
  • Niet online
ja ja ja!

ik zat echt NET aan vbs te denken! op die manier kan ik NU op mijn werk nog krijgen wat ik wil! Snel aan de slaggggggg. thnks

I could feel at the time There was no way of knowing Fallen leaves in the night Who can say where they're blowing As free as the wind And hopefully learning Why the sea on the tide Has no way of turning


Verwijderd

@ECHO OFF

md %DATE%

rd ma
rd di
rd wo
rd do
rd vr
rd za
rd zo

dit maakt automatisch een directory aan met de datum van vandaag

die rd's zijn ervoor hij maakt ook automatisch een map aan met de dag dus das eentje te veel.

K weet niet of dit alles is wat je wou ?

[ Voor 59% gewijzigd door Verwijderd op 23-05-2003 16:23 . Reden: oops ]


  • Dinictus208
  • Registratie: November 2000
  • Niet online
De vraag is: kan ik %DATE% ook gebruiken om data te plaatsen:

dus:
@echo off
md m:\dinictus\%date%
copy m:\dinictus\*.rtf m:\dinictus\%date\
exit


hmz werkt niet, hij gaat hem gewoon %date% noemen bij mij....

[ Voor 29% gewijzigd door Dinictus208 op 23-05-2003 16:36 ]

I could feel at the time There was no way of knowing Fallen leaves in the night Who can say where they're blowing As free as the wind And hopefully learning Why the sea on the tide Has no way of turning


Verwijderd

gebruik eens quotes..
MD %date% resulteert bij mij in VR,
MD "%date%" geeft als resultaat VR 23-05-2003

Ralluph z'n methode zou ook moeten werken.
Pagina: 1