2016-08-11 4 views
0

Ich versuche, ein Skript zu erstellen, das Zeile für Zeile alle Dateien in einem Unterverzeichnis von einem Ordner original_file in einen Ordner converted_file kopiert und nach dem Anzeigen eines |, ersetzt durch ein ; .. aber bisher kein glück, die zweite schleife scheint nicht zu funktionieren.Batch - Ersetze bestimmte Zeichen in einem bestimmten Unterverzeichnis

Meine erste Schleife funktioniert gut, sendet alle Dateinamen im original_folder, aber meine zweite Schleife wird nicht verwendet. Ich habe versucht, mit "und" für Dateien/Pfad mit Leerzeichen zu spielen.

Alle Ideen, wie man dieses Problem beheben würde nur die klassische alte Batch-Technik mit?

+1

Ändern Sie Ihre innere Schleife in 'FOR/F" usebackq tokens = * "%% B IN ("% ORIGINAL% \ %% f ") DO (...)' ('' 'wird verwendet, um a zu markieren Befehl, zusammen mit der 'usebackq' Option,' 'markieren Sie Dateien; geben Sie' for /? 'in ein Eingabeaufforderungsfenster und lesen Sie die Hilfe sehr sorgfältig) ... Außerdem empfehle ich die in Anführungszeichen gesetzte' SET' Syntax 'SET" CCC =! CCC: | = ;! "', so dass kein Entkommen mehr nötig ist ... – aschipfl

+0

Das hat den Trick Dank :) - bei der Verwendung der Anführungszeichen und usebackq Option, es länger nicht gefunden den richtigen Pfad/Treiber/Datei/etc .. –

Antwort

0

Mit diesem den Trick, dank @aschipfl

for /f "delims=" %%f in ('dir /b %ORIGINAL%') do (
     FOR /F "usebackq tokens=*" %%B IN ("%ORIGINAL%\%%f") DO (
       SET CCC=%%B 
       SET "CCC=!CCC:%CHAR_TO_REPLACE%=%CHAR_TO_USE%!" 
       ECHO !CCC! >> "%CONVERTED%\%%f" 
      ) 
    ) 
Verwandte Themen