LoginSignup
1
0

More than 1 year has passed since last update.

データ置き場の引っ越し等でパスが変更になる時に、コードやバッチファイル内で使用しているパスはそのまま温存して使いたい場合

Last updated at Posted at 2022-11-23

PC内のデータを整理して移動する・データ置き場の引っ越し等で、大元のパスが変更になってしまう時に、ソースコードやバッチファイル内で使用しているパスは変更せずそのまま温存して使いたい場合は、

Windows OSにある、ファイル・フォルダパスへの参照リンクを作成する機能(リンク機能、ショートカットのように別の場所にあるファイル・フォルダへリダイレクトし、リンクがあたかも実在するパスのように利用できる機能)を用いて、コード内のパスは変更せずに、データ置き場を変更することが出来ます。

入力データの置き場や、ライブラリ的なコードの置き場など、直接パスが参照されるようなデータを他の場所へ移動したい時に、パス参照切れ問題を手っ取り早く解決できておすすめです。

古いデータ置き場(フォルダへのパスA)から、新しいデータ置き場(フォルダへのパスB)へ、データの場所を移動する場合、

フォルダへのパスAから、フォルダへのパスBへ、フォルダを移動させた後で、(フォルダへのパスAは移動後で既に存在しない状態)

3種類あるリンク作成機能: ジャンクション・シンボリックリンク・ハードリンクのうち、例えば、(作成時に管理者権限が不要の)ジャンクションを用いて、

通常のWindowsコマンドプロンプトから、以下のコマンドを実行、

D:\...>mklink /j "フォルダへのパスA" "フォルダへのパスB"
フォルダへのパスA <<===>> フォルダへのパスB のジャンクションが作成されました

すると、パスAの場所に、ジャンクションが作成され、ショートカットの矢印が付いたフォルダのアイコンが作成されます。
image.png

これで、パスAの場所には以前のデータが無いにもかかわらず(実際にはリンク表示があるだけで、実際のデータはパスBの場所にあるのに)、ソースコードやバッチファイル内で"フォルダへのパスA"を継続して使用しても、そのままエラーなく実行することが出来ます

# Pythonソースコード例:
file = open("フォルダへのパスA\\test-file.txt")
# ※↑実際は"フォルダへのパスB\\test-file.txt"へのファイルアクセスになる
file.readline()
...
rem バッチファイル例:
start "フォルダへのパスA\test-file.exe"
rem ※↑実際は"フォルダへのパスB\test-file.exe"の呼出しになる
...

参考

リンクを作成する機能、3種類: ジャンクション・シンボリックリンク・ハードリンクをそれぞれ試した結果の詳細はこちら。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0