tiha 10 Geschrieben 2. Februar 2009 Melden Geschrieben 2. Februar 2009 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 ??
d.stegemann 10 Geschrieben 3. Februar 2009 Melden Geschrieben 3. Februar 2009 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)
tiha 10 Geschrieben 3. Februar 2009 Autor Melden Geschrieben 3. Februar 2009 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.
NilsK 3.046 Geschrieben 3. Februar 2009 Melden Geschrieben 3. Februar 2009 Moin, Wie kann ich denn quick & dirty mit VBS Prüfen ob eine Datei (Dateiname= Datum von gestern YYMMDDda.txt) vorhanden ist?? so: FileExists Method Gruß, Nils
d.stegemann 10 Geschrieben 3. Februar 2009 Melden Geschrieben 3. Februar 2009 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
blub 115 Geschrieben 3. Februar 2009 Melden Geschrieben 3. Februar 2009 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
Dukel 468 Geschrieben 3. Februar 2009 Melden Geschrieben 3. Februar 2009 Hallo tihaAber 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
blub 115 Geschrieben 3. Februar 2009 Melden Geschrieben 3. Februar 2009 und was macht deine Lösung jetzt "richtiger" ?
Dukel 468 Geschrieben 3. Februar 2009 Melden Geschrieben 3. Februar 2009 Sie ist Powershelliger. Solang es die Posh hergibt muss ja keine Dot.Net Funktionen ausführen.
blub 115 Geschrieben 3. Februar 2009 Melden Geschrieben 3. Februar 2009 Reine Geschmacksache! Eine Lösung ist jedenfalls genauso richtig wie die andere, wie noch viele andere Möglichkeiten auch. Müßig weiter darüber zu philosophieren
d.stegemann 10 Geschrieben 3. Februar 2009 Melden Geschrieben 3. Februar 2009 Hallo, Ihr verwirrt tiha nur ... er will gerade aus der Lehmgrube(bat) in den Baggersee(vbs) springen und ihr wollt gleich ein Schwimmbad(PS) bauen :shock: Gruß Dirk
blub 115 Geschrieben 3. Februar 2009 Melden Geschrieben 3. Februar 2009 @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
d.stegemann 10 Geschrieben 3. Februar 2009 Melden Geschrieben 3. Februar 2009 @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
tiha 10 Geschrieben 4. Februar 2009 Autor Melden Geschrieben 4. Februar 2009 *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....
olc 18 Geschrieben 4. Februar 2009 Melden Geschrieben 4. Februar 2009 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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden