Hallo!
Ich hab schon die ganze Zeit rumgesucht, aber nix gefunden - evtl. geht's auch gar nicht...
Ich habe in einer Textdatei ("name.txt") einen Eintrag, den ich als Dateinamen verwenden will.
Der Befehl in der Batchdatei zum Umbenennen sieht folgendermaßen aus:
ren %1
...%1 steht für die umzubenennende Datei...
Bei obigem ren-Befehl krieg ich allerdings immer 'n Syntaxfehler. Auch ein copy funktioniert nicht.
Wie kann ich einen Eintrag aus einer Datei in eine Variable speichern??
Denn dann könnte ich ja folgendermaßen vorgehen:
SET neuername = type name.txt???
ren %1 %neuername%
Ist mein Problem verständlich? Der neue Name wird jedesmal generiert und in name.txt abgespeichert. Und diesen Eintrag will ich entweder in einer Variablen speichern oder gleich im "ren"-Befehl benutzen...
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Der for befehl könnte da helfen:
FOR /F "eol=;" %%i IN ('style="color:red">type name.txt') DO @echo ren %1 "%%i"
Wichtig sind die roten bereiche (echo weglassen, vorne die einfachen hochkommata verwenden und hinten die doppelten)! Es sollte nur eine nicht-leere zeile in der datei vorhanden sein (leere zeilen werden ignoriert) oder wenigstens in der letzten der gewünschte name stehen.
mr.escape
Danke mr. escape,
so ganz versteh' ich das noch nicht - werd's aber probieren :-)
Du benennst eine datei xxx.yyy um, indem du die zu erstellende datei umb.bat aufrufst:
umb.bat xxx.yyy
in umb.bat steht dann:
REM hierhin gehört alles nötige um aus %1 den dateinamen nach "name.txt" zu kopieren
REM z.b.:
REM ripname.bat %1
REM und hier das eigentliche umbenennen
FOR /F "eol=;" %%i IN ('type name.txt') DO @ren %1 "%%i"
mr.escape
@echo off
Set x="test.txt"
ren %1 %x%
Nenne diese Batch zb tausch.bat
Die umzubenennende Datei muß im selben Verzeichnis liegen, sonst findet er sie nicht.
Und beim Aufruf der Batch muß der Name mit übergeben werden.
Beispiel: tausch winword.exe
winword.exe wird an die Variable %1 übergeben und durch den Inhalt von x ersetzt.
Und das hast du auch ausprobiert?
Nach dieser methode wird bei mir erwartungsgemäß alles zu "test.txt" (Inhalt von x) umbenannt (bzw. gar nicht, weil die datei ja schon vorhanden ist) aber nicht nach dem, was sich in der bestehenden datei "test.txt" befindet.
Ich habe in einer Textdatei ("name.txt") einen Eintrag, den ich als Dateinamen verwenden will.
Der neue Name wird jedesmal generiert und in name.txt abgespeichert. Und diesen Eintrag will ich entweder in einer Variablen speichern oder gleich im "ren"-Befehl benutzen...
mr.escape
Hallo!
Also bei GanzGenau's Lösuing bin ich mir auch nicht sicher.
Der Variable "x" wird ja statisch der Text "test.txt" zugewiesen, was immer zum selben Ergebnis führen wird.
Ich hab das folgendermaßen gelöst:
set /P neuname= ren %1 "%neuname%"
Damit funktioniert's, mir hat der SET /P-Befehl gefehlt...
Auf jeden Fall vielen Dank Euch allen!
Ich denke mal, daß ich das Problem nicht richtig gelesen habe.
Ich benenne nur eine Datei um, während wohl der Name aus der Datei generiert werden soll.
Sorry.