Ändern der Pfadposition einer Datei zum gewünschten Pfad

8

Ich möchte die in der Datei definierten Content-Pfade, d. h. logging.properties, in den gewünschten Location-Pfad des jboss7-Standorts ersetzen.

Im Grunde benutze ich das Installationsprogramm, wo ich meinen jboss7-Ordner durchsuchen und an jedem gewünschten Ort des Benutzers finden muss. Aber in einigen Dateien von jboss7 gibt es einen fest codierten Pfad, der wie in der Datei logging.properties definiert ist.

Ich muss diesen hartcodierten Pfad zum gewünschten Pfad ändern.

Ab sofort habe ich repl.bat und file test.bat Dateien im selben Ordner.

repl.bat helper-Datei könnte im folgenden Link gefunden werden: -

Ссылка

Ich habe den Code einfach kopiert und die repl.bat-Datei erstellt.

test.bat-Datei: -

%Vor%

Hier in dieser Datei test.bat suche ich eine Datei tintin.txt und setze den Pfad in einen Variablennamen als 'Ordner'. Die Datei tintin.txt befindet sich direkt im Ordner von jboss7. Dies liegt an den Möglichkeiten mehrerer jboss7-Anwendungsserverordner im System. Bis jetzt habe ich den Pfad, d. H. "C: \ Benutzer \ Anuj \ Desktop \ jboss7 \" und in die Variable "Ordner" festgelegt. Jetzt gibt es eine Datei mit dem Namen logging.properties im Ordnerverzeichnis C: \ Benutzer \ Anuj \ Desktop \ jboss7 \ standalone \ configuration

logging.properties: -

%Vor% Die Hilfedatei

​​repl.bat hilft, den URL-Pfad durch den gewünschten Pfad zu ersetzen, d. h. den Pfad, der auf den Variablennamen 'Ordner' gesetzt ist. Ich möchte das C: \ progra ~ 2 \ Latilla \ C4i \ jboss7 \ durch den Pfad ersetzen, der auf den Variablennamen 'Ordner' gesetzt ist. Hinweis: - Der Inhalt des Dateipfads logging.properties hat hier ein anderes Pfadformat, d. h. C: \ bedeutet doppelter Schrägstrich. \

Könnte das Skript sein, dass ich test.bat versucht habe, ist falsch. Wenn ich auf die Datei test.bat doppelklicke, bekomme ich einen Fehler.

    
Little bird 20.09.2013, 09:37
quelle

1 Antwort

3

Obwohl ich Ihnen nicht helfen kann, das Problem zu beheben, das Sie bei der Verwendung der repl.bat -Datei bekommen, kann ich eine andere Möglichkeit vorschlagen, das anfängliche Problem des Pfadaustauschs zu lösen.

Wenn die Zeichenfolge jboss7 garantiert in allen ursprünglichen Pfaden Ihrer Konfigurationsdatei (en) vorhanden ist, könnten Sie den folgenden Ansatz versuchen:

%Vor%

Die Suche nach der tintin.txt -Datei wurde leicht geändert, um den Prozess möglicherweise schneller zu machen. Anstatt über jedes Verzeichnis zu iterieren und zu prüfen, ob es die Datei enthält, lesen die Schleifen jetzt die Ausgabe von DIR , die nur tatsächlich vorhandene Einträge zurückgibt.

Beachten Sie, dass Sie auch eine FOR /R -Schleife, wie in Ihrem aktuellen Code, mit demselben Effekt verwenden könnten, dh nur existierende Pfade zurückgeben, aber die IN-Klausel müsste eine Maske anstelle eines normalen Namens enthalten, aber das würde muss eine Maske sein, die mit nichts anderem in deinem System übereinstimmt als nur tintin.txt . Wenn Sie beispielsweise sicher sind, dass es keine Datei namens tintin.txt1 oder tintin.txtx oder irgendetwas anderes geben kann, auf die tintin.txt genau ein Zeichen folgt, können Sie stattdessen die folgende Vorlage verwenden:

%Vor%

und dasselbe für D:\ . Das würde nur Verweise auf tatsächlich vorhandene Dateien zurückgeben, die der Maske entsprechen.

Sie können auch sehen, dass die Schleifen nicht zum GOTO Label springen ( got1 ), sondern stattdessen call zum got1 Unterprogramm. Mit dieser Änderung ist es möglich, viele Anwendungsinstanzen auf einmal zu verarbeiten. Ich weiß nicht, dass Ihr mehrfach installiert werden kann. Wenn nicht, werden Sie es wahrscheinlich wieder in GOTO ändern wollen.

Die Subroutine in meinem Skript referenziert die Konfigurationsdatei mit ihrem vollständigen Pfad, wie in Ihrer Beschreibung angegeben ( ...\standalone\configuration\logging.properties ). Aus irgendeinem Grund wird die Datei in Ihrem Skript einfach durch ihren Namen referenziert, obwohl kein vorangehender CD- oder PUSHD-Befehl das aktuelle Verzeichnis an den Speicherort der Datei ändert. Ich nahm an, dass Sie versuchten, Ihr Skript zu vereinfachen, und dieses Bit weggelassen, ob absichtlich oder nicht. Sonst habe ich vielleicht etwas in Ihrer Erklärung und / oder Ihrem Skript übersehen.

Nachdem überprüft wurde, dass die Konfigurationsdatei am erwarteten Speicherort vorhanden ist, wird die Ersetzung auf folgende Weise durchgeführt:

  1. Alle Nicht-Pfad-Konfigurationszeilen werden mit einem Mal in eine temporäre Datei geschrieben.

  2. Jede Konfigurationszeile, die einen Pfad enthält, wird auf folgende Weise verarbeitet:

    • Wenn es die Zeichenfolge jboss7\ nicht enthält, wird sie weggelassen;

    • andernfalls wird der Teil des Pfades bis einschließlich jboss7\ entfernt;

    • Das aktuelle Verzeichnis wird vor dem verbleibenden Teil eingefügt (nachdem jedes \ durch \ ersetzt wurde);

    • Der neue Wert wird wieder in die Konfigurationszeile gesetzt;

    • Die Aktualisierungszeile wird der gleichen temporären Datei hinzugefügt.

  3. In der alten Version wird die Konfigurationsdatei durch die neue ersetzt.

Offensichtlich kann das Skript die Reihenfolge der Zeilen in der verarbeiteten Datei ändern, aber es wird angenommen, dass das keine Rolle spielt.

    
Andriy M 26.09.2013, 17:30
quelle

Tags und Links