Verzeichnisse und-oder Dateinamen umbenennen
Moin zusammen,
ich stehe vor einem Problem und verzweifle
Das Problem:
Ich habe den Inhalt eines Verzeichnisses in eine Datei eingelesen (dir /b >123.txt) und dann die Datei einen Ordner höher abgelegt, vorher noch den Eintrag 123.txt entfernt. In der Datei stehen jetzt Ordner oder Dateien mit -> Vorname Nachname Zusatzinformation
Beispiel: Hugo Balder - Dies ist der Rest
Nun möchte ich in einem Batchfile das der Nachname vor dem Vorname steht mit einem Komma nach dem Vornamen
Balder, Hugo - Dies ist der Rest
Soweit bin ich gekommen :
echo off
FOR /F "eol=; tokens=1,2* delims=, " %%i in (123.txt) do (
echo %%i
echo %%j
echo %%k
set "original=%%i %%j %%k"
set "modifiziert=%%j, %%i %%k"
echo %original%
echo %modifiziert%
rem bis hier sieht es gut aus
rem dies funktioniert nicht rename .\xxx\%original% .\xxx\%modifiziert%
)
kann mir jemand helfen?
ich stehe vor einem Problem und verzweifle
Das Problem:
Ich habe den Inhalt eines Verzeichnisses in eine Datei eingelesen (dir /b >123.txt) und dann die Datei einen Ordner höher abgelegt, vorher noch den Eintrag 123.txt entfernt. In der Datei stehen jetzt Ordner oder Dateien mit -> Vorname Nachname Zusatzinformation
Beispiel: Hugo Balder - Dies ist der Rest
Nun möchte ich in einem Batchfile das der Nachname vor dem Vorname steht mit einem Komma nach dem Vornamen
Balder, Hugo - Dies ist der Rest
Soweit bin ich gekommen :
echo off
FOR /F "eol=; tokens=1,2* delims=, " %%i in (123.txt) do (
echo %%i
echo %%j
echo %%k
set "original=%%i %%j %%k"
set "modifiziert=%%j, %%i %%k"
echo %original%
echo %modifiziert%
rem bis hier sieht es gut aus
rem dies funktioniert nicht rename .\xxx\%original% .\xxx\%modifiziert%
)
kann mir jemand helfen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 647081
Url: https://administrator.de/contentid/647081
Ausgedruckt am: 24.11.2024 um 16:11 Uhr
15 Kommentare
Neuester Kommentar
Hallo,
Verwendet der TO ja schon, obwohl der ZO gesagt hat das dies nicht funktionieren würde.
echo %%i
echo %%j
echo %%k
echo %original%
echo %modifiziert%
mindestens eins davon Echo ist Augeschaltet (OFF).
Und sein
rename "%original%" "%modifiziert%"
bringt (da Vermutet) %original% leer ist eben sein Das System kann die angegebene Datei nicht finden.
Ein set beim Batch starten bzw. dessen rückgabe kann schon hilfreich sein. Debuggen ist oftmals weitaus aufwändiger als der eigentliche geschriebene Code. (hab grad nur keine HW/SW zum testen)
Gruß,
Peter
Verwendet der TO ja schon, obwohl der ZO gesagt hat das dies nicht funktionieren würde.
rename %original% %modifiziert%
Und wenn seine %original& und/oder %modifiziert% leer sind, gibts es mindestens einen Syntaxfehler. Und auch das verwenden von doppelten % Zeichen (der TO macht ja eine Batch Datei) könnte hier helfen, sowie einige zusätzliche Textausgaben (nur zur unterstützung bei der Fehlersuche). Laut seiner Ausgabe sagtecho %%i
echo %%j
echo %%k
echo %original%
echo %modifiziert%
mindestens eins davon Echo ist Augeschaltet (OFF).
Und sein
rename "%original%" "%modifiziert%"
bringt (da Vermutet) %original% leer ist eben sein Das System kann die angegebene Datei nicht finden.
Ein set beim Batch starten bzw. dessen rückgabe kann schon hilfreich sein. Debuggen ist oftmals weitaus aufwändiger als der eigentliche geschriebene Code. (hab grad nur keine HW/SW zum testen)
Gruß,
Peter
Moin,
Gruß Thomas
Zitat von @friend1a:
Hier jetzt der aktuelle Stand der nicht funktioniert
Wenn du die Variablenverzögerung nach dem Einschalten auch noch nutzen würdest, sollte es dann auch funktionieren.Hier jetzt der aktuelle Stand der nicht funktioniert
@echo off
SETLOCAL EnableDelayedExpansion
FOR /F "eol=; tokens=1,2* delims=, " %%i in (123.txt) do (
echo %%i
echo %%j
echo %%k
set "original=%%i %%j %%k"
set "modifiziert=%%j, %%i %%k"
echo %original%
echo %modifiziert%
rename "%original%" "%modifiziert%"
)
@echo off
SETLOCAL EnableDelayedExpansion
FOR /F "eol=; tokens=1,2* delims=, " %%i in (123.txt) do (
echo %%i
echo %%j
echo %%k
set "original=%%i %%j %%k"
set "modifiziert=%%j, %%i %%k"
echo !original!
echo !modifiziert!
rename "!original!" "!modifiziert!"
)
Gruß Thomas
Hallo,
An @friend1a
Auch mal hier nachlesen und verstehen https://devblogs.microsoft.com/oldnewthing/?p=29993
Oder das Beispiel in SS64 genau abarbeiten und die Unterschiede verinnerlichen
Now repeating this with Delayed Expansion:
This will output: first second
The value of the !_var! variable is evaluated as late as possible while the %_var% variable works just as before.
There are some advantages - we can swap the value of two variables in one line:
Gruß,
Peter
Zitat von @TK1987:
Wenn du die Variablenverzögerung nach dem Einschalten auch noch nutzen würdest, sollte es dann auch funktionieren.
Der TO hat zwar gelesen, es aber nicht Verstanden Wenn du die Variablenverzögerung nach dem Einschalten auch noch nutzen würdest, sollte es dann auch funktionieren.
An @friend1a
Auch mal hier nachlesen und verstehen https://devblogs.microsoft.com/oldnewthing/?p=29993
Oder das Beispiel in SS64 genau abarbeiten und die Unterschiede verinnerlichen
Now repeating this with Delayed Expansion:
@echo off
SETLOCAL EnableDelayedExpansion
Set "_var=first"
Set "_var=second" & Echo %_var% !_var!
The value of the !_var! variable is evaluated as late as possible while the %_var% variable works just as before.
There are some advantages - we can swap the value of two variables in one line:
Set "var1=%var2%" & set "var2=%var1%"
Gruß,
Peter
Hallo,
Gruß,
Peter
Zitat von @friend1a:
Ich werde es einmal ausprobieren. Jetzt habe ich noch das Problem mit den Umlauten äüö, da funktioniert das rename nicht. Ich werde hier wohl noch eine neue Anfrage stellen müssen
Umlaute und sonstige Sonderzeichen waren nie eine Gute Idee in Pfad/Dateinamen. Was für einige nach einen Grossen I aussieht, muss nicht für alle Menschen dieser Welt gelten. Sei froh das du keine Chinesche Niederlassungen hast. (2000 Buchstaben in deren Alphabet). Schau dir mal Codepage und deren verwendung an. Auch bedenken solltest du das dein Windows nicht alles so zeigt wie du es erwartest. (ANSI/Unicode) https://ss64.com/nt/chcp.htmlIch werde es einmal ausprobieren. Jetzt habe ich noch das Problem mit den Umlauten äüö, da funktioniert das rename nicht. Ich werde hier wohl noch eine neue Anfrage stellen müssen
Gruß,
Peter