it-swarm.com.de

Liefert den Dateinamen im Stapel für Schleife

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 !

39
Murtaza Mandvi

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.

74
AKX

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

4
Chris

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
)
3
Guy Soffer

Wenn Sie sowohl den Dateinamen (nur) als auch die Erweiterung beibehalten möchten, können Sie %~nxF

0
Gophern Kwok