3xplor3r
Goto Top

Suchen und Ersetzen eines Zeichensatzes in einem Dateipfad

Hallo Gemeinde,

ich habe gerade nochmal einen anderen Gedanken gehabt und schon probiert, bin aber noch nicht zum Erfolg gekommen.

for /R "%download%" %%i in (*.mp3) do lame %lame% "%%i" "%%k"  

Die Umgebungsvariable %download% repräsentiert den folgenden Pfad.

C:\Dokumente und Einstellungen\iheinrich\Eigene Dateien\Musik\Workarea\Workspace\Download

Jetzt könnten weitere Unterverzeichnisse existieren. Nehmen wir an es würde ein Unterverzeichnis existieren.

C:\Dokumente und Einstellungen\iheinrich\Eigene Dateien\Musik\Workarea\Workspace\Download\Test

In der Variable %%i steht dieser Pfad. Jetzt suche ich schon den ganzen Nachmittag nach einer Möglichkeit das Wort "Download" durch "Upload" zu ersetzen. Ein einfaches Suchen und Ersetzen würde dazu führen, dass auch andere Ordner bspw. Download\Test\Download auch ersetzt werden. Das soll jedoch nicht geschehen. Jetzt gibt es für mich zwei Möglichkeiten.

1) Entweder man sucht jetzt den Teil zwischen dem 7 und 8 "\" und plaziert dort den Zeichensatz "Upload".
2) Man sucht von links den ersten Zeichensatz "Download" und ersetzt diesen mit "Upload"

LG
3x

Content-ID: 176185

Url: https://administrator.de/forum/suchen-und-ersetzen-eines-zeichensatzes-in-einem-dateipfad-176185.html

Ausgedruckt am: 23.12.2024 um 05:12 Uhr

bastla
bastla 13.11.2011 um 20:22:22 Uhr
Goto Top
Hallo 3xplor3r und willkommen im Forum!
Ein einfaches Suchen und Ersetzen würde dazu führen, dass auch andere Ordner bspw. Download\Test\Download auch ersetzt werden
Nicht, wenn Du
C:\Dokumente und Einstellungen\iheinrich\Eigene Dateien\Musik\Workarea\Workspace\Download
durch
C:\Dokumente und Einstellungen\iheinrich\Eigene Dateien\Musik\Workarea\Workspace\Upload
ersetzt.

Ansonsten könntest Du vielleicht etwas genauer erklären, was Du eigentlich erreichen willst ...

Trotzdem noch zu Idee 1): Ungetestet etwa so:
for /f "tokens=1-8* delims=\" %%m in ("%%i") do (  
    if /i "%%t"=="Download" (  
        echo Mach was mit "%%m\%%n\%%o\%%p\%%q\%%r\%%s\Upload\%%u"  
    ) else (
        echo Mach was mit "%%i"  
    )
)
Es sollte dann aber schon für alle Dateien mindestens 8 Ordnerebenen geben ...

Grüße
bastla

P.S.: Darf ich Dich einladen, für Batchzeilen (oder etwa auch Textbeispiele, die unverändert dargestellt werden sollen) "Code"- zu benutzen?
3xplor3r
3xplor3r 14.11.2011 um 11:37:20 Uhr
Goto Top
Hallo Bastla,

natürlich nehme ich Deine Einladung. Ich habe während der Thread-Erstellung schon danach gesucht. Dann hatte ich wiederum einen anderen Thread gesehen, in dem ein User [code] Code [/code] verwendet hatte, was jedoch nicht funktionierte. Aber ich probiere es gleich nochmal selbst aus.

Du hast eigentlich in meinem Gefasel alles richtig interpretiert. Jetzt wollte ich statt dem ersten ECHO-Befehl

set %%q="Upload"  

schreiben, was auch ohne Syntaxfehler läuft. Allerdings wird die Variable nicht ersetz, was durch ein erneutes

echo "%%j\%%k\%%l\%%m\%%n\%%o\%%p\%%q\%%r"   

zu der Ausgabe
C:\Dokumente und Einstellungen\iheinrich\Eigene Dateien\Musik\Workarea\Workspace\Download\*

führt. Nebenbei hätte ich auf Deine Syntax auch kommen müssen. Den Ansatz hatte ich eigentlich schon, habe es dann aber wieder verworfen. Hier nochmal der Code in Gänze.

@for /R "%download%" %%i in (*.mp3) do (  
  for /f "tokens=1-8* delims=\" %%j in ("%%i") do (   
    if /i "%%q"=="Download" (   
      echo IF-Zweig "%%j\%%k\%%l\%%m\%%n\%%o\%%p\%%q\%%r"  
      set %%q="Upload"  
      echo IF-Zweig "%%j\%%k\%%l\%%m\%%n\%%o\%%p\%%q\%%r"  
    ) else ( 
      echo ELSE-Zweig "%%i"   
    )
  )
)
pause

LG
3x
Skyemugen
Skyemugen 14.11.2011 um 14:41:02 Uhr
Goto Top
[OT]Aloha 3x ...

du hättest mal auf bastlas link klicken sollen, dann wäre dir aufgefallen, dass es bei uns nicht [code][/code] sondern ##blue|## aktiv ist bitte für unsere Augen nachträglich ändern, danke =)

greetz André[/OT]
bastla
bastla 14.11.2011 um 14:42:58 Uhr
Goto Top
Hallo 3xplor3r!

Einer Laufvariablen wie %%q kannst Du mit set keinen Wert zuweisen - da Du aber ohnehin den gewünschten Wert kennst (bzw dafür kennen musst), spricht ja eigentlich nix dagegen, diesen gleich direkt einzufügen:
            echo IF-Zweig "%%j\%%k\%%l\%%m\%%n\%%o\%%p\Upload\%%r"  
Alternativ kannst Du den Wert auch vorweg einer Variablen zuweisen und dann diese verwenden, also:
set "Up=Upload"  
...
            echo IF-Zweig "%%j\%%k\%%l\%%m\%%n\%%o\%%p\%Up%\%%r"  
Grüße
bastla
3xplor3r
3xplor3r 14.11.2011 um 14:52:30 Uhr
Goto Top
Hallo bastla,

ich habe den Wert jetzt einer Umgebungsvariable zugewiesen. Wollte das Anfängercoding nur so variabel wie möglich halten. Aber so gehts auch. Die Verzeichnisstruktur sollte sich nicht ändern. Vielen Dank.
bastla
bastla 14.11.2011 um 15:02:40 Uhr
Goto Top
Hallo 3xplor3r!
Wollte das Anfängercoding nur so variabel wie möglich halten.
Das ginge aber, je nachdem, wozu die ganze Aktion dienen soll, auch noch variabler ...

Grüße
bastla
3xplor3r
3xplor3r 14.11.2011 um 15:12:53 Uhr
Goto Top
Ist es jetzt möglich die Laufvariablen einer normalen Variablen zuzuweisen?

  set var="%%j\%%k\%%l\%%m\%%n\%%o\%%p\Upload\%%r"  

LG
3x
bastla
bastla 14.11.2011 um 15:46:52 Uhr
Goto Top
Hallo 3xplor3r!
Ist es jetzt möglich die Laufvariablen einer normalen Variablen zuzuweisen?
Ja.

Falls es Dir nicht aufgefallen sein sollte: Ich habe Dich jetzt schon zweimal nach dem Verwendungszweck gefragt - magst Du den vielleicht doch noch beschreiben?

Grüße
bastla