目次
バッチファイルがあるディレクトリ名だけを取得する
どういうことかというと
C:\Users\Desktop\MyFolder\test.bat
これ↑を実行したときにMyFolderだけを取得する方法です。
サンプル
@echo off
rem バッチファイルがあるディレクトリ名だけを取得
set DIRECTORY_PATH=%~dp0
for %%i in ("%DIRECTORY_PATH:~0,-1%") do set THIS_DIRECTORY=%%~ni
echo %THIS_DIRECTORY%
pause
解説
@echo off
コマンドを画面に表示しないようにするってことです!
echoの結果は表示されます!( ゚Д゚)echo offなのに!
rem
これはただのコメントです!
set
DIRECTORY_PATHという変数を作って「%~dp0」を入れています。
%~dp0
これはバッチのファイルのフルパスを取得できる文字列です。
人間に対しての愛を感じない文字列ですよね(´・ω・`)
せめて__DIRECTORY_PATH__とかにしてくれればよいのに…
ちなみにdpの略がDirectoryPathなのかは知らないです。
for
繰り返しているという記号ですが、
実は繰り返していないです、「%~ni」これを使うためにforを使っているだけです。
嫌な気持ちにってなってきましたか?(/・ω・)/
一つずつ行きましょう!
("%DIRECTORY_PATH:~0,-1%")
これは抽出です。
「DIRECTORY_PATH」には
上の例でいうと
「C:\Users\Desktop\MyFolder\」が入っています。
そして、「0,-1」これは0文字目から-1文字目(後ろから1文字目)
つまり
「C:\Users\Desktop\MyFolder\」
↓
「C:\Users\Desktop\MyFolder」
こうなります。
これが「%%i」に入ります。
「C:\Users\Desktop\MyFolder\」
↓
「C:\Users\Desktop\MyFolder」
こうなります。
「""」で囲わなかった場合
「C:\Users\Des ktop\MyFolder\」
こんなpathのときforが2回、回ってしまいます。
こんなpathのときforが2回、回ってしまいます。
%~ni
変数からファイル名だけ取得します。
これは「%変数」にだけつかえる記号です。
繰り返さないのにforを使ったのはこのためです。
これで「MyFolder」が取得できます。
※「%~ni」の「i」は「%%i」の「i」と対応しています。
echo
画面に表示する
%THIS_DIRECTORY%は「%%」で囲った変数の中身って意味
pause
画面がすぐ消えると嫌だから止めてる