2014-06-12 1 views
0

이것은 바탕 화면에있는 배치 파일 인 Windows 7 물방울에 관한 것입니다. 폴더를 드래그하여 상위 폴더를 찾아야합니다.Windows 일괄 처리 : 경로의 마지막 폴더에서 다음 폴더를 찾는 방법은 무엇입니까?

드래그 : C : \ abc \ def \ ghi \ jkl < - jkl이 폴더입니다! "GHI" 하지 찾고 "C : \ ABC \ 데프 \ GHI"

드래그 : C : \ ABC \ 데프 \ 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 

답변

0

두 단계 : 첫 번째 것은 당신과 같습니다. 둘째 : 마지막에 \를 제거하고 다시 같은 일을 :

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

귀하의 코드가 안정적으로 당신에게 가장 오른쪽 폴더의 이름을 제공하지 않습니다. 폴더 이름에 공백이 있으면 실패합니다.

올바른 폴더와 해당 폴더의 부모를 올바르게 제공하는 코드입니다.

@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 
+0

평소와 같이 부드럽습니다. (btw. 'x'를 내 대답에 복사합니다.) – Stephan

관련 문제