2016-03-21 6 views
1

Ich versuche, einige Dateinamen rekursiv nach ihrem Verzeichnisnamen zu ändern, aber ich bin fehlgeschlagen. Hier ist, was ich bisher getan haben:Ändern des Dateinamens mit seinem Verzeichnisnamen in einer Batch-Datei

for /r %1 %%Z in (*.c) do (
    echo ==== 
    rem Change to the directory of .c file 
    echo cd /d "%%~dpZ" 
    cd /d "%%~dpZ" 
    rem Change the file's name with its directory name with .c extension   
    ren %%~nxZ %cd%.c 
) 

Und hier ist die Verzeichnisstruktur:

SubDir 
    renamer.bat 
    sub1 
     file1.c 
    sub2 
     file2.c 
    so on 
     so forth 

Alle anderen Beiträgen sagen, dass %cd% mit gibt den Namen des aktuellen Verzeichnisses, jedoch gibt es so etwas wie das : c:\users\myusername\desktop\SubDir, bedeutet, dass der Verzeichnisname der Stapeldatei zurückgegeben wird. wie Sie können jedoch sehen, verwende ich cd Befehl in der Batch-Datei, so dass ich möchte es kehrt nursub1, sub2, etc ... So kann ich der Lage, ihr Verzeichnis der die Dateinamen in Namen zu ändern:

ren file1.c sub1.c 

Vielen Dank im Voraus.

EDIT: Antwort

setlocal EnableDelayedExpansion 
for /r %1 %%Z in (*.c) do (
    echo ==== 
    rem Change to the directory of .c file 
    echo cd /d "%%~dpZ" 
    cd /d "%%~dpZ" 
    rem Change the file's name with its directory name with .c extension 
    FOR /f "delims=" %%a IN ("%%~dpZ\.") DO (ren %%~nxZ %%~nxa.c) 
) 
+0

Bitte geben keine Lösung durch die Frage der Bearbeitung: Sie sollten diese nutzen , posten Sie es als Antwort, denn das ist es, was es ist ... – aschipfl

Antwort

2
FOR /f "delims=" %%a IN ("%%~dpZ\.") DO ECHO(ren %%~nxZ %%~nxa-%%~nxZ 

zu echo der neue Name ....

0

Sie verzögerten Expansion in diesem Fall verwendet werden soll.

setlocal EnableDelayedExpansion 
for /r %1 %%Z in (*.c) do (
    echo ==== 
    rem Change to the directory of .c file 
    echo cd /d "%%~dpZ" 
    cd /d "%%~dpZ" 
    rem Change the file's name with its directory name with .c extension 
    for /f "delims=" %%A in ("!CD!") do ren "%%~nxZ" "%%~nxA.c" 
) 

Weitere Informationen zu den verzögerten Expansion finden this

+0

Es gilt immer noch falsche Befehl. 'ren file1.cc:\bla bla \ sub1.c' Ich brauche' ren file1.c sub1.c' – WhoCares

+0

@WhoCares bearbeitet, dies sollte funktionieren –

+0

'Das System kann die Datei nicht finden C: \ Users \ myusername \ Desktop \ SubDir \ sub1.' sagt. arbeite immer noch nicht. – WhoCares

Verwandte Themen