지정된 폴더 / 디렉터리 (하위 폴더 / 하위 디렉터리 포함) 내에서 확장명이 * .txt 인 각 파일의 디렉터리 이름을 가져와야합니다 .
여기에서 해결책을 시도했습니다 : 전체 경로의 상위 폴더
그러나 set "myPath=%%~Pa"
아래 코드에서는 아무 작업도 수행하지 않는 것 같습니다.
@echo off
cd /d "F:\Game\"
for /r %%f in (*.txt) do (
echo file: %%f
set "myPath=%%~Pa"
echo myPath: %myPath%
for %%a in ("%myPath:~0,-1%") do (
set "myParent=%%~Na"
echo %myParent%
)
)
pause.
이러한 파일의 경우 :
F:\Game\file1.txt
F:\Game\first_subfolder\file2.txt
F:\Game\first_subfolder\hellothere\file3.txt
F:\Game\first_subfolder\hellothere\lala\file4.txt
나는 그들 각각에 대한 디렉토리의 이름을 기대합니다.
Game
first_subfolder
hellothere
lala
디렉토리 트리의 각 텍스트 파일에 대한 디렉토리 이름을 얻는 방법은 무엇입니까?
먼저 명령 프롬프트 창을 열고 set /?
첫 페이지의 맨 위에서 마지막 페이지의 맨 아래까지 출력 도움말을 실행 하고 읽는 것이 좋습니다 . 특히 지연된 환경 변수 확장에 대한 섹션이 있습니다. 참조 : 변수가 예상대로 작동하지 않습니다 .
그러나 지연된 확장 을 사용하지 않고 디렉토리 트리에서 각 * .txt 파일에 대한 디렉토리 이름을 가져올 수 있습니다.
@echo off
for /R %%I in (*.txt) do for %%J in ("%%~dpI.") do (
echo Text file: %%I
echo Directory: %%~nxJ
)
참고 : %%~nxJ
이 배치 파일이 드라이브의 루트에서 실행되고이 드라이브의 루트에 * .txt 파일이있는 경우은 빈 문자열입니다.
여기서 트릭 %%~dpI
은 백 슬래시로 끝나는 현재 텍스트 파일의 전체 경로로 확장됩니다. .
폴더를 참조하기 위해이 경로 문자열에 연결됩니다. 그런 다음 %%~nxJ
경로가없는 폴더 이름으로 확장됩니다. Microsoft 설명서 페이지 Naming Files, Paths 및 Namespaces를 참조하십시오 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다