BATファイルでパスワード付きのWindows共有フォルダにアクセスする方法
自動化厨のための忘備録
共有フォルダを利用する流れ
- ユーザー名とパスワードを使い共有フォルダへ接続
- 共有フォルダで削除やコピーなどの作業
- 共有フォルダの切断
対応コマンド(括弧内は任意)
- net use (共有フォルダへのパス) (PASSWORD) /user:(USERNAME) /Y
/Y : 確認なしで接続 - (サーバー上で適当に処理 hogehoge)
- net use (共有フォルダの場所) /delete
記述例(パス付き共有サーバーに日時のディレクトリを作成)
@echo off
setlocal
rem ------ 定義 ------
set SERVER_PATH=\\test_server
set USERNAME=admin
set PASSWORD=admin_pass
rem 日時取得(時間が1桁の場合は空白になるため0で置換)
set time2=%time: =0%
set yyyyMMdd_hhmm=%date:~0,4%%date:~5,2%%date:~8,2%_%time2:~0,2%%time2:~3,2%
set DIRNAME=%yyyyMMdd_hhmm%
rem ------ 処理 ------
rem 1. 接続
net use %SERVER_PATH% %PASSWORD% /user:%USERNAME% /Y
rem 2. 処理
mkdir %SERVER_PATH%\%DIRNAME%
rem 3. 切断
net use %SERVER_PATH% /delete
簡単処理ならこれでOK
もし、GitとかJenkinsを利用しているならばBATファイル実行に失敗する不可解な現象があることに注意(このWindowsのバグで実装が2日は遅れた)
改行コード LF で日本語を含むバッチファイルの動作がおかしい件
Windows 7ですら発生したので、根は深そう。
解決策として全部半角英数字で記述。