NASからファイルを取得してローカルのファイルを上書きするbat
経緯
RPAでNASに置いてあるExcelファイルを取り込んで処理を行っているフローで、
よくExcelが開かなくなるような不具合(その後開こうとしても真っ白なExcelファイルが表示される)という話があって、
それなら試しにローカルに配置したものをRPAで取り込むように変えてやって見ませんかということで、
NASに配置している最新版をRPAがインストールされているローカル端末に持ってきて、
RPAで指定しているローカルなパスに上書きするようなバッチを作成した備忘です。
作って見た感想
毎回ネットワークパスあたりでつまるなあと思い出した。
あとxcopyの確認メッセージも毎回忘れてる。。。。
@echo off
rem ★環境変数のローカル化により呼び出し元を汚染しないようにする
setlocal
rem
------------------------------------------------------------------------------------------------
rem RPA取込処理で使用するexcelファイルの最新版を取得する
rem 最新版:\\XX.XX.XX.XX\ABCDEFG\001_ABCDE\002_FGHEIJ\
rem RPAで使用しているパス:ローカルパス
rem
------------------------------------------------------------------------------------------------
rem ★変数を宣言する
set latest_edition_folder_path=\\XX.XX.XX.XX\ABCDEFG\001_ABCDE\002_FGHEIJ\
set file_name=エクセルファイル名
set local_folder_path=C:\Users\xxx\Desktop\xxxxxx\xxxxxxxbat
rem ★バックアップファイル用の年月日時分秒を取得
set yyyy=%date:~,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
set hh=%time:~0,2%
set mn=%time:~3,2%
set ss=%time:~6,2%
rem ★bkフォルダがない場合、bkフォルダを作成する
cd %local_folder_path%
if not exist bk mkdir bk
rem ★ローカルファイルを念のためバックアップを取得する
rem /d:コピー元の日付がコピー先を新しい場合のみコピーする
rem /y:コピー先にファイルが存在する場合上書き云々の確認メッセージを表示せず強制上書きする
if exist %local_folder_path%\%file_name% (
rem xcopyでよく聞かれる受け側のファイルですか、またディレクトリですかの回避のため、先頭に「echo f | 」を記載
echo f | xcopy /y %local_folder_path%\%file_name% %local_folder_path%\bk\%file_name%
rem ★ローカルファイルのバックアップをリネームする
rename %local_folder_path%\bk\%file_name% %yyyy%%mm%%dd%%hh%%mn%%ss%_%file_name%
)
rem ★ローカル端末上にNドライブのネットワークパスを作成する
net use m: %latest_edition_folder_path%
rem ★作業ディレクトリをmドライブにする
m:
rem ★NASから最新版のファイルを取得する。
rem /d:コピー元の日付がコピー先を新しい場合のみコピーする
rem /y:コピー先にファイルが存在s売る場合上書き云々の確認メッセージを表示せず強制上書きする
rem xcopyでよく聞かれる受け側のファイルですか、またディレクトリですかの回避のため、先頭に「echo f | 」を記載
echo f | xcopy /d /y %file_name% %local_folder_path%\%file_name%
rem ★ローカル端末上に作成したNドライブのネットワークパスを削除する
net use m: /d /y
exit