2010-01-02 5 views
0

사용자가 배치 파일에 파일을 끌어다 놓으면 배치 파일이 파일을 특정 디렉토리에 복사합니다. 문제는 다음 명령입니다.CMD : 따옴표 확인

copy "%1" "C:\path\to\it" 

여기서 문제는 %1 주위의 따옴표입니다. 배치 파일에 무언가를 드래그 앤 드롭하면 대개 따옴표가 붙지 않으므로 모든 것이 정상입니다. 그러나 내가 배치 파일을 EXE 파일로 변환하면 실제로 배치 파일이 따로 있습니다.

그래서 내가하고 싶은 것은 위의 명령보다 파일에 따옴표가 있는지 확인하는 것입니다. 그렇지 않으면 따옴표없이 명령을 수행하십시오.

감사합니다.

답변

2

다음과 같이 작동합니까?

copy %1 "C:\Dir1\Dir2" 

%1을 언급하지 않은 문제를 찾으려는 몇 가지 시도가 부작용을 일으키지 않았습니다.

+0

+1. 사실, 공백이있는 파일 이름은 항상 따옴표로 전달되고 따옴표 *는 인수의 일부입니다. '% 1'주위에 따옴표를 넣는 것은 대개 불필요합니다. 이것은 exe 변환기에 배치와 관련이있을 필요는 없습니다. – Joey

+0

예, 알겠습니다. 감사. –

0

문제는 EXE로 변환하는 과정입니다. 다른 BAT - EXE 변환기를 사용해보십시오.

+0

그냥 따옴표를 확인할 수 없습니까? –

1

여기에 주어진 답변이 귀하가 찾고자하는 것이 었는지 모르겠으며 몇 년 늦었을 수도 있습니다. 그러나 비슷한 문제를 스스로 해결 했으므로 따옴표 문제에 대한 대안을 제시하고자합니다. 아마 다른 사람에게 도움이 될 것입니다.

드래그하고 놓은 변수를 포함하여 주위의 변수에서 따옴표를 제거 할 수 있습니다. 방법은 다음과 같습니다

  • %n 변수에 물결을 추가 (예를 들어, copy %~1 "C:\path\to\it")

은 배치 파일 내의 다른 변수의 경우, 큰 따옴표의 대체를 수행하는 유사한 기술이 시간을 사용 아무것도 :"=에 대한, 같이 :

set filename="C:\path\to\it" 
echo %filename% (will give you "C:\path\to\it") 
set noquotefilename=%filename:"=% 
echo %noquotefilename% (will give you C:\path\to\it without the quotes) 

그것은 내 원래의 솔루션은,하지만 난 다음 게시물의 하단에 그것을 발견되지 않습니다

Removing double quotes from variables in batch file creates problems with CMD environment

대체 기술은 쉽게 다른에 대한 모든 문자를 대체 할 수 있기 때문에, 다른 응용 프로그램이 있습니다 (예를 들어, : \ = _ 밑줄을위한 백 슬래시를 대체하기 위해).

희망이 도움이됩니다.