環境変数PATH
の内容を1項目1行で表示する。
その際に、C:\Program Files
で始まる物は表示しない。
単に改行するだけなら、文字列置換で簡単。改行に置換する際には、遅延環境変数にする事が必要。
C:\Program Files
の除外は、findstr /v
で出来れば良いが、置換後の出力をパイプに繋ぐと1行目しか取り出せない。
しょうがないので、ループを回して、先頭から1項目ずつ取り除いていくことにした。
普通に置換すると、複数ある場合に全部置換してしまうので、先頭のみ置換するように先頭に文字を追加する。
@echo off setlocal enabledelayedexpansion if /i "%1" == "-a" goto ALL set P=!PATH! :LOOP if "!P!"=="" exit /b for /f "delims=;" %%A in ('echo !P!') do ( echo %%A|findstr /i /c:"C:\PROGRAM FILES" >NUL if ERRORLEVEL 1 echo %%A set P=:!P! set P=!P::%%A;=! set P=!P::%%A=! ) goto LOOP :ALL echo !PATH:;=^ !