さっきの件の続き。諦めて、ファイルのフルパスは環境変数渡しにして、バッチファイル側でカレントディレクトリ名と第一引き数で受けたファイル名を合成してフルパスを作って渡してやることにする。
DOS のバッチファイルは(なにせ CP/M なんかと同世代だったし)、 Unix のシェルと較べると低機能だとは思っていたが、まさかカレントディレクトリを取得する手段がないとは思ってもみなかったorz。
・・・低機能にもホドがある。ありえ、な?い?♪
代りに、 argv[0] からディレクトリ部分を切り出すことはできるようなので、バッチファイル自体をターゲットのディレクトリに起くソリューション。
参考:DOSのバッチファイルでカレントフォルダを取得するには? -OKWave
こんなコード断片で、一応任意のファイルのフルパスと、拡張子を変更したものが作れている。
echo off set FDIR=%~dp0%1 set ODIR=%~dp0%~n1.jpg