Batch Umbenennung einer Datei abhängig vom Verzeichnis

BenoitM

Cadet 3rd Year
Registriert
März 2012
Beiträge
44
Hallo, bin auf der Suche nach einer commandline, die es mir erlaubt eine Datei

"C:\path\folder1\wrongName.txt"

in

"C:\path\folder1\folder1_01.txt"

umzubennen.

Explizit geht es mir hier nur um die printf-Benennung, also um das Segment, das den file-Namen dem des Verzeichnisses anpasst.

Mein Ansatz hierzu bezieht sich leider nur auf den serialize Teil _01 und sieht so aus:

%gesuchterParameter%_%02d.txt

:confused_alt:
 
Ich habe mal vor einiger Zeit auch ein ähnliches Problemm gehabt und habe es auf die schnelle es so gelöst.

vielleicht hilft es dir

Code:
@echo off
SET z_ver=Unbekannt
SET z_a=00001

for /F "usebackq delims=" %%A in (`dir *.txt /S/B/ON`) do (
    SET datei_pfad=%%~dpA
    SET datei_name=%%~nxA
    SET datei_code=%%~xA
    
    for /F "usebackq delims=\ tokens=5-6" %%C in ('%%~A') do (
        SET neue_datei=%%~C
        call :name_zahl
    )
)
goto :eof

    :name_zahl
        if %z_ver% NEQ "%neue_datei%" SET z_a=1
        if %z_a% GTR 0   if %z_a% LSS 10    move "%datei_pfad%%datei_name%" "%datei_pfad%%neue_datei%_000%z_a%%datei_code%" && echo %datei_pfad%%neue_datei%_000%z_a%%datei_code%
        if %z_a% GTR 9   if %z_a% LSS 100   move "%datei_pfad%%datei_name%" "%datei_pfad%%neue_datei%_00%z_a%%datei_code%"  && echo %datei_pfad%%neue_datei%_00%z_a%%datei_code%
        if %z_a% GTR 99  if %z_a% LSS 1000  move "%datei_pfad%%datei_name%" "%datei_pfad%%neue_datei%_0%z_a%%datei_code%"   && echo %datei_pfad%%neue_datei%_0%z_a%%datei_code%
        if %z_a% GTR 999 if %z_a% LSS 10000 move "%datei_pfad%%datei_name%" "%datei_pfad%%neue_datei%_%z_a%%datei_code%"    && echo %datei_pfad%%neue_datei%_%z_a%%datei_code%
            
        SET z_ver="%neue_datei%"
        SET /A z_a=%z_a%+1
    goto :eof

Der Verzeichniss wird durch den delim und dem token bestimmt, damals habe ich es auf die schnelle es per Hand eingegeben, aber man könnte vielleicht noch eine schleife schreiben welche die anzahl der \ zählt, dann könnte es voll automatisch laufen.

MfG JackRipper
 
Wenn ich das richtig sehe, brauchst du nur den Namen des Stammordners!?

Den bekommst du in Powershell, in dem du ein Dateiobjekt nach
Code:
 .directory.name
"befragst".
 
Verzeichnisname bekommst du per
Code:
dir /A:D
raus
 
Danke für die Vorschläge, leider kann ich sie hier nicht verwenden.

Es geht in diesem Fall um den output Namen eines cmd basierenden split Programms.
Der Standardwert für die Benennung der gesplitteten Dateien lautet hier

Code:
pg_%02d.txt

und wirft aus:

pg_01.txt
pg_02.txt
pg_03.txt
usw.


Wobei hier der Wert pg statisch ist.
Dieser soll jedoch dem Wert der Quelldatei angepasst werden.
Da der Name der Quelldatei und des Verzeichnisses gleich sind, dachte ich es ließe sich mit einer commandline nach Art
Weiß natürlich nicht, ob die Syntax mit "%xyz%" richtig ist, oder ob sie "%X", ":a" o.ä. lautet. ->%!!???!!%_%02d.txt

ein output nach folgendem Schema erstellen.



InputFile "folder01.txt"
befindet sich im Verzeichnis
"C:\path\folder01\folder01.txt" = C:\path\folder01\folder01.txt


OutputFile
"folder01_01.txt" soll in das Verzeichnis
"C:\path\folder01" erstellt werden = C:\path\folder01\folder01_01.txt




Sollte eigentlich möglich sein oder?
 
Zuletzt bearbeitet: (Formatierung)
Zurück
Oben