†DOSとバッチとスクリプト†

カレント・ディレクトリの取得

作成開始日 2021.02.07
最終更新日 2021.02.08

バッチ内でカレント・ディレクトリを取得するには、環境変数「%CD%」を参照する。

 ECHO %CD%

あるいは;

 SET CURDIR=%CD%

のような形式で参照可能。先頭2文字を取り出せばドライブレターになるし、3文字目から末尾まで取り出せばパス名になる。このあたりの文字列処理は難しくない。

少々厄介なのが、パスなしでディレクトリ名のみを取り出す場合。たとえば、「%CD%」が「E:¥MYWORK¥DATA3」場合、「DATA3」だけが欲しいことがある。これを文字列処理で取得するのはかなり面倒臭い。階層数やディレクトリ名の文字数などに規則性があれば別だが、一般化するとコードがかなりややこしくなる。

ここで登場するのが、フルパス名を要素(ドライブレター、パス名、ファイル名、拡張子など)に分解する機能;通称「にょろん」(今私が名付けた)。ただし、にょろんは引数変数専用の機能。一般的な環境変数で使用するには一手間掛ける必要がある。

 for %%a in (%CD%) do (set dirname=%%~na)

ここでは「%CD%」の中身を「%%a」という引数変数に読み込ませて、「%%~na」で「%%a」からディレクトリ名を取り出して、環境変数「%dirname%」(dirname)に設定している。


【DOSとバッチ目次】 【ホーム】