DOS 명령을 사용하여 현재 폴더 이름 (현재 디렉토리 경로가 아님)을 가져올 수 있습니까? 그렇다면 어떻게?
내가 얻은 가장 가까운 것은 이것이지만 그렇게하지 않습니다.
for /f "delims=\" %%a in ("%CD%") do set CURR=%%a
echo.DIR: %CURR%
참고 : 위의 시도는 문자열을 토큰 화하고 마지막 토큰 세트를 CURR 변수로 가져 오려고했습니다.
답변
내가 찾은 가장 짧은 방법 :
for %I in (.) do echo %~nxI
또는 .bat 스크립트 내에서 :
for %%I in (.) do echo %%~nxI
또는 변수의 값 가져 오기를 사용하여 .bat에 있습니다.
for %%I in (.) do set CurrDirName=%%~nxI
echo %CurrDirName%
설명 : http://www.robvanderwoude.com/ntfor.php
nx는 파일 이름과 확장자 만 의미합니다
답변
배치 파일의 현재 위치를 알고 싶다면 (Windows가 매우 오래된 버전이 아닌 경우) for /?
‘DOS 상자’창에 입력하십시오. 아래로 스크롤. 읽다.
이제 배치 파일 내 에서 다음 변수를 읽을 수 있음을 알 수 있습니다 .
%0 - as the name how this batchfile was called
%~d0 - as the drive letter where this batchfile is located ('\\' in case of share)
%~p0 - as path (without the drive letter) where this batchfile is located
%~n0 - as filename (without suffix) of this batchfile
%~x0 - as filename's suffix (without filename) of this batchfile
%~a0 - as this batchfile's file attributes
%~t0 - as this batchfile's date+time
%~z0 - as this batchfile's filesize
%~dpnx0 - as this batchfile's fully qualified path+filename
[... and then some more ...]
이것은 많은 경우에 효과적입니다. 배치 파일이이라고 가정하십시오 mytest.bat
. 다른 방법으로 호출 할 수 있습니다.
..\..\to\mytest.bat
…………………………. (상대 경로)d:\path\to\mytest.bat
……………………… (전체 경로)\\fileserver\sharename\mytest.bat
… (원격 공유 경로)
… 그리고 당신은 항상 변수에서 올바른 가치를 얻습니다.
답변
나는 개인적으로 Toms의 대답이 마음에 들었습니다. 이것은 나에게 힌트를 주었다 :
for /f "delims=\" %%a in ("%cd%") do echo topmost dir: %%~nxa
답변
Tom의 대답은 좋지만 마침표가있는 디렉토리 이름 (예 : wxwidgets-2.9.4)이 있으면 전체 이름 만 얻을 수 있습니다. 따라서 .4가 확장명으로 취급 되었기 때문에 대신 wxwidgets-2.9를 출력합니다 (예 : 디렉토리 이름 임에도 불구하고).
전체 출력 이름을 얻으려면 확장명을 끝에 추가해야합니다.
FOR %I IN (.) DO Echo %~nI%~xI
배치 파일 모드에서 :
FOR %%I IN (.) DO Echo %%~nI%%~xI
또는 배치 파일에서 변수를 대신 설정하십시오.
FOR %%I IN (.) DO SET CurrentD=%%~nI%%~xI
답변
다른 방법은 다음과 같습니다.
set "MyPath=%~dpnx0" & call set "MyPath=%%MyPath:\%~nx0=%%"
echo MyPath=%MyPath%
“.”와 함께 작동합니다. 경로명의 공백
무엇을합니까?
-
전체 파일 이름 (driveletter-path-filename-extension)을
MyPath
Var에 넣으십시오. -
MyPath
var 에서 파일 이름 및 확장자 제거
UNC 경로와도 작동합니다. 경로 끝에 백 슬래시가 필요한 경우. 예를 들어 두 번째 set 명령에서 \
after MyPath
를 제거하십시오 .
set "MyPath=%%MyPath:%~nx0=%%"
답변
현재 디렉토리를 변수로 가져올 수 있습니다. 짧막 한 농담:
set a=%cd%
확인
echo %a%
답변
그냥 간단
for %%d in ("%CD%") do echo %%~nxd
또는
set "sPath=."
for %%d in ("%sPath%") do set "sDirName=%%~nxd"
경로 끝의 백 슬래시를주의하십시오. 끝의 백 슬래시 일 필요는 없습니다.