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