バッチファイルがあるディレクトリ名だけを取得する

バッチファイルがあるディレクトリ名だけを取得する

バッチファイルがあるディレクトリ名だけを取得する

どういうことかというと


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\Des ktop\MyFolder\」
こんなpathのときforが2回、回ってしまいます。

%~ni

変数からファイル名だけ取得します。

これは「%変数」にだけつかえる記号です。

繰り返さないのにforを使ったのはこのためです。

これで「MyFolder」が取得できます。

 

※「%~ni」の「i」は「%%i」の「i」と対応しています。

echo

画面に表示する

%THIS_DIRECTORY%は「%%」で囲った変数の中身って意味

pause

画面がすぐ消えると嫌だから止めてる

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です