在批处理中使用For循环中的If条件

时间:2012-07-10 19:33:55

标签: batch-file

截至目前,我使用如下批量执行操作。 (/ *“)DO命令中的FOR / D %% G

  • 这会对所有文件夹执行命令,因为我已经使用了“*”,现在我需要在上面的命令中跳过文件夹(名称为* Shared)。

如果我可以使用IF循环执行相同操作,请提供建议,我该怎么做。 或建议是否有任何简单的方法来执行

2 个答案:

答案 0 :(得分:1)

您可以查看%%G变量以查看文件夹名称。从那里,您可以获取最后6个字符,并查看值是否为Shared

我们使用SETLOCAL ENABLEDELAYEDEXPANSION,以便我们可以更新循环内的变量。

@ECHO OFF

SETLOCAL ENABLEDELAYEDEXPANSION 

FOR /D %%G in ("*") DO ( 
   SET str=%%G

   IF /I "!str:~-6!" NEQ "Shared" (
       Command
   )
)

PAUSE

答案 1 :(得分:1)

另一个选择是使用FINDSTR过滤DIR命令的输出并使用FOR / F处理结果。

for /f "eol=: delims=" %%G in ('dir /b /ad ^|findstr /lie "shared"') do command

这是一个更强大的LittleBobbyTables解决方案版本,可与文件夹名称中的!一起使用。它也适当地进行了不区分大小写的比较。

setlocal disableDelayedExpansion
for /d %%G in (*) DO ( 
  set "str=%%G"
  setlocal enableDelayedExpansion
  if /i "!str:~-6!" neq "shared" command
  endlocal
)