Ich habe die folgende For-Schleife in einer Batchdatei:
for /R c:\test\src %%i IN (*.*) DO (
MOVE %%i C:\test\destination
ECHO %%i
exit
)
Das Ergebnis des ECHO gibt den gesamten Dateipfad Ex: C:\Ordnername\Dateiname .__ aus. Ich muss nur das Filename ausgeben. Vielen Dank !
Wenn Befehlserweiterungen aktiviert sind (Windows XP und ungefähr), können Sie die Syntax% ~ nF verwenden (wobei F die Variable ist und ~ n die Anfrage nach ihrem Namen ist), um nur den Dateinamen abzurufen.
FOR /R C:\Directory %F in (*.*) do echo %~nF
sollte nur die Dateinamen wiedergeben.
oder Nur% ~ F gibt den vollständigen Pfad und den vollständigen Dateinamen an.
Zum Beispiel, wenn Sie alle * .ax-Dateien im aktuellen Verzeichnis registrieren möchten ....
FOR /R C:. %F in (*.ax) do regsvr32 "%~F"
Das funktioniert in Win7 (64bit) ganz gut :-)
Ich bin etwas spät dran, aber ich habe das benutzt:
dir /B *.* > dir_file.txt
dann können Sie eine einfache FOR-Schleife erstellen, um den Dateinamen zu extrahieren und zu verwenden. z.B:
for /f "tokens=* delims= " %%a in (dir_file.txt) do (
gawk -f awk_script_file.awk %%a
)
oder speichern Sie sie zur späteren Verwendung in Vars (! N1 !,! N2! ..! Nn!). z.B:
set /a N=0
for /f "tokens=* delims= " %%a in (dir_file.txt) do (
set /a N+=1
set v[!N!]=%%a
)
Wenn Sie sowohl den Dateinamen (nur) als auch die Erweiterung beibehalten möchten, können Sie %~nxF