Windows批处理:如何查找路径中最后一个文件夹的下一个?

时间:2014-06-12 14:59:26

标签: batch-file windows-7

关于Windows 7 Droplet,桌面上的批处理文件。 我在其上拖动文件夹,需要找到父文件夹。

拖动:C:\ abc \ def \ ghi \ jkl< - jkl是一个文件夹! 寻找" ghi" 不是" C:\ abc \ def \ ghi"

拖动:C:\ abc \ def \ ghi \ jkl \ mno \ pqr< - pqr是一个文件夹! 寻找" mno"

此代码提供最后一个文件夹。 但我需要倒数第二个。

仅限父文件夹名称,而不是该父文件夹的完整路径。

感谢。

@echo off
setlocal enableDelayedExpansion

echo Command line:
echo !cmdcmdline!
echo.
echo Whole path: "%~1"

set MYDIR=%~1
set MYDIR1=%MYDIR:~0%
for %%f in (%MYDIR1%) do set myfolder=%%~nxf
echo Most right folder: %myfolder%

pause
exit

2 个答案:

答案 0 :(得分:2)

您的代码无法可靠地为您提供最右侧文件夹的名称。如果文件夹名称包含空格,则会失败。

这是正确提供最右边文件夹的代码,以及该文件夹的父文件。

@echo off
setlocal enableDelayedExpansion

echo Command line:
echo !cmdcmdline!
echo.
echo Whole path: "%~1"

:: Here is the correct code to get the right most node (folder in your case)
echo Most right folder: "%~nx1"

:: Here is the code to get the parent of the right most node
for %%F in ("%~1\..") do echo Parent folder: "%%~nxF"

pause
exit

答案 1 :(得分:0)

两个步骤:首先等于你的。第二步:删除最后的\并再次执行相同的操作:

for %%i in ("%~1") do set "parent=%%~pi"
for %%i in ("%parent:~0,-1%") do echo %%~nxi