2015-05-20 294 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

确实,谢谢:) –