2016-10-02 5 views
1

쉬운 것이어야합니다. 나는 일하는 배치를 만들었지 만 과도하게 긴 문장이 포함되어 있다고 생각합니다. 나는 대괄호로 놀아야 만했지만, 내가 무엇을하고 있었는지 이해하지 못한다는 것을 매우 빨리 깨달았다. 모든 팁이 우수 할 것입니다.배치 파일에 긴 코드 줄을 사용하지 마십시오

여기에 코드

IF "%deletetype%" == "prompt" (for /d /r "C:\Users" %%a in (*Folder*) do if exist "%%a" rmdir /s "%%a") ELSE (for /d /r "C:\Users" %%a in (*Folder*) do if exist "%%a" rmdir /s /q "%%a") 
IF "%deletetype%" == "prompt" (for /d /r "C:\Documents and Settings" %%a in (*Folder*) do if exist "%%a" rmdir /s "%%a") ELSE (for /d /r "C:\Documents and Settings" %%a in (*Folder*) do if exist "%%a" rmdir /s /q "%%a") 

당신이 너무 오래 보인다 볼 수 있듯이에게 있습니다 최대한 빨리 다른 곳으로 이동하거나 브라켓은, 코드 나누기 내가 붙어있다. 을 작은 덩어리로 분해하려면 어떻게해야합니까? 고맙습니다!

모든 도움을 주셔서 감사합니다. 나는 이것을 짧게 할 수있는 다른 문장에도 적용 할 수 있을지 궁금해하고 있었다. 나는 아래 라인으로 시도했지만 나는 다시 내 깊이에서 벗어났다. 나는 당신이 그것을 할 수 없다면 궁금해. (실패한 경우 실행) & & (성공시 실행) 문자? 어쩌면 다른 컨디셔너를 사용할 것입니까?

msiexec.exe /norestart /qn /x {3EBE26E0-8630-4351-B18F-06AB4067AC49} || Echo Driver Already Removed or Not Exist! && (pause) && If "%drvtype%" == "grundig" (goto drivers) 

감사합니다.

msiexec.exe /norestart /qn /x {07A1C1F1-52A2-49F4-A413-FF9A4FC3EDB6} || ( 
Echo Olympus Driver Already Removed or Not Exist! Press Space Bar to Continue 
) && pause>nul && (If "%drvtype%" == "olympus" (goto drivers) 
    ) 
) 

답변

3

당신은 다음과 같은 스크립트를 작성할 수

IF "%deletetype%" == "prompt" (
    for /d /r "C:\test" %%a in (*Folder*) do (
     if exist "%%a" rmdir /s "%%a" 
    ) 
) ELSE (
    for /d /r "C:\test" %%a in (*Folder*) do (
     if exist "%%a" rmdir /s /q "%%a" 
    ) 
) 

의 핵심은이를 위해 IF-else 문 위해 일하면 IF에 대한 닫는 괄호와 같은 줄에 ELSE하는 것입니다.

+0

완벽하게 작동합니다. 감사합니다. 이해의 요점과 같이 괄호로 IF 문을 같은 행에서 생각하도록 만들지 만 실제로는 그렇지 않습니다. – Tika9o9

+4

"논리적 인 라인"이라고 생각하십시오. 'cmd' 파서는 그것을 실제로 하나의 행으로 취급합니다. – Stephan