Triad sou.

バッチファイル 実行ディレクトリ名の取得 (1)

旧版

Windows環境のTeX周りを充実させておこうと思って、バッチファイルを書いてた時に作った。
これを使って実行したバッチファイルがあるディレクトリ名を取得して、WinShellのプロジェクトファイルを自動生成できるようにした。
C:\Dir\SubDir\batch.batを実行したときに「SubDirの部分だけ」を取ってこようというもの。

@echo off

set CDS=%~dp0
set /a SIZE=256
set /a N=-1
set /a NS=0
set /a NE=0

:loop
set /a N+=1
call set STR=%%CDS:~%N%,1%%
if "%STR%"=="\" (
  set /a NS=NE
  set /a NE=N
)
if %N%==%SIZE% goto break
goto loop
:break

set /a NS=NS+1
set /a NE=NE-NS
call set CDN=%%CDS:~%NS%,%NE%%%

echo %CDN%
PAUSE


単にカレントディレクトリをフルパスで欲しいときは簡単。

%CD%

DOS窓で「echo %CD%」とか、「cd ../」「echo %CD%」とか打ってみると分かりやすい。