2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

コマンドプロンプトで部分文字列取得

Posted at

はじめに

ある日突然バッチファイルを渡されたけど、

パッと見ぜんぜんわからなかったので調べた時のメモ。

部分文字列の取得

コマンド

set FILE=C:\hogehoge.txt
if exist "%FILE%" move "%FILE%" "%FILE:~,-3%bak"

解説 : ~,-3って何だ?

結論から言えば、部分文字列を取得してhogehoge.txtをhogehoge.bakにしてるだけだった。
(hogehoge.txtの最初の文字から、最後から3文字分除いた文字列にbakをくっつけている)

以下に書式と、出力した場合の結果をまとめてみた。
お気に入りのものを見つけてほしい。

  • %FILE% - 変数全体の値を取得

    C:\>echo %FILE%
    hogehoge.txt
    
  • %FILE:~m% - 変数のm文字目後から、最後までの文字列

    C:\>echo %FILE:~3%
    ehoge.txt
    
  • %FILE:~m,n% - 変数のm文字目後から、n文字分の文字列

    C:\>echo %FILE:~3,4%
    ehog
    
  • %FILE:~m,-n% - 変数のm文字目後から、最後からn文字分除いた文字列

    C:\>echo %FILE:~3,-3%
    ehoge.
    
  • %FILE:~,n% - 変数の最初から、n文字分の文字列

    C:\>echo %FILE:~,3%
    hog
    
  • %FILE:~,-n% - 変数の最初から、n文字分除いた文字列

    C:\>echo %FILE:~,3%
    hogehoge.
    
  • %FILE:~-m% - 変数の後ろm文字分目から、最後までの文字列

    C:\>echo %FILE:~-3%
    txt
    
  • %FILE:~-m,n% - 変数の後ろm文字目から、n文字分までの文字列

    C:\>echo %FILE:~-3,2%
    tx
    
  • %FILE:~-m,-n% - 変数の後ろm文字目から、最後からn文字分除いた文字列

    C:\>echo %FILE:~-3,-2%
    t
    
  • %FILE:~-m,-n% - 変数の後ろm文字目から、最後からn文字分除いた文字列

    C:\>echo %FILE:~-3,-2%
    t
    
  • echo %FILE:t1=t2% - 変数内の文字t1を、文字t2に置換

    C:\>echo %FILE:ho=fu%
    fugefuge.txt
    

おわりに

何も知らないとほんとにわかんなかったけど、調べてみれば以外に単純。

2
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?