pipen funzt net
-
HAbe folgendes Problem:
Möchte unten stehenden Befehl ausführen:
del /s /q /f e:\Ordner\*datei.txt>>c:\windows\system32\log.txt
MEin Probist das er nur in die logdatei schreibt wenn er die datei/en löschen konnte, wenn nicht gibt er es aus, was ich aber net will
lösung??
-
Naja, da er immer etwas ausgibt wenn er diese Befehle ausführt schreibt er auch immer. In Stapelverarbeitungsdateien gibt es aber die Möglichkeit von Bedingungen und Sprüngen.
IF [NOT] EXIST dateiname befehel
Bescheibung: IF ermöglicht die von einer Bedingung abhängige Ausführung eines Befehls. Der Befehl wird ausgeführt, wenn die vorhergehende Bedingung erfüllt ist, und übergangen, wenn die Bedingung nicht erfüllt ist.
Für dich wäre es von Vorteil ohne NOT zu arbeiten und ihm den Dateinamen als Parameter zu übergeben. Wenn er erxistiert dann schreibe, ansonsten machst du nichts. Als Platzhalter müsstest du bspw. %1 angeben. Dann ist der erste Parameter den du übergibst der Dateiname und den Befehl könntest du direkt reinschreiben oder auch als Parameter (%2) übergeben.Hier noch ein Beispiel zum löchen einer Datei, wenn das Laufwerk konstant ist:
IF EXIST C:%1 DEL C:%1
oder wenn das Laufwerk nicht konstant ist
IF EXIST %1 DEL %1
Code-Hacker
-
johnmclane83 schrieb:
lösung??
cout mit > umleiten, cerr mit 2> umleiten.
del /q err 2>> err.txt >> log.txtoder
gibt del nen guten errorlevel zurück? natürlich nicht. als rm benutzen, liegt afair beim djgpp dabei, sollte bei den gnu utils für win32 auch sein. oder sich ein del selber basteln, dafür gibts ja c++.