2015-05-20 292 views
1

我想要創建一個腳本來執行以下操作:對於路徑中的每個目錄,都會執行以下操作: ;檢查目錄的名稱是否爲「profiles」,如果不是,則運行程序。如果語句在for循環中

這是我到目前爲止有:

@ECHO OFF 
setlocal enabledelayedexpansion 

for /d %%i in ("\\server\c$\path\*") do (
    set filename=%%~NXi 
    IF !filename!=="profiles"(
) ELSE (
    mycommand.exe 
) 
) 

該代碼會返回一個「無效的命令語法」錯誤。

回答

1

你打開支架之前需要空間,需要設置一個命令,如果條件(在這種情況下,我已經設置REM):

@ECHO OFF 
setlocal enabledelayedexpansion 

for /d %%i in ("\\server\c$\path\*") do (
    set filename=%%~NXi 
    IF "!filename!"=="profiles" (
    rem :: see the space before the bracket above 
) ELSE (
    mycommand.exe 
) 
) 
+1

謝謝:)併爲將來的參考我也不得不在!文件名上使用引號!在IF聲明中。否則,該代碼塊將不會觸發。 –

+0

當你在處理目錄時,'%% NXi'會工作,但沒有任何意義,因爲目錄沒有擴展名。所以'%% Ni'就夠了。 – MichaelS

+0

@JackPettersson - 啊是的:-) – npocmaka

1

我覺得你的初衷是爲要僅當文件夾名稱不是「profiles」時才運行命令。這就是空的IF子句出現的地方,以及您對ELSE的使用。比較本:

setlocal enabledelayedexpansion 

for /d %%i in ("\\server\c$\path\*") do (
    set filename=%%~nxi 
    IF /I NOT "!filename!"=="profiles" (
     mycommand.exe 
) 
) 

雖然我們在這我已經添加了'/ I選項來作出比較大小寫無關。

+0

確實,謝謝:) –