如何在Windows批处理脚本中循环遍历for循环中的标记?
我正在编写一个脚本,允许用户搜索文件并打印出该文件的父目录。到目前为止,我可以从文件名中获取完整路径,但我只需要父目录。工作正常,但想要一种更有效的方式迭代令牌。
以下是我所拥有的内容。文件变量是要搜索的文件,而path变量是文件的完整路径。
fOR /F "tokens=1-25 delims=\" %%i IN ("!thePath!") DO (
if %%j equ %file% set theParent= %%i
if %%k equ %file% set theParent= %%j
if %%l equ %file% set theParent= %%k
if %%m equ %file% set theParent= %%l
if %%n equ %file% set theParent= %%m
if %%o equ %file% set theParent= %%n
if %%p equ %file% set theParent= %%o
if %%q equ %file% set theParent= %%p
if %%r equ %file% set theParent= %%q
if %%s equ %file% set theParent= %%r
if %%t equ %file% set theParent= %%s
if %%u equ %file% set theParent= %%t
if %%v equ %file% set theParent= %%u
if %%w equ %file% set theParent= %%v
if %%x equ %file% set theParent= %%w
if %%y equ %file% set theParent= %%x
if %%z equ %file% set theParent= %%y
)
echo The parent directory is: %theParent%
答案 0 :(得分:4)
您的方法无法可靠地运行,因为文件可能与其父文件夹之一共享同一名称。
无需迭代FOR / F令牌。您可以使用简单的FOR: - )
直接获取父文件夹for %%F in ("!thePath!\..") do set "theParent=%%~nxF"
echo The parent directory is: !theParent!
注意 - 如果文件位于根目录中,则theParent
将是未定义的(空)。