バッチファイルと共有ネットワーク：マッピングによる問題解決法 (備忘録)

バッチファイルを共有ネットワークに使ったとき、エラー起きたけどマッピングしたらうまく行ったので、その備忘録。

マッピング設定　→　バッチファイル作成　→　タスクスケジューラー設定

# バッチファイルと共有ネットワーク：マッピングによる問題解決法

## 流れ:マッピング設定　→　バッチファイル作成　→　タスクスケジューラー設定

***

#### はじめに

バッチファイルを使用した自動化は、日々の業務を効率化する強力なツールです。しかし、共有ネットワークリソースへのアクセスを試みる際には、パスの指定やアクセス権限の問題に直面することがあります。この記事では、これらの問題をマッピングを通じて解決する方法に焦点を当てます。

#### 共有ネットワークへの直接アクセスの課題

共有ネットワークリソースへの直接アクセスは、理論上はシンプルで直接的な方法ですが、実際にはいくつかの課題が伴います。

1.  **パスの複雑さ**: UNCパスは長くて複雑になりがちで、タイプミスの可能性を高めます。
2.  **アクセス権限**: 現在のユーザーアカウントに適切な権限がない場合、アクセスは拒否されます。
3.  **ネットワークの不安定さ**: ネットワークの問題は、リソースへのアクセスを妨げる可能性があります。

#### マッピングによる解決策

ネットワークドライブをマッピングすることで、上記の課題を効果的に解決できます。

1.  **シンプルなパス**: マッピングにより、長いUNCパスの代わりに短いドライブレターを使用できます。これにより、パスの指定が簡単になり、エラーのリスクが減少します。
2.  **アクセス権限の明確化**: マッピングプロセス中に特定のユーザー資格情報を使用することで、アクセス権限の問題をクリアにできます。
3.  **一貫したアクセス**: マッピングされたドライブは、システム起動時に自動的に再接続されるため、アクセスの一貫性が保証されます。

#### 実際の解決事例

あるケースでは、バッチファイルを使用して共有ネットワークリソースにアクセスしようとした際にエラーが発生しましたが、ネットワークドライブをマッピングすることで問題が解決しました。この方法により、バッチファイルが正常に実行され、自動化プロセスがスムーズに行われるようになりました。

***

ネットワークドライブマッピングについて、以下から記載します。

***

# ネットワークドライブマッピングの基本

簡単に復習すると、ネットワークドライブマッピングとは、ネットワーク上の特定のストレージロケーションを、ローカルコンピュータ上のドライブレターに関連付けるプロセスです。この方法で、例えば「\ZZ-ZZZ1234」というネットワークパスを「Sドライブ」としてPC上に表示させることができます。

## 実際の例

ネットワークドライブをマッピングすることで、特定のネットワークロケーション（￥例えば、\ZZ-ZZZ1234）をPCの特定のドライブレター（この場合はS）に関連付けることができます。以下にWindowsでネットワークドライブをマッピングする手順を示します。

1.  「このPC」を開き、「コンピュータ」タブをクリックし、「ネットワークドライブの接続」を選択します。

2.  「ドライブ」のドロップダウンメニューで、「S」を選択します。

3.  「フォルダ」フィールドに、"\ZZ-ZZZ1234"を入力します。

4.  必要に応じて「接続時に異なる資格情報を使用する」にチェックを入れます。これはネットワークロケーションに接続するための特定のユーザー名とパスワードが必要な場合に使用します。

5.  「完了」をクリックします。

これにより、あなたのPCにSドライブとして\ZZ-ZZZ1234がマッピングされます。ユーザー名とパスワードが必要な場合は、その情報をプロンプトに入力するよう求められます。

この手順はWindowsのバージョンによって少し異なる場合があります。詳細な手順については、Windowsのヘルプとサポートを参照してください。

***

ついでに、そのまま使用した例。

以下からバックアップのバッチファイル。

Windowsスケジューラーにもそのまま設定。

***

# バッチファイルを使用した自動バックアップの設定

**目的とメリット**

バッチファイルを使用すると、定期的なデータバックアップを自動化できます。これは、データ損失を防ぎ、重要なファイルの安全性を確保する上で不可欠です。

**スクリプトの構築**

1.  **バックアップ元と先の指定**: バックアップを取るフォルダと、バックアップデータを保存する場所を指定します。
2.  **日付フォルダの作成**: バックアップが行われる毎に、現在の日付に基づく新しいフォルダを作成します。
3.  **データのコピー**: `xcopy` コマンドを使用して、バックアップ元からバックアップ先へファイルをコピーします。
4.  **古いバックアップの削除**: `forfiles` コマンドを使用して、一定期間以上古いバックアップデータを自動的に削除します。

**バッチファイルの保存とテスト**

作成したバッチファイルをANSI形式で保存し、実行して正しく動作することを確認します。特に、パスやディレクトリ名が正しいこと、必要な権限があることを確認してください。

