Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Einfache Frage an die Batch-Profis...

AH966 / 7 Antworten / Baumansicht Nickles

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...

Gruß,AndreasDer Pfad der Gerechten ist zu beiden Seiten gesäumt mit den Freveleien der Selbstsüchtigen und der Tyrannei böser Männer...
bei Antwort benachrichtigen
mr.escape AH966 „Einfache Frage an die Batch-Profis...“
Optionen

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

"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen
AH966 mr.escape „Der for befehl könnte da helfen: FOR /F eol i IN style color:red type name.txt...“
Optionen

Danke mr. escape,

so ganz versteh' ich das noch nicht - werd's aber probieren :-)

Gruß,AndreasDer Pfad der Gerechten ist zu beiden Seiten gesäumt mit den Freveleien der Selbstsüchtigen und der Tyrannei böser Männer...
bei Antwort benachrichtigen
mr.escape AH966 „Danke mr. escape, so ganz versteh ich das noch nicht - werd s aber probieren :- “
Optionen
so ganz versteh' ich das noch nicht
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
"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen
ganzgenau AH966 „Einfache Frage an die Batch-Profis...“
Optionen

@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.

bei Antwort benachrichtigen
mr.escape ganzgenau „@echo off Set x test.txt ren 1 x Nenne diese Batch zb tausch.bat Die...“
Optionen

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

"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen
AH966 mr.escape „Und das hast du auch ausprobiert? Nach dieser methode wird bei mir...“
Optionen

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!

Gruß,AndreasDer Pfad der Gerechten ist zu beiden Seiten gesäumt mit den Freveleien der Selbstsüchtigen und der Tyrannei böser Männer...
bei Antwort benachrichtigen
ganzgenau mr.escape „Und das hast du auch ausprobiert? Nach dieser methode wird bei mir...“
Optionen

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.

bei Antwort benachrichtigen