UFO ET IT

Windows 배치: FOR 루프에서 여러 명령을 호출합니까?

ufoet 2023. 4. 8. 14:45
반응형

Windows 배치: FOR 루프에서 여러 명령을 호출합니까?

Windows 배치 파일에서 여러 명령어를 1개로 호출할 수 있습니까? FOR루프? 예를 들어 파일 이름을 인쇄하고 삭제한 후 다음을 수행합니다.

@ECHO OFF
FOR /r %%X IN (*.txt) DO (ECHO %%X DEL %%X)
REM the line above is invalid syntax.

이 경우 이름을 표시하는 FOR 루프와 파일을 삭제하는 FOR 루프를 2개 실행함으로써 해결할 수 있습니다.단, 하나의 루프만으로 해결할 수 있을까요?

사용.&짧은 명령어라면 괜찮지만, 그 1행은 매우 빨리 길어질 수 있습니다.이 경우 여러 줄 구문으로 전환합니다.

FOR /r %%X IN (*.txt) DO (
    ECHO %%X
    DEL %%X
)

배치(그리고.)문제가 있습니다.뒤의 둥근 괄호DO같은 행에 배치해야 합니다.그렇지 않으면 배치파일이 올바르지 않게 됩니다.

if /?|find /V ""자세한 것은, 을 참조해 주세요.

FOR /r %%X IN (*) DO (ECHO %%X & DEL %%X)

SilverSkin과 Anders 둘 다 맞습니다.괄호를 사용하여 여러 명령을 실행할 수 있습니다.단, 명령어 자체(및 해당 파라미터)에 괄호가 포함되어 있지 않은지 확인해야 합니다. cmd네스트된 괄호 세트를 우아하게 처리하는 대신 첫 번째 닫힘 괄호를 탐욕스럽게 검색합니다.이로 인해 명령줄의 나머지 부분이 해석에 실패하거나 일부 괄호가 명령에 전달될 수 있습니다(예:DEL myfile.txt)).

이를 회피하려면 루프 본체를 다른 기능으로 분할합니다.기능 본문에 "떨어지지 않도록" 기능 본문 주위를 점프해야 할 수도 있습니다.

FOR /r %%X IN (*.txt) DO CALL :loopbody %%X
REM Don't "fall through" to :loopbody.
GOTO :EOF

:loopbody
ECHO %1
DEL %1
GOTO :EOF

언급URL : https://stackoverflow.com/questions/2252979/windows-batch-call-more-than-one-command-in-a-for-loop

반응형