Jump to content

Datum-Variable ändern


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

ich erstelle per Skript einen Ordner mit Names des aktuellen Datums:

 

set jahr=%date:~-2%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
mkdir %jahr%%monat%%tag%

 

Das klappt auch wunderbar.

Nun kann ich das Skript aber erst am nächsten Tag starten; Der Ordnername muss aber das Datum von gestern sein

(also am 02.02. muss der Ordner 01.02 erstellt werden)

 

Wie kann ich das am besten lösen ??

Link zu diesem Kommentar

Hallo,

 

ich bin kein Batch Crack, aber ganz gut im googeln :)

vielleicht hilft dir das hier ein wenig weiter..

 

SET MONTH=%DATE:~-10,2%&&SET DAY=%DATE:~-7,2%&&SET YEAR=%DATE:~-4%
IF %DAY% LSS 10 SET DAY=%DAY:~-1%
IF %MONTH% LSS 10 SET MONTH=%MONTH:~-1%
SET /A DAY-=1
IF %DAY%==0 (GOTO LASTMONTH) ELSE GOTO OUTPUT

:LASTMONTH
SET /A MONTH-=1
IF MONTH==0 GOTO LASTYEAR
IF NOT %MONTH%==2 GOTO DAYSMON
SET LT=%YEAR%

:LEAPFROG
SET /A LT-=4
IF %LT% GEQ 4 GOTO LEAPFROG
IF %LT% GTR 0 (SET DAY=28) ELSE SET DAY=29
GOTO OUTPUT

:DAYSMON
FOR %%G IN (1,3,5,7,8,10) DO IF %MONTH%==%%G SET DAY=31&&GOTO OUTPUT
FOR %%H IN (4,6,9,11) DO IF %MONTH%==%%H SET DAY=30&&GOTO OUTPUT

:LASTYEAR
SET /A YEAR-=1&&SET DAY=31&&SET MONTH=12

:OUTPUT
IF %DAY% LSS 10 SET DAY=0%DAY%
IF %MONTH% LSS 10 SET MONTH=0%MONTH%
ECHO %MONTH%%DAY%%YEAR:~-2%

 

Das hab ich hier:

singular date not showing in this

gefunden.

 

Müsste wohl ein wenig angepasst werden, zieht aber schonmal einen Tag ab.

Bei einer cmd scheint das nicht ganz so schön zu funktionieren wie bei nem vbs...

 

da würde dateadd reichen..

Dieses Script hier würde z.B. in dem Ordner, wo es sich befindet bei Bedarf einen Unterordner mit dem Datum von gestern erstellen ;)


Set oFSO = CreateObject("Scripting.FileSystemObject")
aFolder = Split(DateAdd("d", Now(), -1), ".")
For i = UBound(aFolder) To LBound(aFolder) Step -1
sFolder = sFolder & aFolder(i)
Next
MsgBox sFolder
Set omyFolder = oFSO.GetFolder(".")
If not oFSO.FolderExists (omyFolder & "\" & sFolder) Then _
oFSO.CreateFolder(omyFolder & "\" & sFolder)

Link zu diesem Kommentar

Vielen Dank!

 

Habe mir schon langsam gedacht, dass das mit einer cmd nicht gut klappen wird. Werde nun also auf VBS ausweichen.

 

Dazu hab ich direkt wieder eine Frage:

 

Wie kann ich denn quick & dirty mit VBS Prüfen ob eine Datei (Dateiname= Datum von gestern YYMMDDda.txt) vorhanden ist??

Sorry, kann der Dateiname ist vorgegeben, da diese Datei automatisch erstellt wird.

Link zu diesem Kommentar

Hallo,

 

das sollte evtl. helfen...

 

Set oFSO = CreateObject("Scripting.FileSystemObject")
aFile = Split(DateAdd("d", Now(), -1), ".")
For i = UBound(aFile) To LBound(aFile) Step -1
If Len(aFile(i)) > 2 Then aFile(i) = Right(aFile(i), 2)
sFile = sFile & aFile(i)
Next
sFile = sFile & "da.txt"
MsgBox sFile
Set omyFolder = oFSO.GetFolder(".")
If not oFSO.FileExists (omyFolder & "\" & sFile) Then _
MsgBox "File nicht vorhanden!"

 

Das prüft, ob ein File deiner Namenskonvention im selben Verzeichnis wie das Script ist :)

 

Gruß

 

Dirk

Link zu diesem Kommentar
Werde nun also auf VBS ausweichen.

 

 

Hallo tiha

Aber dann steig doch gleich auf die aktuelle Technologie um! Mit Powershell und DotNet gehts viel einfacher

 

vergleich einfach mal: :)

 

Erstellen eines Ordners mit dem Datum von gestern

 

1# new-item -type directory -name (get-date).addDays(-1).tostring("dd-MM-yyyy")

 

Existenz einer Datei überprüfen

2# [system.io.file]::exists("c:\temp\Datei.txt")

 

 

cu

blub

Link zu diesem Kommentar
Hallo tiha

Aber dann steig doch gleich auf die aktuelle Technologie um! Mit Powershell und DotNet gehts viel einfacher

 

vergleich einfach mal: :)

 

