if语句在for循环中

时间:2015-05-20 08:16:26

标签: batch-file if-statement for-loop

我想创建一个执行以下操作的脚本: 对于路径中的每个目录;检查目录的名称是否为“profiles”,如果不是,则运行程序。

这是我到目前为止所做的:

@ECHO OFF
setlocal enabledelayedexpansion

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

此代码只返回“无效的命令语法”错误。

2 个答案:

答案 0 :(得分: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 :(得分:1)

我认为你最初的意图是,只有当foldername不是" profiles"时才想运行命令。那是空的IF子句进入的地方以及你对ELSE的使用。与此相比:

setlocal enabledelayedexpansion

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

虽然我们正在努力,但我已经添加了' / I'选项使比较案例无关。