【发布时间】:2016-06-02 08:22:24
【问题描述】:
列出我使用的目录this:
set folder=C:\temp
for /d %%a in ("%folder%\*") do (
echo %%~fa
)
分割文件路径我使用this:
for %%f in (%MYDIR1%) do set myfolder=%%~nxf
echo %myfolder%
现在我想把两者放在一起:
@echo off
set folder=C:\Windows
for /d %%A in ("%folder%\*") do (
for %%d in (%%~fA) do set lastfolder=%%~nxf
echo %lastfolder%
)
我在结果中得到的只是%~nxf。我尝试了一些东西,但没有得到正确的结果。我做错了什么?
在这些示例中我不明白的是%~fA 和%~nxf。不知道在哪里可以查到这样的东西。
编辑:
%~nxfto get file names with extensions
其中 F 是变量,~n 是对其名称的请求 | Source
%~fIExpands %I to a fully qualified path name.
现在我用新信息修改了我的代码:
@echo off
for /d %%A in ("%folder%\*") do (
for %%D in (%%~fA) do (
set lastfolder=%%~nxD
echo %lastfolder%
)
)
现在我得到了最后一个文件夹,但打印的次数与存在子文件夹的次数一样多。所以我只得到最后一个。如何迭代每个?
解决方案:
感谢 bgalea,这是我的解决方案:
@echo off
setlocal enabledelayedexpansion
set folder=C:\Windows
for /d %%A in ("%folder%\*") do (
for %%D in (%%~fA) do (
set lastfolder=%%~nxD
echo !lastfolder!
)
)
endlocal
【问题讨论】:
-
转储此批次并将其转换为 Windows 脚本...
-
你是说 Windows 脚本宿主?
标签: windows batch-file cmd directory