我在批处理文件中有如下的For循环:
for /R c:\test\src %%i IN (*.*) DO (
MOVE %%i C:\test\destination
ECHO %%i
exit
)
ECHO输出的结果是整个文件路径,例如:C:\Foldername\Filename。 我需要仅输出Filename。有没有特定的命令可以给我文件名? 谢谢!
我在批处理文件中有如下的For循环:
for /R c:\test\src %%i IN (*.*) DO (
MOVE %%i C:\test\destination
ECHO %%i
exit
)
ECHO输出的结果是整个文件路径,例如:C:\Foldername\Filename。 我需要仅输出Filename。有没有特定的命令可以给我文件名? 谢谢!
当启用命令扩展(Windows XP及更高版本)时,您可以使用语法%~nF(其中F是变量,~n是请求其名称),仅获取文件名。
FOR /R C:\Directory %F in (*.*) do echo %~nF
应该只回显文件名。
for %f in (*.*)
(或者 for %f in (c:\directory\*.*)
)应该可以工作。 - AKXecho %%~nF
。 - Richard Whitehead@AKX的答案适用于命令行,但在批处理文件中无效。在批处理文件中,需要额外添加%
,像这样:
@echo off
for /R TutorialSteps %%F in (*.py) do echo %%~nF
FOR /R C:. %F in (*.ax) do regsvr32 "%~F"
这在Win7(64位)上运行得非常好 :-)
我有点晚了,但我使用了这个:
dir /B *.* > dir_file.txt
然后您可以编写一个简单的FOR循环来提取文件名并使用它们。例如:
for /f "tokens=* delims= " %%a in (dir_file.txt) do (
gawk -f awk_script_file.awk %%a
)
或将它们存储到变量中(!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
)
%~nxF
:
FOR /R C:\Directory %F in (*.*) do echo %~nxF