constante 10 Geschrieben 17. November 2004 Melden Teilen Geschrieben 17. November 2004 Hi ihr alle erstmal, ich will eine Batchdatei schreiben, die nachguckt ob eine Datei vorhanden ist, wenn ja diese dann löscht und dann ein wenig wartet und dieses dann wiederholt. So das zu realisieren habe ich mir überlegt über eine For schleife zu machen und dann einfach eine zeitlang den localhost anpingt weil ich keine Modul hinzufügen darf wie "wait.exe" dachte an sowas hier: FOR %%x in (c:\testbatch\1.txt) do IF "%1"=="%%x" goto OK goto :wait :OK del c:\testbatch\1.txt :wait ping -n 15 localhost goto :ok aber irgendwie funzt es nicht! Zitieren Link zu diesem Kommentar
Dr.Lecter^ 10 Geschrieben 17. November 2004 Melden Teilen Geschrieben 17. November 2004 hi! so wie du es machst, durchsuchst du deine 1.txt was steht da drinnen ? soll diese textdatei eine dateiliste enthalten? lg Zitieren Link zu diesem Kommentar
constante 10 Geschrieben 17. November 2004 Autor Melden Teilen Geschrieben 17. November 2004 oh, huups. Nein die 1.txt soll nicht durchsucht sondern unwiederruflich und ohne jede weiter bestätigung gelöscht werden Zitieren Link zu diesem Kommentar
Dr.Lecter^ 10 Geschrieben 17. November 2004 Melden Teilen Geschrieben 17. November 2004 also wie ich das sehe, willst du einen ordner durchsuchen? und wann willst du dann eine datei löschen? soll das eine bestimmte datei sein? lg kannst du etwas genauer beschreiben, was du (nicht mit der test) sondern mit der batch dann wirklich mal anstellen willst? dann fällt das hineindenken auch leichter ;) Zitieren Link zu diesem Kommentar
constante 10 Geschrieben 17. November 2004 Autor Melden Teilen Geschrieben 17. November 2004 ja ich will das eine datei in einem ordner geprüft wird ob diese halt vorhanden ist. diese dann löscht und ein wenig wartet und dann das wieder holt. habe es aber jetzt hingekriegt mal halbwegs hingekriegt zum verständnis. Denn dies sollte nicht immer wieder holt werden sondern nur 20 mal z.b.. Also mit einer for schleife :start if exist %c:\testbatch\1.txt goto loesch ping -n 15 localhost goto start :loesch del c:\testbatch\1.txt goto start Zitieren Link zu diesem Kommentar
Dr.Lecter^ 10 Geschrieben 17. November 2004 Melden Teilen Geschrieben 17. November 2004 Original geschrieben von constante FOR %%x in (c:\testbatch\1.txt) do IF "%1"=="%%x" goto OK wenn du zwei variablen vergleichst ist es erst mal syntaktisch falsch, wenn du sie unter anführungszeichen stellst: also wenn in deiner test.txt deine dateinamen stehen würden dann würde es so funzen: set 1="1.txt" FOR /F "tokens=1, delims=\ " %%i in (C:\testbatch\test.txt) do ( IF %1%==%%i @echo J | del C:\testbatch\%1% ) also..das würd gehen, wenn deine test.txt die ganzen dateinamen so beihnalten würde: 1.txt 3.txt 5.txt 2.txt ... aber ich glaub, dass du was anderes willst ;) lg p.s. wieso willst den localhost pingen? eine batch ist ein stapelverarbeitungsprogramm. ein befehl folgt dem anderen..da brauchst net "künstlich" warten..das macht die batch Zitieren Link zu diesem Kommentar
constante 10 Geschrieben 17. November 2004 Autor Melden Teilen Geschrieben 17. November 2004 ne du verstehst mich ein wenig falsch. Pass auf die sache ist folgende: ein Porzess erstellt andauernd .txt dateien. diese sollen wieder gelöscht werden. jetzt frag mich nicht warum die dann überhaupt erstellt werden, denn das frage ich mich im Moment auch! So auf jeden fall sollen die .txt datei gelöscht werden und nach einer gewissen zeit soll das wieder holt werden. da aber kein zusätzliches Modul wie z.b "wait.exe" eingebunden werden darf dachte ich mir wartezeiten raushoeln zu können indem ich den localhost anpinge. eigentlich tut diese batch datei schon alles was wir brauchen: :start if exist %c:\testbatch\1.txt goto loesch ping -n 15 localhost goto start :loesch del c:\testbatch\1.txt goto start dachte mir nur vielleicht das es noch schönere Möglichkeiten gibt die batch zu verzögern anstatt sich selbst zu pingen und vielleicht anstatt immer wieder an den anfang zu springen eine schöne schleife einzubauen! Zitieren Link zu diesem Kommentar
Dr.Lecter^ 10 Geschrieben 17. November 2004 Melden Teilen Geschrieben 17. November 2004 also wenn du wait nicht verwenden darfst, dann fällt mir keine möglichkeit ein... ...aso dann hab ich dich falsch verstanden...dachte du willst mehrere dateien suchen...und das in einer schleife lösen... in einer for kannst du schon schritte definieren..den localhost pingen wirst du dir dadurch aber nicht ersparen...du könntest es höchstens nach der systemzeit machen...und dadurch zu definierten zeitpunkten diese datei löschen. aber so wirds wohl einfacher sein, lg dani Zitieren Link zu diesem Kommentar
constante 10 Geschrieben 17. November 2004 Autor Melden Teilen Geschrieben 17. November 2004 so jetzt gibt es doch ne plan änderung! mal angenommen es gibt 35 dateien in einem Ordner. alle werden fortlaufend nummeriert von 1.txt-35.txt. wenn die 1.txt gelöscht wird nennt sich die 2.txt automatisch in die 1.txt um. wenn dann die 1.txt wieder gelöscht wird nennt sich die 3.txt in 1.txt um! Klar? so jetzt soll es so laufen das der benutzer die zahl 35 eingibt bei der batch datei. also es soll eine abfrage kommen aus der batch datei heraus wo drinne steht wieviel sollen gelöscht werden ? dann wird die 35 eingegebn und die batchdatei löscht die 1.txt 35mal! Danach soll die batch abbrechen! dachte an sowas wie vorhin, nur das in :loesch dann gezählt wird :loesch del c:\testbatch\1.txt goto start und das es vorher halt die abfrage gibt wie oft gezählt werden soll! Zitieren Link zu diesem Kommentar
Dr.Lecter^ 10 Geschrieben 17. November 2004 Melden Teilen Geschrieben 17. November 2004 :) ok das könntest in einer for machen die variable anzahl liest vom benutzer ein...und dann: FOR /L %%i in (1,1,%anzahl%) do ( ...dein konstrukt von vorher ) lg p.s. ich hab ka ahnung, ob des mit der variable in der for schleifen funzt..sollte aber normal schon Zitieren Link zu diesem Kommentar
constante 10 Geschrieben 17. November 2004 Autor Melden Teilen Geschrieben 17. November 2004 das funzt bei mir net!!! ist es möglich das man etwas eingibt und diesen wert dann übergibt?? Zitieren Link zu diesem Kommentar
Dr.Lecter^ 10 Geschrieben 17. November 2004 Melden Teilen Geschrieben 17. November 2004 ja ist es schon...aber wenn du was einliest, dann kannst du es auch nur in einer variable ablegen...und dann stehst du wieder vor dem gleichen problem :suspect: wenn du interaktion mit dem user willst, ist die batch-programmierung nicht unbedingt das richtige.... lg Zitieren Link zu diesem Kommentar
constante 10 Geschrieben 17. November 2004 Autor Melden Teilen Geschrieben 17. November 2004 also erst einmal danke für die Zeit und Mühe die du in mich investiert hast! OK, ich habe es jetzt auch wieder anders erkärt gekriegt! es soll nur eine bestimmte anzahl an wiederholungen geben, die festgelegt ist! Wie kann ich das machen? ================================ Es geht nichts über ein Pflichtenheft!!!!!! ================================ Zitieren Link zu diesem Kommentar
Dr.Lecter^ 10 Geschrieben 17. November 2004 Melden Teilen Geschrieben 17. November 2004 hi..ok du hast eine fixe anzahl an wiederholungen..und du willst nun die z.b 35 lösch-aktionen einmal oder mehrmals machen? wenn nur 1-mal durchlaufen: for /L %%i in (1,1,35) do( :start if exist %c:\testbatch\1.txt goto loesch goto start :loesch @echo J | del c:\testbatch\1.txt goto start ) lg dani Zitieren Link zu diesem Kommentar
constante 10 Geschrieben 17. November 2004 Autor Melden Teilen Geschrieben 17. November 2004 ich will diese aktion 35 mal machen und dabei 1 mal eine datei löschen. Also eine bestimmte datei 35 mal löschen. 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.