hbspike
Goto Top

Per Batch mehrere Dateien aus einem Ordner umbenennen

Hallo liebe Community.
Ich habe ein Problem und die Suche war auch hilfreich nur funktioniert meine eigene Batch nicht.
Und ich bin am verzweifeln...
Ich habe einen Ordner X und einen Ordner X-Archiv.
Ich will nun alle Dateien aus Ordner X nach X-Archiv kopieren + an den Anfang ein S setzen.

Mein Code bissher sieht so aus:

@echo on

for %%i in ("C:\Data\EDPTEXTClient\Export\TransportRD-Archiv\EPDEXPORT*.ZIP") do call :RenameDatei
goto :eof

:RenameDatei
REM echo %%i
set origDatei=%%i
set Dateiname=%origDatei:~-36%

REN %origDatei% S%Dateiname%


Funktioniert nicht. Ich habe es auch mit folgendem Code probiert, welcher teilweise funktioniert:

@echo on
for %%j in (C:\Data\EDPTEXTClient\Export\TransportRD-Archiv\*.ZIP) do @(
set origDatei=%%j
set Datei=%origDatei:~-36%
REN %origDatei% S_%Datei%
)

Nur keine von beiden Batches benennt alle Dateien um.
Entweder eine und dann beim erneuten ausführen wieder eine , oder wie bei Code1 wird %%i nicht gefüllt und er läuft gegen Fehler.
Hat wer eine Idee wo ich nen Fehler gemacht habe?
Vielen Dank
Christian

Content-ID: 158106

Url: https://administrator.de/contentid/158106

Ausgedruckt am: 26.11.2024 um 05:11 Uhr

60730
60730 06.01.2011 um 12:38:46 Uhr
Goto Top
moin,

nur in Codeblöcke gesetzt und ungetestet ....
(der schmeisst doch die Suffix raus - soll das so sein?)
Zitat von @hbspike:
@echo on
 
for %%i in ("C:\Data\EDPTEXTClient\Export\TransportRD-Archiv\EPDEXPORT*.ZIP") do call :RenameDatei %%i  
goto :eof
 
:RenameDatei
REM echo %1
set origDatei=%1
set Dateiname=%origDatei:~-36%
 
REN %origDatei% S%Dateiname%

Hat wer eine Idee wo ich nen Fehler gemacht habe?
  • %%i gilt nur innerhalb der Schleife


Vielen Dank
Christian
hbspike
hbspike 06.01.2011 um 12:46:51 Uhr
Goto Top
%%i gilt nur innerhalb der Schleife
aber bin ich nicht bei :RenameDatei noch in der Schleife?
oder muss ich im Ausführblock %i sagen?


ich hab den Code ma ausgeführt und rauskommt:

c:\ebics> call :RenameDatei PFAD_DER_DATEI
c:\ebics> set origDatei=i
c::\ebics>set Dateiname=i
c:\eics>REN i Si
also wir kein Wert für i angenommen.

Ich versteh es einafch nicht
bastla
bastla 06.01.2011 um 13:01:28 Uhr
Goto Top
Hallo hbspike und willkommen im Forum!

T-Mo hat ja im Unterprogramm auch nicht "%i", sondern "%1" verwendet ...
Um einen einfachen Dateinamen zu erhalten sollte es nicht nötig sein, Stringzerlegungen vorzunehmen:
for %%i in ("C:\Data\EDPTEXTClient\Export\TransportRD-Archiv\EPDEXPORT*.ZIP") do echo copy "%%i" "D:\X-Archivpfad\S%%~nxi"
Das "echo" dient dazu, den Kopierbefehl nur einmal anzuzeigen (und noch nicht auszuführen). Ein "ren" könntest Du nach dem selben Schema durchführen.

Erklärt wird "%%~nxi" (= Kombination aus "%%~ni" und "%%~xi") in der Hilfe ("for /?", ziemlich gegen Ende) bzw im Tutorial zur FOR-Schleife ...

Grüße
bastla
hbspike
hbspike 06.01.2011 um 13:08:05 Uhr
Goto Top
Zitat von @bastla:
Hallo hbspike und willkommen im Forum!

T-Mo hat ja im Unterprogramm auch nicht "%i", sondern "%1" verwendet ...
Um einen einfachen Dateinamen zu erhalten sollte es nicht nötig sein, Stringzerlegungen vorzunehmen:
for %%i in ("C:\Data\EDPTEXTClient\Export\TransportRD-Archiv\EPDEXPORT*.ZIP") do echo
> copy "%%i" "D:\X-Archivpfad\S%%~nxi"
> 
Das "echo" dient dazu, den Kopierbefehl nur einmal anzuzeigen (und noch nicht auszuführen). Ein
"ren" könntest Du nach dem selben Schema durchführen.

Erklärt wird "%%~nxi" (= Kombination aus "%%~ni" und "%%~xi") in der Hilfe ("for/?", ziemlich gegen Ende) bzw im Tutorial zur FOR-Schleife
...

Grüße
bastla

Genial. Genau so funktioniert es.
Jetzt stellt sich natürlich die Frage warum?

for %%i in ("C:\Data\EDPTEXTClient\Export\TransportRD-Archiv\EPDEXPORT*.ZIP") do REN "%%i" "S%%~nxi"

was macht das %%~nxi

Bearbeitet:
Lol im Zitat taucht mehr text auf als im eigentlichen Post und da ist ja auch schon die Erklärugn drinen.
Wie kann denn das sein?
bastla
bastla 06.01.2011 um 13:11:16 Uhr
Goto Top
Hallo hbspike!
Lol im Zitat taucht mehr text auf als im eigentlichen Post und da ist ja auch schon die Erklärugn drinen.
Wie kann denn das sein?
In diesem Forum wird mit der Möglichkeit des Editierens von Kommentaren ziemlich entspannt umgegangen (daher gibt's öfter mal "work in progress") ... face-wink

Grüße
bastla
ruedi
ruedi 03.12.2022 um 22:42:44 Uhr
Goto Top
Der Beitrag ist zwar schon etwas älter, aber ich hätte da noch etwas.

Deine Frage war ja wie folgt:
"Ich habe einen Ordner X und einen Ordner X-Archiv.
Ich will nun alle Dateien aus Ordner X nach X-Archiv kopieren + an den Anfang ein S setzen."

Probiere es mal mit dem Befehl:
Wenn du die Ordner "c:\X" und "c:\X-Archiv" hast würde ich wie folgt vorgehen.

c:
cd c:\X
copy *.* "c:\X-Archiv"
cd "c:\X-Archiv"
forfiles /c "cmd /c ren @File S@file"

Das ist, denke ich noch etwas einfacher.

LG