Erstellen eines Ordners mit dem Datum von gestern

 

1# new-item -type directory -name (get-date).addDays(-1).tostring("dd-MM-yyyy")

 

Existenz einer Datei überprüfen

2# [system.io.file]::exists("c:\temp\Datei.txt")

 

 

cu

blub

 

Dann kann man das aber gleich richtig machen:

test-path c:\temp\Datei.txt

Link zu diesem Kommentar
@d.stegeman, findest du wirklich den vbs-Code weniger verwirrend als den PS-Code?

Welchen Vorteil hätte Tiha, wenn er im Jahr 2009 auf Technik des Jahres 1999 setzt

 

Weniger verwirrend?

 

Nein...

 

 

Vorteil?

 

Wenn ich Microsoft Glauben schenken darf, funktioniert PS nur unter XP, 2K3, Vista und 2K8.

Windows PowerShell

Damit wären die "älteren" Systeme nicht versorgt.

 

Ich habe bei tiha keine Angabe über das OS gesehen. Das VBS funktioniert im Regelfall auch schon unter NT4 ohne einspielen zusätzlicher Software.

 

Also gebe ich tiha auch den Code, von dem ich annehme, das er auf jeden Fall bei ihm läuft :)

 

Ich bin mit Sicherheit kein Technologiefeind und werde mich auch in nächster Zukunft mit dem Thema PS intensiver auseinandersetzen.

 

Gruß

 

Dirk

Link zu diesem Kommentar

*wow*

Vielen Dank für eure Antworten!

 

Keine Angst...Ihr verwirrt mich nicht zu doll! Und es ist wahrscheinlich auf "modernste" das ganzen mit Powershell zu lösen.

Problem an der Sache ist, dass ich mich (ehrlich gesagt) noch nicht so ganz an Powershell traue...Zudem muss ich die erst auf den Systemen installieren.

 

Darum wird es wohl VB werden.

 

Das Skript, dass ich nun zu VB umbauen muss sieht im Moment so aus:

 

echo off

set jahr=%date:~-2%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
set suff=da.txt

g:
cd Backup
cd LOG%jahr%%monat%


if exist %jahr%%monat%%tag%%suff% (goto ok) else (goto fail)

:ok
echo "The File %jahr%%monat%%tag%%suff% is created" >> c:\dlback.dat
c:\scripts\blat.exe c:\dlback.dat -to abc@firma.de -f Server.01@firma.DE -s "Backup ok"
goto end

:fail 
echo "Error...The File is not created" >> c:\dlback.dat
c:\scripts\blat.exe c:\dlback.dat -to abc@firma.de -f Server.01@firma.de -s "Datalog backup failed"
goto end


:end
del c:\dlback.dat
exit

 

Ich denke, dass man das ganze mit VB sicher viel schöner hinbekommt....

Link zu diesem Kommentar

Hi,

 

auch von mir noch einmal (ein wenig OT) die Empfehlung, eher auf die PowerShell zu setzen, als nun noch anzufangen, VBScript zu lernen.

 

Es wird sicherlich auch in Zukunft noch Anwendungsbereiche für VBScript geben, jedoch ist ganz klar die PowerShell das zukünftige "Werkzeug" bei Microsoft. Es wird wahrscheinlich kaum einen Bereich geben, den die PowerShell nicht abdecken wird.

 

Je eher man sich damit auseinander setzt, umso besser. Alles andere ist meiner Meinung nach "auf das falsche Pferd setzen".

 

Wie in blubs Beispiel schön zu sehen ist, verkürzt sich die Ausgabe auf zwei Zeilen - kompliziert ist also etwas anderes. Und das Argument von NT / 2000 etc. greift meines Erachtens nicht - für NT gibt es schon lange keinen Support mehr, 2000 läuft meines Wissens Anfang 2010 aus. Wer jetzt also noch mit offensichtlich ungepatchten Systemen herumwerkelt (NT) oder es bald tun wird (2000), handelt grob fahrlässig.

 

Just my 0,02€.

 

Viele Grüße

olc

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...