tiha 10 Geschrieben 2. Februar 2009 Melden Teilen 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 ?? Zitieren Link zu diesem Kommentar
d.stegemann 10 Geschrieben 3. Februar 2009 Melden Teilen 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) Zitieren Link zu diesem Kommentar
tiha 10 Geschrieben 3. Februar 2009 Autor Melden Teilen 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. Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 3. Februar 2009 Melden Teilen 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 Zitieren Link zu diesem Kommentar
d.stegemann 10 Geschrieben 3. Februar 2009 Melden Teilen 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 Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 3. Februar 2009 Melden Teilen 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 Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 3. Februar 2009 Melden Teilen 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 Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 3. Februar 2009 Melden Teilen Geschrieben 3. Februar 2009 und was macht deine Lösung jetzt "richtiger" ? Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 3. Februar 2009 Melden Teilen Geschrieben 3. Februar 2009 Sie ist Powershelliger. Solang es die Posh hergibt muss ja keine Dot.Net Funktionen ausführen. Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 3. Februar 2009 Melden Teilen 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 Zitieren Link zu diesem Kommentar
d.stegemann 10 Geschrieben 3. Februar 2009 Melden Teilen 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 Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 3. Februar 2009 Melden Teilen 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 Zitieren Link zu diesem Kommentar
d.stegemann 10 Geschrieben 3. Februar 2009 Melden Teilen 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 Zitieren Link zu diesem Kommentar
tiha 10 Geschrieben 4. Februar 2009 Autor Melden Teilen 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.... Zitieren Link zu diesem Kommentar
olc 18 Geschrieben 4. Februar 2009 Melden Teilen 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.