2017-02-07 6 views
0

나는 !Template - Year End Report.doc이라는 파일을 가지고 있습니다.Windows에서 "복사"와 다양한 길이의 문자열과 와일드 카드 사용?

copy !Template* customer_name* 

결과는 customer_nameear End Report.doc입니다 :

나는 다음과 같은 명령을 사용하려고 해요.

나는 다음과 같이 짧은 이름을 사용하는 경우 :

copy !Template* cust1* 

가 그럼 난이 출력 얻을 : cust1late - Year End Report.doc

을 어떻게 그것을 대체 할 수있다 "템플릿을!"고객의 이름, 길이에 관계없이 ?

+0

을 (%%a%%b 대신 %a%b를 사용하는 배치 파일에 사용) [copy] (https://ss64.com/nt/copy.html)를 읽으십시오. 대상 이름에 와일드 카드를 사용할 수 없습니다. – DavidPostill

+0

분명히 할 수 있습니다. 'copy! template * customer'를하면 새로운 파일의 이름은'customer'입니다. 그러나 대상에서 와일드 카드를 사용하면 질문에서와 같이 완전히 다른 결과를 얻게됩니다. –

+0

정확히. 대상 이름에 와일드 카드가 있으면이 동작은 정의되지 않습니다. copy 구문은'copy source1 + source2 .. destination [options]'입니다. 원본을 와일드 카드로 바꿀 수 있지만 대상은 바꿀 수는 없습니다. – DavidPostill

답변

1

단지 copy으로 할 수 없습니다. 파일 이름을 분할하는 for를 사용

for /f "tokens=1* delims=-" %a in ('dir /b !Template*') do @echo copy "%a-%b" "cust -%b" 

난 당신이 뭘 하려는지 전혀 생각을했습니다,하지만하십시오

+0

너무 나빠요. 나는 DOS에서 항상이 작업을 해왔다. 배치 파일을 작성하는 것은 범위를 벗어납니다. Excel을 사용하여 모든 고객의 기존 열을 기반으로 모든 복사본 문자열을 생성하고자했습니다. –

+0

글쎄 - 당신의 질문은 "배치 파일"태그가 ... - 어쨌든 : 그것은 단지 한 줄이야. 커맨드 라인에서 사용하거나 배치 파일에 넣으십시오. 큰 문제는 아닙니다. ('echo'를 제거하여'copy' 명령을 준비하십시오.) – Stephan

+0

어떻게 든 각 루프를 반복해야하고 루프를 추가하고 소스를 읽어야합니다. –