변수에서 일괄 추출 경로 및 파일 이름
변수에서 경로와 파일 이름을 어떻게 추출 할 수 있습니까?
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
'IT TIP' 카테고리의 다른 글
지도와 동등한 NSArray (0) | 2020.10.27 |
---|---|
MySQL 열거 형 대 집합 (0) | 2020.10.27 |
뷰를 사용하여 PHP에서 현재 Laravel 버전의 버전을 어떻게 에코 할 수 있습니까? (0) | 2020.10.27 |
DATETIME 형식 값에 1 일 추가 (0) | 2020.10.27 |
iOS에서 기기의 방향을 어떻게 감지합니까? (0) | 2020.10.27 |