Windows 批量获取循环的文件名
我在批处理文件中有以下For循环:Windows 批量获取循环的文件名,windows,batch-file,cmd,Windows,Batch File,Cmd,我在批处理文件中有以下For循环: for /R c:\test\src %%i IN (*.*) DO ( MOVE %%i C:\test\destination ECHO %%i exit ) ECHO的结果输出整个文件路径,例如:C:\Foldername\Filename 我只需要回显文件名。是否有特定的命令可以给我文件名? 谢谢 当启用命令扩展名时(大致为Windows XP和更新版本),您可以使用语法%%nF(其中F是变量,~n是对其名称的请求)仅获取文件名 FOR /R C:\
for /R c:\test\src %%i IN (*.*) DO (
MOVE %%i C:\test\destination
ECHO %%i
exit
)
ECHO的结果输出整个文件路径,例如:C:\Foldername\Filename
我只需要回显文件名。是否有特定的命令可以给我文件名?
谢谢 当启用命令扩展名时(大致为Windows XP和更新版本),您可以使用语法%%nF(其中F是变量,~n是对其名称的请求)仅获取文件名
FOR /R C:\Directory %F in (*.*) do echo %~nF
应仅回显文件名。或仅%%F将为您提供完整路径和完整文件名 例如,如果要在当前目录中注册所有*.ax文件
FOR /R C:. %F in (*.ax) do regsvr32 "%~F"
这在Win7(64位)中运行得很好:-)我有点晚了,但我使用了以下方法:
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
)
或者将它们存储到变量(!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
)
如果要保留文件名(仅限)和扩展名,可以使用
%~nxF
:
FOR /R C:\Directory %F in (*.*) do echo %~nxF
对于/R C:\Directory%F in(*.*)do echo%~nxF@AKX的答案在命令行中有效,但不在批处理文件中。在批处理文件中,您需要一个额外的
%
,如下所示:
@echo off
for /R TutorialSteps %%F in (*.py) do echo %%~nF
顺便说一句,如果您使用的是本世纪制造的windows版本,那么您使用的不是DOS,而是windows命令提示符。如果您还想查看文件扩展名,请在末尾添加%%xF。或者%%nxf以获取带扩展名的文件名。@Dave:
表示(*.*)中的%f
(或者表示(c:\directory\*.*)中的%f
)应该可以。这个cmd在win7 64位上对我不起作用。“~nF此时出乎意料。”如果此命令位于批处理文件中,请不要忘记使用双百分比:echo%%~nF
gawk在任何地方都不可用