Ich habe ein Problem mit einer Batch und hoffe auf eure Unterstützung. Doch zuerst eine kurze Erklärung meines Standpunktes:
In meiner Firma verwalten wir unterschiedliche Betriebe, welche je einen Ordner mit einer zweistelligen Nummer haben, welcher dann einige Unterordner in sich hat. In diesem Unterordner befinden sich die User-Homes. In diesen User-Homes liegt je ein INI-File, in welchem sich eine Zeile mit "VersionSignatur=X" befindet.
Wenn nun ein User intern die Abteilung oder gar den Betrieb wechselt, dann löscht man diese Zeile, worauf in Outlook automatisch eine neue Signatur aus den AD-Informationen zusammengestellt wird (Darin stehen Dinge wie Abteilung, Direktwahl und Betrieb).
Unsere Betriebe haben rund 2500 Angestellte, was natürlich eine nicht unbeachtliche Anzahl an wöchentlichen Mutationen ergibt. Und bei jeder einzelnen muss man sich durch die Ordnerstruktur klicken, das INI-File öffnen und die Datei löschen.
Ich bin der Informatik-Lehrling in dieser Firma und habe mir nun als kleine Zwischenaufgabe zum Ziel gelöst, diese Prozedur etwas zu verkürzen, zuerst mal mit einem Batch-File. Wenn das dann funktioniert, will ich mir dann weitere Dinge wie VBS etc. anschauen.
So, nun zum eigentlichen Problem: Der momentane Stand ist der, dass ich die Betriebsnummer angebe und anschliessend den eindeutigen Benutzer-Kürzel, welcher gleich ist wie der Ordnername des User-Homes.
Diese werden dann in Variablen gespeichert und ergänzen somit den hinterlegten Pfad (bis auf die Nummern und Benutzer-Kürzel sind die Ordnerstrukturen 1:1 identisch). Danach wird das INI-File ausgelesen und in eine Datei namens "ausgabe.txt" gespeichert (hat sonst Probleme gegeben, wenn ich das INI-File direkt ersetzen wollte). In dieses File ausgabe.txt wird der gesammte Inhalt, ausser die Zeilen mit VersionSignatur=X geschrieben (in ganz seltenen Fällen gibt es zwei solche Zeilen). Danach sollte aus dem Text wieder das INI-File erstellt werden. Das klappt soweit, aber leider gibt es
1. eine Art Titel in diesem Stil: "------------blabla.INI"
2. wird trotzt dem Befehl "echo j¦ del ausgabe.txt" diese Auslagerungs-Datei nicht gelöscht.
Könnt Ihr einem Jungspund in der Informatik bitte helfen?
Hier das Batch und die Ausgaben:
Das BATCH-File:
@echo off set /p heim_name="Bitte geben Sie die Heim-Nummer an: " echo. set /p benutzer_name="Bitte geben Sie den Benutzer-Name an: " CD C:\daten\%heim_name%\user\%benutzer_name%\WINDOWS FIND /V "VersionSignatur" blabla.INI > ausgabe.txt echo j¦ del blabla.ini FIND /V "----" ausgabe.txt > blabla.INI echo j¦ del ausgabe.txt PAUSE
Das INI-File vor der Ausgabe(das erste Zeile etc. sind Platzhalter für die anderen Einträge):
erste Zeile zweite Zeile VersionSignatur=2 vierte Zeile fünfte Zeile sechste Zeile siebte Zeile VersionSignatur64=4 neunte Zeile DAS ENDE
Das INI-File nach der Ausgabe:
---------- AUSGABE.TXT erste Zeile zweite Zeile vierte Zeile fünfte Zeile sechste Zeile siebte Zeile neunte Zeile DAS ENDE
Die nicht löschbare Datei ausgabe.txt:
---------- BLABLA.INI erste Zeile zweite Zeile vierte Zeile fünfte Zeile sechste Zeile siebte Zeile neunte Zeile DAS ENDE
Wie Ihr seht, werden zwar im Grunde die richtigen Zeilen gelöscht, doch jedesmal wird ein Zeilenumbruch eingefügt. Das wäre ja nicht tragisch, doch es sollte ja eine richtige Lösung sein, und der Grund ist ja nicht, dass man dann wieder von Hand nachkorrigieren muss. :-)
Ausserdem ist es mühsam, wenn man mal in das File schauen muss und dann zuerst mal 100 leere Zeilen runterscrollt.
Bitte habt Verständnis, das ich aus Datenschutzrechtlichen Gründen keine richtigen Betriebsnummern und Benutzer-Namen nehmen kann, der Kern bleibt ja derselbe.
Ausserdem könnt Ihr euch denken, dass ich im Geschäft nicht irgendwelche Batch-Erweiterungen, Programme etc. installieren kann oder überhaupt darf. eine reine-Batch- oder VBS-Lösung wäre also klar von Vorteil!
Ich hoffe, ich habe mein Problem gut beschrieben.
Ich danke euch für eure Hilfe!
Ivan
Dieser Beitrag wurde von Ludix bearbeitet: 31. März 2010 - 19:23