Windows バッチファイルで格納先フォルダ名を取得
改訂
2018-08-13 call文の代わりにfor文の1ライナーで
%~
構文を適用し、実質2行に洗練。
まえがき
Windows バッチファイルってすでに過去の遺物にも思えるが、まだまだ使われてることも多い。でも、ちょっと凝ったことをしようとすると %~dp0
とか書くことになり、手こずったりもする。
■ 課題
%~
形式の バッチパラメータのオプション構文 はそこそこ揃っているのだが、%~dp0
でバッチファイルの格納先パスは取得できても、格納先フォルダ名を取得する方法は用意されていない。
取得したい情報 | 構文 | 値の例 |
---|---|---|
バッチファイルのフルパス | %~f0 |
C:\Users\someone\folder\mybatch.bat |
バッチファイルの格納先パス | %~dp0 |
C:\Users\someone\folder\ |
バッチファイルの格納先フォルダ名 | なし | folder |
そこで、バッチファイル内でバッチファイルの格納先フォルダ名を取得する方法を実装してみた。
■ バッチファイルでの実装
@echo off
rem このバッチファイルが格納されているフォルダ名を取得する方法
setlocal
set THIS_PATH=%~dp0
for %%1 in ("%THIS_PATH:~0,-1%") do set FOLDER_NAME=%%~nx1
rem テストコード
echo.
echo Current directory is "%CD%"
echo Full path is "%~f0"
echo %%~dp0 is "%~dp0"
echo.
echo Folder name is "%FOLDER_NAME%"
説明
* 上記の例では%FOLDER_NAME%
にバッチファイルの格納先フォルダ名がセットされる。
* ポイントはパス末尾の \ の有無で%~nx1
の結果が変わること。
* フォルダ名に空白文字やピリオドが含まれている場合にも対応。改良
* call文の代わりに、for文を応用した1ライナーで%~
構文を適用。
■ 参考
Author And Source
この問題について(Windows バッチファイルで格納先フォルダ名を取得), 我々は、より多くの情報をここで見つけました https://qiita.com/k1tajima/items/ebf4145367ef268dc124著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .