批量循环获取文件名

时间:2009-07-08 20:42:01

标签: windows batch-file cmd

我在批处理文件中有以下For循环:

for /R c:\test\src %%i IN (*.*) DO (
MOVE %%i C:\test\destination
ECHO %%i
exit
)

ECHO的结果输出整个文件路径Ex: C:\ Foldername \ Filename 我需要ECHO只输出文件名。是否有一个特定的命令可以给我文件名? 谢谢!

5 个答案:

答案 0 :(得分:75)

启用命令扩展时(Windows XP及更新版本),您可以使用语法%~nF(其中F是变量,~n是其名称请求)来获取文件名。

FOR /R C:\Directory %F in (*.*) do echo %~nF

应仅回显文件名。

答案 1 :(得分:4)

或只是%~F会给你完整的路径和完整的文件名。

例如,如果要在当前目录中注册所有* .ax文件....

FOR /R C:. %F in (*.ax) do regsvr32 "%~F"

这在Win7(64位)中非常好用: - )

答案 2 :(得分:3)

我有点迟了但我用过这个:

dir /B *.* > dir_file.txt

然后你可以创建一个简单的FOR循环来提取文件名并使用它们。 e.g:

for /f "tokens=* delims= " %%a in (dir_file.txt) do (
gawk -f awk_script_file.awk %%a
)

或将它们存储到Vars(!N1!,!N2!..!Nn!)供以后使用。 e.g:

set /a N=0
for /f "tokens=* delims= " %%a in (dir_file.txt) do (
set /a N+=1
set v[!N!]=%%a
)

答案 3 :(得分:2)

@AKX的答案适用于命令行,但不适用于批处理文件。在批处理文件中,您需要一个额外的%,如下所示:

@echo off
for /R TutorialSteps %%F in (*.py) do echo %%~nF

答案 4 :(得分:0)

如果您想同时保留文件名(仅限)和扩展程序,可以使用%~nxF

FOR /R C:\Directory %F in (*.*) do echo %~nxF