$ 1이라는 변수에 텍스트가 있습니다. 이제 $ 1에 특정 문자열이 포함되어 있는지 확인하고 싶습니다. 특정 문자열이 포함되어 있으면 메시지를 인쇄하고 싶습니다. 인쇄는 문제가 아니며, 문제는 수표 ... 어떻게 할 수 있습니까?배치 파일에서 부분 문자열의 문자열을 검사하십시오 (Windows)?
답변
내가 아는 한 cmd.exe에는 직접 질문에 대답하는 기본 제공 기능이 없습니다. 그러나 은 대체 작업을 지원합니다. 트릭은 $ 1에서 빈 문자열로 존재를 테스트하는 데 필요한 하위 문자열을 대체 한 다음 $ 1이 변경되었는지 확인합니다. 그런 다음 을 수행하면에 하위 문자열이 포함됩니다 (그렇지 않으면 바꾸기 작업이 처음부터 바뀌지 않을 것입니다). 아래 코드를 참조하십시오 :
set longString=the variable contating (or not containing) some text
@rem replace xxxxxx with the string you are looking for
set tempStr=%longString:xxxxxx=%
if "%longString%"=="%tempStr%" goto notFound
echo Substring found!
goto end
:notFound
echo Substring not found
:end
주 -이 유형의 검색은 대소 문자를 구분하지 않습니다. 또한 특수 문자에 문제가있을 수 있습니다. 검색/대체 및 평등 확인에 지연 확장을 사용하면 더욱 강력합니다. 하지만 검색 문자열은'='char을 포함 할 수 없으며 검색 문자열은'~'또는'*'로 시작할 수 없습니다. – dbenham
@dbenham : 절대적으로 공정한 발언이지만, 내 솔루션은 완벽하지 않습니다 (비록 cmd 구문이 그렇듯이). –
SET 검색 및 바꾸기는 대부분의 경우 작동하지만 대소 문자를 구분하거나 정규 표현식 검색을 지원하지 않습니다.
대/소문자 구분 검색이나 제한된 정규식 지원이 필요한 경우 FINDSTR을 사용할 수 있습니다.
특수 문자를 이스케이프하는 문제를 피하려면 검색 문자열이 변수에 있고 검색 및 대상이 지연된 확장을 통해 액세스되는 것이 가장 좋습니다.
ECHO 명령을 사용하여 $ 1을 FINDSTR 명령에 파이프 할 수 있습니다. $ 1이 정의되지 않은 경우에 ECHO(
을 사용하고 여분의 공백을 추가하지 않도록주의하십시오. ECHO !$1!
은 $ 1이 정의되지 않은 경우 ECHO is off.
(또는 on)을 반향 출력하는 반면, 정의되지 않은 경우 ECHO(!$1!
은 빈 행을 반향합니다.
FINDSTR은 검색 문자열을 찾으면 $ 1을 표시합니다. 출력을 nul로 리디렉션하지 않으려면 원하지 않습니다. FINDSTR은 검색 문자열이 발견되면 ERRORLEVEL을 0으로, 발견되지 않으면 ERRORLEVEL을 1로 설정합니다. 문자열이 있는지 확인하는 데 사용됩니다. &&
및 ||
은 일치 (ERRORLEVEL 0) 또는 일치하지 않음 (ERRORLEVEL 0이 아님)을 테스트하는 데 편리한 구문입니다.
일반 표현식 지원은 기본이지만 여전히 유용합니다.
FINDSTR /?를 참조하십시오. 더 많은 정보를 위해서.
이 정규식 예제는 문자열 시작 부분에 "BEGIN", 중간에 "MID", 끝 부분에 "END"를 $ 1 검색합니다. 검색은 기본적으로 대소 문자를 구분합니다.
set "search=^BEGIN.*MID.*END$"
setlocal enableDelayedExpansion
echo(!$1!|findstr /r /c:"!search!" >nul && (
echo FOUND
rem any commands can go here
) || (
echo NOT FOUND
rem any commands can go here
)
제 생각에 가장 쉬운 방법은 이것이다 :
set YourString=This is a test
If NOT "%YourString%"=="%YourString:test=%" (
echo Yes
) else (
echo No
)
Basiclly 후 문자열 ''당신이 문자열을 찾고 있습니다 그리고 당신이 만약 때문에 % 문자열이 아닌 뿅 사용하고 있습니다 : * %는 *을 문자열에서 제거하여 동일하지 않게합니다.
[Igor 's answer] (http://stackoverflow.com/a/8757658/1012053)와 마찬가지로이 테스트는 대소 문자를 무시합니다. 또한 지연된 확장을 사용하는 것이 더 안전합니다. 마지막으로, 부분 문자열에'='가 포함되어 있으면 사용할 수 없습니다. – dbenham
- 1. Windows 배치 스크립트는 HTML 파일에서 문자열을 검색하고
- 2. Objective-C에서 문자열의 부분 문자열을 저장
- 3. C#에서 문자열의 부분 문자열을 선택하십시오.
- 4. JavaScript에서 문자열의 부분 문자열을 가져올 수 없습니다.
- 5. 문자열의 각괄호 안에있는 부분 문자열을 얻는 방법
- 6. coredata에서 문자열의 부분 문자열을 쿼리하기위한 술어
- 7. 배치 파일에서 텍스트 파일에서 문자열의 발생을 찾는 방법은 무엇입니까?
- 8. SQL - 문자열의 선택 부분
- 9. 쉘 스크립트를 사용하여 주어진 문자열을 파일로 검사하십시오.
- 10. 부분 문자열의 영숫자 정규식
- 11. 배치 파일에서 두 문자열을 결합하여 결합 된 경로 문자열을 만듭니다.
- 12. 배치 파일에서 VS2010의 Windows 디버거를 연결 하시겠습니까?
- 13. Windows 배치 파일에서 텍스트 파일을 편집하려면 어떻게해야합니까?
- 14. 반복적으로 배치 파일에서 Windows 명령을 실행 하시겠습니까?
- 15. Windows CMD - 배치 파일에서 경로 변수 재설정?
- 16. Windows 배치 파일 '델이'나는 윈도우 7에 배치 파일에서 다음을 수행하려고
- 17. 다른 배치 파일에서 Windows 배치 파일을 호출하는 방법
- 18. 문자열의 부분 문자열 조합
- 19. 문자열의 부분 문자열 범위
- 20. 2 문자열의 부분 비교
- 21. Groovy : 부분 문자열의 색인?
- 22. 문자열의 여러 부분 문자열
- 23. 주어진 문자열의 가장 긴 반복 된 부분 문자열을 찾는 방법
- 24. Jquery의 If 조건에서 문자열의 부분 문자열을 일치시키는 방법은 무엇입니까?
- 25. Ruby : 배열의 다른 문자열의 부분 문자열 인 문자열을 제거합니다.
- 26. 문자열의 특정 부분 문자열 뒤에 문자열을 가져 오는 방법은 무엇입니까?
- 27. sed - 하위 문자열을 부분 문자열의 일부로 찾을 변수로 사용하는 방법?
- 28. 기존 문자열의 모든 부분 문자열을 확인하는 가장 빠른 방법
- 29. 자바에서 문자열의 부분 문자열을 여러 번 파싱하는 방법
- 30. 다른 문자열의 부분 문자열이 아닌 경우 문자열을 일치시키는 방법은 무엇입니까?
여기에서 시작하십시오 : http://www.dostips.com/DtTipsStringManipulation.php –
고마워요! doesnt는 진짜로 돕는다 ... 나는 somethiing가 더 쉽게 희망하고 있었다. 다른 아이디어? – EOB