截至目前,我使用批处理执行操作,如下所示。FOR /D %%G in ("*") DO 命令
- 这将在所有文件夹上执行命令,因为我已经提到了“*”,现在我需要在上述命令中跳过文件夹(名称为 *Shared)。
请告知我是否可以使用 IF 循环来执行相同的操作以及我该怎么做。或建议是否有任何简单的方法来执行
截至目前,我使用批处理执行操作,如下所示。FOR /D %%G in ("*") DO 命令
请告知我是否可以使用 IF 循环来执行相同的操作以及我该怎么做。或建议是否有任何简单的方法来执行
您可以检查%%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
另一种选择是使用 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
)