[Windowsバッチ] 文字列を部分的に切り出す

Windowsバッチ内で、文字列を部分的に切り出す方法です。

サンプル

例)文字列「ABCDEFGHIJKLMN」を切り出すいろいろ

(実行結果)

コマンドプロンプト
ABCDEFGHIJKLMN DEFGH DEFGHIJKLMN DEFGHI JKLMN JK JKL 続行するには何かキーを押してください . . .

構文

文字列切り出しの構文は以下の通りです。

【変数valの値を切り出す構文】
%val%全文字
%val:~m,n%m文字目~n文字
%val:~m%m文字目~末尾まで
%val:~m,-n%m文字目~末尾n文字を除いた分
%val:~-m%末尾m文字
%val:~-m,n%末尾m文字~n文字分
%val:~-m,-n%末尾m文字~末尾n文字を除いた分

備考

  • 指定する数字は文字数なので、半角全角問わず1文字は1文字とカウントされます。
  • 先頭から数える時の文字位置は1文字目を0、2文字目を1...と数えるのでご注意ください。

関連記事


コメント

  1. sasz より:

    全文字から、末尾10文字を削除したものを表すにはどうすればいいですか?
    文字数が固定されていない時にこれができると助かります。
    よろしくお願いします。

    • tora より:

      ご質問ありがとうございます。

      echo %val:~0,-10%
      ↑これでいかがでしょうか?

      (例)
      set val=ABCDEFGHIJKLMN
      echo %val:~0,-10%
      → ABCD

  2. kaz より:

    初めまして。

    rem 例2)文字列の4文字目~5文字分を切り出す
    echo %val:~3,5%

    set /a cnt=3
    echo %val:~cnt,5%
    のように n文字目からのところを変数にすることは可能でしょうか?

    • tora より:

      遅くなりすみません・・
      以下のようなバッチファイルを作成して実行すれば
      文字数の箇所は変数にできます。

      (sample.bat)
      --------------------------------------------------
      @echo off

      set val=ABCDEFGHIJKLMN
      set start=3
      set len=5
      call set result=%%val:~%start%,%len%%%
      echo %result%
      --------------------------------------------------

      結果:DEFGH

タイトルとURLをコピーしました