1

今のところ、以下のようなバッチを使用して操作を実行します。FOR /D %%G in ("*") DO コマンド

  • これにより、「*」を追加したため、すべてのフォルダーでコマンドが実行され、上記のコマンドでフォルダー (*Shared という名前) をスキップする必要があります。

IFループを使用して同じことを実行できるかどうか、およびその方法を教えてください。または実行する簡単な方法があるかどうかを提案します

4

2 に答える 2

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
于 2012-07-10T19:52:17.590 に答える
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
)
于 2012-07-10T20:15:16.300 に答える