バッチファイルで文字列操作

色々と文字加工ができます

文字列操作

書式一覧:変数展開と文字列操作

書式意味結果
%~Iすべての引用符 (") を削除して、I を展開します。%~IC:\Path\File.txt
%~fI%I を完全修飾パス名に展開します。%~fIC:\Path\File.txt
%~dI%I をドライブ文字だけに展開します。%~dIC:
%~pI%I をパス名だけに展開します。%~pI\Path\
%~nI%I をファイル名だけに展開します。%~nIFile
%~xI%I をファイル拡張子だけに展開します。%~xI.txt
%~sI展開されたパスは短い名前 (8.3形式) を含みます。%~sIC:\PROGRA~1\FILE~1
%~aI%I をファイルの属性に展開します。%~aI-a---
%~tI%I ファイルの日付/時刻に展開します。%~tI2024/12/03 12:00
%~zI%I ファイルのサイズをバイト単位で展開します。%~zI1024
%~$PATH:IPATH 環境変数を検索し、最初に見つかった %I を完全修飾名に展開します。%~$PATH:IC:\Windows\notepad.exe

書式意味結果
%S%文字列Sの値全体を展開します。%S%ABCDEFGHIJ
%S:~x%(x+1)文字目から末尾まで切り出します。%S:~3%DEFGHIJ
%S:~x,y%(x+1)文字目からy文字分を切り出します。%S:~3,3%DEF
%S:~x,-y%(x+1)文字目から末尾までのうち、最後のy文字を消去します。%S:~3,-3%DEFG
%S:~-x%後ろからx文字目をスタートにして、末尾まで切り出します。%S:~-4%GHIJ
%S:~-x,y%後ろからx文字目をスタートにして、y文字分切り出します。%S:~-4,3%GHI
%S:~-x,-y%後ろからx文字目をスタートにして、最後のy文字を消去します。%S:~-4,-3%G

詳細な説明

1. ファイル展開の修飾子

  • %~ を使用することで、特定のファイル情報を簡単に取得できます。

例1: ファイル情報の展開

for %%I in ("C:\Example\Document.txt") do (
    echo ドライブ: %%~dI
    echo パス: %%~pI
    echo ファイル名: %%~nI
    echo 拡張子: %%~xI
    echo サイズ: %%~zI
    echo 属性: %%~aI
)

結果

ドライブ: C:
パス: \Example\
ファイル名: Document
拡張子: .txt
サイズ: 2048
属性: -a---

2. 文字列操作の修飾子

  • %S:~x,y% を使用して、文字列の切り出しや特定部分の取得が可能です。

例2: 部分文字列の切り出し

set S=WindowsBatchScript
echo %S:~8%       REM 9文字目から末尾まで
echo %S:~8,5%     REM 9文字目から5文字分
echo %S:~-6%      REM 後ろから6文字目から末尾まで
echo %S:~-6,4%    REM 後ろから6文字目から4文字分

結果

BatchScript
Batch
Script
Scri

3. PATH 検索

  • %~$PATH:I を使用して、PATH 環境変数から指定したファイルを検索します。

例3: PATH内のプログラム検索

for %%I in (notepad.exe) do (
    echo PATH で見つかったプログラム: %%~$PATH:I
)

結果

PATH で見つかったプログラム: C:\Windows\System32\notepad.exe

4. 文字列の置換と切り出しの組み合わせ

  • %変数名:検索文字列=置換文字列% で文字列を置換し、さらに切り出します。

例4: 置換と部分文字列

set S=HelloWorld
set S=%S:World=Batch%
echo %S:~5%       REM 6文字目から末尾まで

結果

Batch

bat

Posted by eightban