2016-10-02 76 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") 

正如你可以看到它似乎太長,只要我移動到任何地方ELSE或支架它,代碼休息和我被困。我能做些什麼來將它分解成更小的塊。謝謝!

感謝您在這裏的所有幫助。我想知道我是否可以將此應用於其他可縮短縮短的句子。我嘗試了下面的這一行,但我再次陷入了深度。我想知道你是否不能用||來做這件事(運行失敗)& &(運行成功)字符?也許使用不同的護髮素?

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語句的工作是ELSE對同一行右括號的IF。

+0

完美的作品,謝謝!就理解的角度而言,括號是否使IF聲明在同一行上考慮它,但它不是真的嗎? – Tika9o9

+4

認爲它是一個「邏輯線」。 'cmd'解析器的確把它當作一行。 – Stephan