バッチファイルで文字列操作
色々と文字加工ができます
文字列操作
書式一覧:変数展開と文字列操作
| 書式 | 意味 | 例 | 結果 | 
|---|---|---|---|
| %~I | すべての引用符 ( ") を削除して、Iを展開します。 | %~I | C:\Path\File.txt | 
| %~fI | %Iを完全修飾パス名に展開します。 | %~fI | C:\Path\File.txt | 
| %~dI | %Iをドライブ文字だけに展開します。 | %~dI | C: | 
| %~pI | %Iをパス名だけに展開します。 | %~pI | \Path\ | 
| %~nI | %Iをファイル名だけに展開します。 | %~nI | File | 
| %~xI | %Iをファイル拡張子だけに展開します。 | %~xI | .txt | 
| %~sI | 展開されたパスは短い名前 (8.3形式) を含みます。 | %~sI | C:\PROGRA~1\FILE~1 | 
| %~aI | %Iをファイルの属性に展開します。 | %~aI | -a--- | 
| %~tI | %Iファイルの日付/時刻に展開します。 | %~tI | 2024/12/03 12:00 | 
| %~zI | %Iファイルのサイズをバイト単位で展開します。 | %~zI | 1024 | 
| %~$PATH:I | PATH 環境変数を検索し、最初に見つかった %Iを完全修飾名に展開します。 | %~$PATH:I | C:\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









ディスカッション
コメント一覧
まだ、コメントがありません