我在批处理文件中有以下For循环:
for /R c:\test\src %%i IN (*.*) DO (
MOVE %%i C:\test\destination
ECHO %%i
exit
)
ECHO的结果输出整个文件路径Ex: C:\ Foldername \ Filename 我需要ECHO只输出文件名。是否有一个特定的命令可以给我文件名? 谢谢!
答案 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