Jump to content

Batch Problem


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

Recommended Posts

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!

Link to comment

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

Link to comment
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

Link to comment

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!

Link to comment

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

Link to comment

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!

Link to comment

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!!!!!!

================================

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...