Windows批处理for循环中的令牌

如何在Windows批处理脚本的for循环中遍历令牌

我正在写一个脚本,允许用户search一个文件,并打印出该文件的父目录。 到目前为止,我可以从文件名得到一个完整的path,但我只需要父目录。 工作正常,但希望通过令牌迭代更有效的方式。

这是我所拥有的一切。 文件variables是要search的文件,而Pathvariables是文件的完整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% 

您的方法无法可靠地工作,因为文件可能与其父文件夹之一共享相同的名称。

没有必要迭代FOR / F令牌。 您可以直接使用简单的FOR获取父文件夹:-)

 for %%F in ("!thePath!\..") do set "theParent=%%~nxF" echo The parent directory is: !theParent! 

注 – 如果文件位于根目录中,则该文件将是未定义的(空的)。