나는 \.
으로 끝나는 문자열을 가지고 있습니다. \.
특수 문자 '.'로 문자열 분할.
예 : 내 문자열 전에 내가 원하는 건 문자열입니다 : D:\Work\WelCome\.
출력 문자열이어야한다 : 당신은 매우 일반적으로이 질문을 찾을 경우 D:\Work\WelCome
는 서하십시오. 특수 문자로 문자열을 나누는 그물을 검색했지만 기대했던 결과를 얻지 못했습니다.
배치 스크립팅에는 익숙하지 않지만 전문가에게는 충분하지 않습니다.
나는 \.
으로 끝나는 문자열을 가지고 있습니다. \.
특수 문자 '.'로 문자열 분할.
예 : 내 문자열 전에 내가 원하는 건 문자열입니다 : D:\Work\WelCome\.
출력 문자열이어야한다 : 당신은 매우 일반적으로이 질문을 찾을 경우 D:\Work\WelCome
는 서하십시오. 특수 문자로 문자열을 나누는 그물을 검색했지만 기대했던 결과를 얻지 못했습니다.
배치 스크립팅에는 익숙하지 않지만 전문가에게는 충분하지 않습니다.
은 파일/폴더 경로이기 때문에, (당신은 단지 왼쪽 부분을 필요로하는 경우) 그 이론적 경우
for %%a in ("D:\Work\WelCome\.") do echo %%~fa
을 문자열을 분할하는 것보다 OS가 당신을 위해 그것을 해결하도록하는 것이 더 쉽습니다 이 추가적으로 데이터 (그러나 더 이상 백 슬래시)를 포함 할 수 끝나는 점은, 이것은
rem The string with more data
set "myString=D:\Work\WelCome\.blah"
for %%a in ("%myString%[email protected]\..") do echo %%~fa
로 변환 할 수는 for
@
은이 추가적으로 정보 (사건을 종료 이전 점은 여전히 작동 할 수 방법은) 항상 있다는 것을 보장이 추가적으로 명령 wi 파일 참조를 볼 수 있으며 부모 폴더에 대한 참조 만 가져와야합니다.
그러나이 방법은 파일/폴더 참조를 지우는 방법 일 뿐이며 정확한 문자로 문자열을 분할하는 방법이 아닙니다. 문자열을 분할 할 수있는 쉬운 솔루션을
이 명령 연결 및 주석의 시작 (rem
)로 분할 문자열을 대체
@echo off
setlocal enableextensions disabledelayedexpansion
rem The string
set "myString=D:\Work\WelCome\.test"
rem Do the split
set "myString=%myString:\.="&rem %"
set "myString=%myString%"
rem Show data
echo %myString%
(또는 더 정확하게하기 위해 접미사를 제거). 변수가 자신에게 할당 그래서
set "myString=D:\Work\WelCome\.test"
가, 다음 줄에,
set "myString=D:\Work\WelCome"& rem test"
에이 방법을 변환하고, 불필요한 부분은합니다 (rem
으로 숨겨져) 제거됩니다.
이 코드를 테스트 한 작동합니다
C:\> split.bat C:\1\2\3\.
C:\1\2\3
C:\> split.bat C:\1\2\3\.4\5\
C:\1\2\3
C:\> split.bat C:\1\2\3\.4\5\.6\7\8
C:\1\2\3
C:\> split.bat C:\1\2.\ .3.\...4\.5
C:\1\2.\ .3.
C:\> split.bat C:\.1\2\3\4\5\6\7\8\9\
C:
당신이 찾고 있던 무슨 : 여기
setlocal enabledelayedexpansion
set p=D:\Work\WelCome\.
set v=
:: v is the output
for %%a in (%p:.= %) do (
set "v=!v!.%%~a"
set q=%%~a
if "!q:~-1!"=="\" goto :end
)
:end
set v=%v:~1%
set v=%V:~0,-1%
echo %v%
내가 사용하는 경우입니다. 변수로 더 많은 것을하고 싶다면
echo
그냥 그 라인을 따라
%v%
을 참조하십시오.
@ECHO OFF
SETLOCAL
SET "string=D:\Work\WelCome\."
:: Classic solution if the string is in an environment variable
ECHO %string:~0,-2%
:: solution if the string is in a metavariable
FOR %%z IN ("%string%") DO ECHO %%z becomes %%~dpnz
GOTO :EOF
이는 자명하다.
'D : \ Work \ WelCome \ .blah'와 같이 작동하지 않는 경우에는 작동하지 않습니다. 내가 완전히 당신과 동의하는 동안, OP는 구체적으로 말해서, 내가 생각한 경로가 – Monacraft
@Monacraft 경로를 따라 가능한 문자를 암시한다고 생각했다. 물론 그렇다.이제는 이것이 문자열을 "분할하는"방법이 아니라는 대답에 설명되어 있습니다. 고맙습니다. –
@MCND에게 감사드립니다. 그것은 나를 위해 일했다 ... –