批量循环获取文件名

问题描述 投票:39回答:4

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

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

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

windows batch-file cmd
4个回答
75
投票

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

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

应该只回显文件名。


4
投票

或只是%~F将为您提供完整的路径和完整的文件名。

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

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

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


3
投票

我有点晚了,但我用过这个:

dir /B *.* > dir_file.txt

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

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

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

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

0
投票

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

FOR /R C:\Directory %F in (*.*) do echo %~nxF
© www.soinside.com 2019 - 2024. All rights reserved.