수천 개의 파일 이름을 지우고 있습니다. 대부분 "xxxx xxxx - xxxxx xxxx xxxx.yyy"와 같은 구조를 가지고 있습니다. 일부는 대문자로되어 있고 일부는 그렇지 않습니다. (실제로 다른 문제도 있지만 쉽게 해결할 수 있습니다.)FINDSTR을 사용하여 모든 단어를 대문자로 변환하는 방법?
어떤 문자로 된 문자열을 가져 와서 모든 단어 앞에 대문자로 표기하고 싶습니다.
FIND로 할 수있는 것처럼 파일을 사용하는 것이 아니라 파이프를 사용하여 한 줄의 코드를 사용하는 것이 좋습니다.
마지막으로 전체 문자열을 한 번에 대문자로 표시하는 것을 선호하지만 각 단어를 개별적으로 처리하는 것에 반대하지는 않습니다.
예 :
나는 모든 대문자와 알파벳이 아닌 문자를 무시하려는
Input: "this - string IS an EXAMPLE 4 u"
Output: "This - String IS An EXAMPLE 4 U"
(대시, 밑줄, 숫자 등), 단지 영향을받지 통해 전달합니다.
for /f "tokens=*" %%x in ('dir /b *.zzz') do (
for /f "tokens=*" %%y in ('echo %%x ^| findstr /r "s/\s\w/\U$&/g;"') do (
rename "%%x" "%%y"))
가능하다면, 내가 명령 줄에서 테스트 할 수 있도록하고 싶습니다 :
그래서 나는 다음과 같은 코드를 사용할 수 있도록하고 싶습니다 (제 2 라인은 관련 하나입니다) 이런 식으로 :
echo hello to you | findstr /r "s/\s\w/\U$&/g;"
내 문제는 위의 예제는 출력을 제공하지 않는다는 것입니다.
알다시피 정규식 예제를 검색했지만 findstr을 사용하여 플러그 앤 플레이로 가져올 수 없습니다.
나는 파일 확장을 대문자로하지 않을 것이지만, 이것은 쉽게 고칠 수 있으므로, 나는 상관하지 않는다.
다른 MS 기반 솔루션 (Enterprise 또는 Ultimate과 함께 제공되거나 Microsoft에서 다운로드 할 수있는 제품)에 대해서는 열려 있지만 sed, grep 또는 기타 제 3 자 소프트웨어 제안은 보내지 마십시오.
미리 감사드립니다.
EDIT - 두 번째 솔루션에서 루프 내에서 ENDLOCAL이 누락되었습니다. 모두 고쳐졌습니다. – dbenham
흥미 롭습니다. 그러나 나는 명확하지 않을 것으로 생각한다. 나는 단어를 대문자로 시작하고 싶다. 죄송합니다. 당신의 방법이 나를 생각하게 만들었지 만. 나는 "set nam = % nam : a = A %"와 같은 26 가지 명령을 사용하고있었습니다. 방법을 사용하여 몇 줄로 줄일 수 있는지 알아 보겠습니다. 죄송합니다. 투표 할 담당자가 없습니다. 어쨌든 고마워! –
그냥 투표를 할 담당자를 얻었으므로 그렇게했습니다.^_^ –