2016-12-11 3 views
0

배치 파일이 폴더를 순환하고 폴더의 파일 이름/경로를 포함하는 문자열을 내보내려고합니다.따옴표, 괄호 및 txt 파일에 대한 변수가 포함 된 문자열을 ECHO에 전송하는 BATCH 명령

for %%F in (*.mp4) do (
echo Folder=("C:\VIDS") VID=("%%~dpnxF") >> "%%F".text 
) 

괄호를하고 echo 명령과 같은 줄에 따옴표 모두 (떨어져 "%%F" 명령에 따옴표에서이 분명히 될 것 같은 파일에 반향 할 필요가 : 지금까지 내가 설정 한 문자열 자체가 아닌 출력 할 파일의 이름).

이 수식 오류는 VID was not expected at this time입니다.

for %%F in (*.mp4) do (
echo "Folder=("C:\VIDS") VID=("%%~dpnxF")" >> "%%F".text 
) 

을하지만 둘러싸는 따옴표 내가 원하지 않는, 너무 파일로 출력됩니다 :

그러나이 작동합니다.

내가 캐럿을 사용하여 첫 번째 식 (^)의 문자열에 따옴표를 탈출 시도, 물결표 (~) 및 기타 게시물하지만 없음 연구에서 제안 슬래시.

For %%F In (*.mp4) Do Echo=Folder=("C:\VIDS") VID=("%%~dpnxF")>>"%%F".text 

나는 그러나 당신을 제안 변경 : "%%F".text

+1

'에코 폴더 = ("C : VIDS \"^) VID = ("%% ~ dpnxF"^) >> "%% F 당신은 또한 echo 명령 앞에 리디렉션 부분을 진술 할 수 . 텍스트. – PetSerAl

+0

훌륭합니다. 고마워. 고마워. 그러나 VID = ("%% ~ dpnxF"^) 비트 뒤에 더 많은 텍스트를 출력해야한다면 어떻게해야합니까?echo folder = ("C : \ VIDS"^) VID = ("%% ~ dpnxF"^) 좀 더, 텍스트 (그리고 더 많은 텍스트) >> "%% F" 이 시간에 예상하지 못했습니다 " –

+1

그러면 다른 모든 닫는 괄호')'를 캐럿 기호'^'로 이스케이프 처리해야합니다. – PetSerAl

답변

0

다음은, (불필요한 괄호없이) 는 예상대로 작동하는 것 같다 문제는 따옴표로 인해 발생하지 않고 괄호로만 발생합니다.

echo 명령 코드의 괄호에 블록에 나타나지 않는 한, 당신이 할 수있는 모든 문제없이 출력 문자 괄호 :

rem // This will work: 
echo Folder=("C:\VIDS") VID=("%%~dpnxF") 

즉시 echo 명령은 괄호에 블록 내에서 나타나는대로, 마감 )은 의도하지 않게 블록을 닫습니다. 그것을 해결하기 위해, 당신은 말 그대로 캐럿 ^로 이전하여 출력을 원하는 닫는 괄호를 탈출해야합니다

rem // This will fail: 
(
    echo Folder=("C:\VIDS") VID=("%%~dpnxF") 
) 

rem // But this will work: 
(
    echo Folder=("C:\VIDS"^) VID=("%%~dpnxF"^) 
) 

rem // This will work too 
rem // (the opening parentheses do not need to be escaped, but it does not harm either): 
(
    echo Folder=^("C:\VIDS"^) VID=^("%%~dpnxF"^) 
) 

이 코드에이를 적용하기 위해서는 다음과 같아야합니다

for %%F in (*.mp4) do (
    echo Folder=("C:\VIDS"^) VID=("%%~dpnxF"^) >> "%%~F.text" 
) 

변경된 리디렉션 부분 >> "%%~F.text" 또한 견적이 수정 된 점에 유의하십시오.

는 리디렉션 연산자 >>의 앞에 SPACE을 제거 할 수 있습니다, 모든 라인에서 출력 할 후행 SPACE을 방지하기 위해;

for %%F in (*.mp4) do (
    >> "%%~F.text" echo Folder=("C:\VIDS"^) VID=("%%~dpnxF"^) 
) 
+0

설명하는 것이 도움이 될 것입니다 왜 *이 작품 ... – aschipfl

1

"%%F.text"에 이미 코멘트를 지적