【bat】バッチファイルで相対パスを指定する方法

【bat】バッチファイルで相対パスを指定する方法 bat

バッチファイルを使ってファイルのコピーや参照を行う際、相対パスを使うと柔軟な処理が可能になります。本記事では、相対パスの基本から実用的な使用例まで解説します。

相対パスとは?

相対パスとは、「現在のフォルダ」や「バッチファイルの場所」などを基準にしたパスの指定方法です。たとえば、同じフォルダ内や一つ上の階層のファイルを参照する場合に便利です。

相対パスの基本構文

表記 意味
.\ カレントディレクトリ
..\ 1つ上の階層
..\..\ 2つ上の階層
sub\file カレントディレクトリ配下のパス

使用例1 ファイルをコピーする

@echo off
copy ".\data\sample.txt" ".\backup\sample.txt"

上記のバッチでは、data フォルダ内の sample.txt を backup フォルダにコピーしています。すべてカレントディレクトリ(.\)を基準に指定しています。

使用例2 1つ上の階層にあるファイルを参照する

@echo off
type "..\config\settings.ini"

1つ上の階層の config フォルダ内にある settings.ini を表示するコマンドです。

使用例3 バッチファイルの場所を基準にする

バッチファイルがどこから実行されても正しく動作させたい場合は、バッチファイル自体が存在するフォルダを基準にします。

@echo off
set BASEDIR=%~dp0
echo バッチファイルのあるフォルダ: %BASEDIR%

copy "%BASEDIR%data\sample.txt" "%BASEDIR%backup\sample.txt"

ここで使っている %~dp0 は、バッチファイルがあるディレクトリの絶対パスを取得する特別な構文です。

パスにスペースがある場合の注意

パスにスペースが含まれる場合(例:C:\My Documents\file.txt)は、必ずダブルクォーテーション ” で囲むようにしましょう。

type "C:\My Documents\file.txt"

まとめ

バッチファイルで相対パスを使うことで、他の環境やディレクトリ構成でも柔軟に対応できます。特に複数のPCで同じバッチファイルを使う場合など、絶対パスよりも相対パスの方が便利です。