baum Geschrieben 10. Mai 2004 Teilen Geschrieben 10. Mai 2004 Hi, ich hab eine knifflige frage an euch: ich brauche ne batch die ein verzeichniss in eine datei listet. soweit kein problem aber, die batch soll die dateinamen die dann in der datei stehen mit einer for-schleife durchgehen, in jeden dieser ordner ist eine spezielle datei die immer gleich heißt, und in der jeder datei sind so zwischen 1 und 10 zeilen, und ich will aus jeder datei eine zeile rauslöschen in der ein bestimmtes wort steht, die anderen zeilen sollen aber erhalten bleiben. jemand ne idee? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 10. Mai 2004 Teilen Geschrieben 10. Mai 2004 Und das alles willst Du mit einer Batchdatei lösen? Das Suchen in Dateien würde noch funktionieren aber das löschen von Datensätzen nicht mehr. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baum Geschrieben 10. Mai 2004 Autor Teilen Geschrieben 10. Mai 2004 naja ich hab mir das so vorgestellt das die erste schleiffe die ordnernamen aus der datei holt und dann in die zweite schleiffe springt, die jede zeile in der datei durchgeht und immer nen >> in eine neue datei macht auser wenn das bestimmte wort kommt, und hinterher die alte file löschen und die neue umbennenen. Mein problem is nur das ich bei den schleiffen nicht so durchsteige Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 10. Mai 2004 Teilen Geschrieben 10. Mai 2004 Eine Batchdatei kann eine Datei nicht Zeilenweise auslesen. Der Befehl find sagt Dir nur ob das Wort in der Datei steht oder nicht. Wenn ja gibt find den Suchstring zurück sonst nichts. Für solche Operationen sind Batchdateien nicht ausgelegt. Was hälst Du von Windows Scripting Host. Ich weiss damit kann man viel Mist machen aber für dein Vorhaben genau das richtige. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Dalaya Geschrieben 10. Mai 2004 Teilen Geschrieben 10. Mai 2004 Schleifen: Beispiel für eine Schleife: ------------------------------ FOR %%A IN (*.*) DO ECHO %%A ------------------------------ Hier wird die Schleife solange durchlaufen, wie es Dateien in einem Verzeichnis ("*.*" kann z.B. für "datei.txt" oder was auch immer stehen) gibt. Beim Durchlaufen wird der Name der Dateien ( gespeichert in"%%A") am Bildschirm ausgegeben. ------------------------------ @ECHO OFF ECHO Diese Datei enthält die Namen der sich im Verzeichnis befindenden Dateien.> Names.txt ECHO ====================>> Names.txt FOR %%A IN (*.*) DO ECHO %%A >>Names.txt ECHO ====================>> Names.txt ------------------------------ Diese Batch-Datei erzeugt eine Datei namens "Names.txt" mit dem o. genannten Text. Wenn zwei ">" hintereinander folgen, heißt das, dass ein Text an eine Datei angefügt werden soll, wenn nur ein ">" dort stehen würde, würde die Datei jedesmal überschrieben werden. Bei der Schleife passiert folgendes: In einer Variable %%A wird der Name einer Datei, oder der ersten Datei in einem Verzeichnis, gespeichert, der Name der Datei wird mittels ECHO-Befehl an die Datei Names.txt angehängt. Dies wird solange wiederholt, bis es keine Dateien mehr im Verzeichnis gibt. hier steht mehr Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baum Geschrieben 10. Mai 2004 Autor Teilen Geschrieben 10. Mai 2004 So, das ist die lösung.... hab mein Hirn angestrenkt. :marine :marine trotzdem danke an Dalaya palvoelgyi und die die helfen wollten ;-) kurze erklärung: :mod: - clients.txt enthält die Rechnernamen in deren configurations datei das wort "acc_admin" vorkommt - rt.txt enthält alle Rechnernamen - file.bat ist die configurationsdatei die für jeden Rechner existiert - "acc_admin" ist das wort nach dem gesucht wird und dessen zeile rausgelöscht werden soll - \\server\dir1\dir2 is natürlich eine verfremdung unserer server strucktur ;-) deswegen ist das script warscheinlich auch nicht so leicht zu verstehen wenn man nur drüberliest. remove.bat: ========== @echo off call clients.bat pause FOR /F "eol=; tokens=1,2* " %%i in (clients.txt) do call :setenv %%i goto :end :setenv FOR /F "eol=R tokens=1,2,3,4,5* " %%i in (\\server\dir1\dir2\%1\file.bat) do call :setenvedit %1 %%i %%j %%k rename \\server\dir1\dir2\%1\file.bat file.bat-old rename \\server\dir1\dir2\%1\filenew.bat file.bat goto :eof :setenvedit echo %2 %3 %4 | find /i "acc_admin" if errorlevel 1 echo %2 %3=%4 >> \\server\dir1\dir2\%1\filenew.bat goto :eof :end echo "Fertig!" clients.bat: ============ del clients.txt dir /b \\server\dir1\dir2\ >> rt.txt FOR /F "eol=; tokens=1,2* " %%i in (rt.txt) do call :checkrt %%i goto :end :checkrt type \\server\dir1\dir2\%1\file.bat | find /i "acc_admin" if errorlevel 1 goto :end echo %1 >> clients.txt goto :eof :end Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.