IT TIP

변수에서 일괄 추출 경로 및 파일 이름

itqueen 2020. 10. 27. 23:56
반응형

변수에서 일괄 추출 경로 및 파일 이름


변수에서 경로와 파일 이름을 어떻게 추출 할 수 있습니까?

Setlocal EnableDelayedExpansion
set file=C:\Users\l72rugschiri\Desktop\fs.cfg

함수 나 GOTO를 사용하지 않고하고 싶습니다. 가능할까요?


@ECHO OFF
SETLOCAL
set file=C:\Users\l72rugschiri\Desktop\fs.cfg
FOR %%i IN ("%file%") DO (
ECHO filedrive=%%~di
ECHO filepath=%%~pi
ECHO filename=%%~ni
ECHO fileextension=%%~xi
)

아니 정말 당신이 어떤 "기능"는 무엇을 의미하는

분명히 ECHOing보다는 변수를 설정 ECHO하도록 SET변경하십시오 .

전체 목록 for 설명서참조하십시오 .


ceztko의 테스트 케이스 (참고 용)

@ECHO OFF
SETLOCAL
set file="C:\Users\ l72rugschiri\Desktop\fs.cfg"
FOR /F "delims=" %%i IN ("%file%") DO (
ECHO filedrive=%%~di
ECHO filepath=%%~pi
ECHO filename=%%~ni
ECHO fileextension=%%~xi
)

코멘트 : 코멘트를 참조하십시오.


(1) BAT 자체 %1의 매개 변수 또는 (2) CALL의 매개 변수 %1또는 (3) 로컬 FOR 변수 에서만 경로와 파일 이름을 추출 할 수 있습니다 %%a.


에서 HELP CALL또는 HELP FOR더 자세한 정보를 찾을 수 있습니다.

% ~ 1-주변 따옴표 ( ")를 제거
하여 % 1을 확장합니다. % ~ f1-% 1을 완전한 경로 이름으로
확장합니다. % ~ d1-% 1을 드라이브 문자로만
확장 합니다. % ~ p1-% 1을 경로로만 확장합니다.
% ~ n1-% 1을 파일 이름으로 만
확장 합니다. % ~ x1-% 1을 파일 확장명으로 만 확장합니다.
% ~ s1-확장 된 경로에 짧은 이름 만 포함됩니다.
% ~ a1-% 1을 파일 속성으로
확장 합니다. % ~ t1-확장합니다. 1
~ 파일 % ~ z1 의 날짜 / 시간 -% 1을 파일 크기로 확장


그리고 다음을 시도하십시오.

구문 분석 할 문자열을 매개 변수로 CALL에 전달하십시오.

call :setfile ..\Desktop\fs.cfg
echo %file% = %filepath% + %filename%
goto :eof

:setfile
set file=%~f1
set filepath=%~dp1
set filename=%~nx1
goto :eof

또는 동등한 경우 파일 이름을 로컬 FOR 변수로 전달하십시오.

for %%a in (..\Desktop\fs.cfg) do (
    set file=%%~fa
    set filepath=%%~dpa
    set filename=%%~nxa
)    
echo %file% = %filepath% + %filename%

이 모든 것이 저에게 효과적입니다.

@Echo Off
Echo Directory = %~dp0
Echo Object Name With Quotations=%0
Echo Object Name Without Quotes=%~0
Echo Bat File Drive = %~d0
Echo Full File Name = %~n0%~x0
Echo File Name Without Extension = %~n0
Echo File Extension = %~x0
Pause>Nul

산출:

Directory = D:\Users\Thejordster135\Desktop\Code\BAT\

Object Name With Quotations="D:\Users\Thejordster135\Desktop\Code\BAT\Path_V2.bat"

Object Name Without Quotes=D:\Users\Thejordster135\Desktop\Code\BAT\Path_V2.bat

Bat File Drive = D:

Full File Name = Path.bat

File Name Without Extension = Path

File Extension = .bat

실제 실행중인 배치 파일에서 정보를 얻으려면 다음을 시도하십시오.

@echo off
set myNameFull=%0
echo myNameFull     %myNameFull%
set myNameShort=%~n0
echo myNameShort    %myNameShort%
set myNameLong=%~nx0
echo myNameLong     %myNameLong%
set myPath=%~dp0
echo myPath         %myPath%
set myLogfileWpath=%myPath%%myNameShort%.log
echo myLogfileWpath %myLogfileWpath%

더 많은 샘플? C :> HELP CALL

%0 = parameter 0 = batchfile %1 = parameter 1 - 1st par. passed to batchfile... so you can try that stuff (e.g. "~dp") between 1st (e.g. "%") and last (e.g. "1") also for parameters

참고URL : https://stackoverflow.com/questions/15567809/batch-extract-path-and-filename-from-a-variable

반응형