バッチファイルについての詳細な解説を追加します。このセクションでは、バックアップを自動化するためのバッチファイルの各部分を分解し、その機能と目的を説明します。以下のコードは、ネットワークドライブからデータを定期的にバックアップするために使用されます。

Sドライブとします。

```batch
@echo off
setlocal enabledelayedexpansion

:: バックアップ元のディレクトリ
set "source1=S:\管理\記録表作成"

:: バックアップ先のディレクトリ
set "dest=Z:\記録\記録表バックアップ"

:: 現在の日付を yymmdd 形式で取得
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set "datetime=%%I"
set "datetime=%datetime:~2,6%"

:: バックアップ先のディレクトリに日付のディレクトリを作成
if not exist "%dest%\%datetime%" mkdir "%dest%\%datetime%"

:: フォルダのコピー
for %%s in (source1) do (
    echo xcopy /E /Y /F "!%%s!" "%dest%\%datetime%"
    xcopy /E /Y /F "!%%s!" "%dest%\%datetime%"
    if errorlevel 1 echo xcopy failed with error %errorlevel%
)

:: 1ヶ月以上古いディレクトリの削除
forfiles /P "%dest%" /D -30 /C "cmd /c if @isdir==TRUE rd /S /Q @path"
if errorlevel 1 echo forfiles failed with error %errorlevel%

endlocal
```

### バッチファイルの解説

1.  **@echo off**: このコマンドは、バッチファイルの実行中にコマンド自体を画面に表示しないようにします。これにより、出力がクリーンになり、ユーザーが結果をより簡単に読み取れるようになります。

2.  **setlocal enabledelayedexpansion**: このコマンドは、バッチファイル内で変数の遅延展開を有効にします。これにより、ループや条件文内で変数の値を動的に更新して使用することが可能になります。

3.  **バックアップ元と先の指定**: `set` コマンドを使用して、バックアップのソースと目的地を定義します。これにより、スクリプトの残りの部分でこれらの変数を参照できます。

4.  **現在の日付の取得**: `wmic os get localdatetime` コマンドを使用して現在の日付と時刻を取得し、それを加工して `yymmdd` 形式で保存します。これは、バックアップフォルダに一意の名前を付けるために使用されます。

5.  **日付フォルダの作成**: `mkdir` コマンドを使用して、バックアップデータを保存するための新しい日付フォルダを作成します。これにより、異なる日に作成されたバックアップを簡単に識別できます。

6.  **データのコピー**: `xcopy` コマンドを使用して、バックアップ元から新しく作成した日付フォルダにデータをコピーします。このコマンドはサブディレクトリを含めてファイルをコピーし、必要に応じてファイルを上書きします。

7.  **古いバックアップの削除**: `forfiles` コマンドを使用して、指定された期間よりも古いバックアップフォルダを自動的に見つけ出し、削除します。これにより、不要になった古いデータがストレージを占有するのを防ぎます。

8.  **エラーチェック**: `if errorlevel 1` 条件を使用して、`xcopy` および `forfiles` コマンドの実行結果をチェックします。エラーが発生した場合は、エラーメッセージを表示します。

このバッチファイルは、ネットワークドライブからのデータバックアップを自動化するための強力なツールです。適切に設定されたスケジュールに従って定期的に実行されることで、重要なデータの安全性を確保し、データ損失のリスクを最小限に抑えることができます。

# Windowsスケジューラーによる自動化

**目的とメリット**

Windowsスケジューラーを使用すると、バッチファイルを特定の時間や条件下で自動的に実行させることができます。これにより、バックアッププロセスを完全に自動化し、手動操作の必要性を排除できます。

**設定方法**

1.  **タスクスケジューラーの起動**: 「スタート」メニューから「タスクスケジューラー」を検索して開きます。
2.  **基本タスクの作成**: 「アクション」パネルから「基本タスクの作成」を選択します。
3.  **タスクの詳細設定**: タスクに名前を付け、実行するトリガーを設定します（例：毎日、特定の時間）。
4.  **アクションの選択**: 「プログラムの開始」を選択し、バッチファイルのパスを指定します。
5.  **タスクの保存**: 設定を確認し、タスクを保存します。これで指定した条件下でバッチファイルが自動的に実行されます。

#### まとめ

このガイドでは、ネットワークドライブのマッピングから始まり、バッチファイルを使用した自動バックアップの設定、さらにはその自動化までを一通り説明しました。これらのステップを通じて、効率的なデータ管理と保護戦略を構築することができます。定期的なバックアップはデータ損失を防ぐ上で不可欠であり、今回紹介した自動化プロセスを利用することで、その手間を大幅に削減できます。バックアップの重要性は決して過小評価できないため、今日からでもこれらの手順を実践し、大切なデータを守りましょう。

***

です。

![](https://pbs.twimg.com/media/GHv34pwakAAGmXO?format=jpg\&name=medium)