今のところ、以下のようなバッチを使用して操作を実行します。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
もう 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
)