2020年04月06日

sambaファイルサーバへのアップロード・ダウンロード同期Windowsパッチ

普段サーバにデータを置いて作業をしているのですが、描画ソフトClipstudioがネットワークからの参照を拒否してくるので、解決策としてアップロード・ダウンロード用のWindowsパッチを組みました。いまの所、漫画・絵コンテ制作に使えています。

・ローカル作業フォルダをパスワードのあるサーバのフォルダと同期。
・作業フォルダと同じ階層に置いておく事を想定。
・各作業PCに置いたbatファイルを使用。
・一日の作業終わりにupload.batをダブルクリック。
・一日の作業はじめにdownload.batをダブルクリック。
・同期先が新しいと保留。確認を表示。

以下、upload.batとdownload.bat。 "■■■"の間の"同期元フォルダ、同期先フォルダ、ユーザー、パスワード"の変数を書き換えてください。

upload.bat

@echo off
rem 【ローカルの作業フォルダにおいてこのバッチファイルをダブルクリックする事でサーバのフォルダと同期します。】

setlocal
rem ■■■■■■■■■■■■■■■■■■■■■■
rem ------ 定義、以下を環境に合わせて定義 ------
rem SERVER_PATH=【アップロード先のsambaサーバーのIPかホスト名から始まるパス。絶対パスが都合が良い】
set SERVER_PATH=\\192.168.11.25\path\to\comic_folder
rem LOCAL_PATH=【アップロード元となるローカルフォルダのパス、バッチファイルupload.batからの相対パスが都合が良い】
set LOCAL_PATH=comic_folder
rem USERNAME=【sambaのユーザー名】
set USERNAME=hoge
rem PASSWORD=【sambaユーザーのパスワード】
set PASSWORD=hogepassword
rem ■■■■■■■■■■■■■■■■■■■■■■
rem ISCHANGEは管理用なので変更しないでください------------------
set ISCHANGE=0
rem ------------------

rem ------ 処理 ------
rem 1. 接続
net use %SERVER_PATH% %PASSWORD% /user:%USERNAME% /Y
rem 2. 処理
chcp 65001 > nul
robocopy %LOCAL_PATH% %SERVER_PATH% /E /XO /NP /V /LOG:upload.log
rem 3. 切断
net use %SERVER_PATH% /delete > nul


rem 4.結果の連絡
chcp 932 > nul
rem 新しファイルの確認。
findstr /I /c:"New File" upload.log > nul
if "%ERRORLEVEL%"=="0" (
echo 新しいファイルをアップロードしました。
echo ----------------------------------------
findstr /I /c:"New File" upload.log
echo ----------------------------------------
set ISCHANGE=1
)

findstr /I "Newer" upload.log > nul
if "%ERRORLEVEL%"=="0" (
echo ファイルをアップロード更新。
echo ----------------------------------------
findstr /I "Newer" upload.log
echo ----------------------------------------
set ISCHANGE=1
)
rem 古いファイルの確認。
findstr /I "older" upload.log > nul
if "%ERRORLEVEL%"=="0" (
echo こちらが古いのでアップロードを見送りました。ご確認ください。
echo ----------------------------------------
findstr /I "older" upload.log
echo ----------------------------------------
set ISCHANGE=1
)

rem 不明なファイルの確認。
findstr "EXTRA" upload.log > nul
if "%ERRORLEVEL%"=="0" (
echo アップロード先に妙なファイルがあるのを放っておきました。ご確認ください。
echo ----------------------------------------
findstr "EXTRA" upload.log
echo ----------------------------------------
set ISCHANGE=1
)
rem 何かしらの特記事項があればキー入力があるまでストップ。
if "%ISCHANGE%"=="1" (
echo 画面を閉じるには何かキーを押してくだささい。
PAUSE > nul
)


download.bat

@echo off

rem 【ローカルの作業フォルダにおいてこのバッチファイルをダブルクリックする事でサーバのフォルダと同期します。】

setlocal
rem ■■■■■■■■■■■■■■■■■■■■■■
rem ------ 定義、以下を環境に合わせて定義 ------
rem SERVER_PATH=【ダウンロード元のサーバーのIPかホスト名から始まるパス。絶対パスが都合が良い】
set SERVER_PATH=\\192.168.11.25\path\to\comic_folder
rem LOCAL_PATH=【ダウンロード先となるローカルフォルダのパス、バッチファイルdownload.batからの相対パスが都合が良い】
set LOCAL_PATH=comic_folder
rem USERNAME=【sambaのユーザー名】
set USERNAME=hoge
rem PASSWORD=【sambaユーザーのパスワード】
set PASSWORD=hogepassword
rem ■■■■■■■■■■■■■■■■■■■■■■
rem ISCHANGEは管理用なので変更しないでください------------------
set ISCHANGE=0
rem ------------------

rem ------ 処理 ------
rem 1. 接続
net use %SERVER_PATH% %PASSWORD% /user:%USERNAME% /Y
rem 2. 処理
chcp 65001 > nul
robocopy %SERVER_PATH% %LOCAL_PATH% /E /XO /NP /V /LOG:download.log
rem 3. 切断
net use %SERVER_PATH% /delete

rem 4.結果の連絡
chcp 932 > nul
rem 新しファイルの確認。
findstr /I /c:"New File" download.log > nul
if "%ERRORLEVEL%"=="0" (
echo 新しいファイルをダウンロードしました。
echo ----------------------------------------
findstr /I /c:"New File" download.log
echo ----------------------------------------
set ISCHANGE=1
)

findstr /I "Newer" download.log > nul
if "%ERRORLEVEL%"=="0" (
echo ファイルをダウンロード更新。
echo ----------------------------------------
findstr /I "Newer" download.log
echo ----------------------------------------
set ISCHANGE=1
)
rem 古いファイルの確認。
findstr /I "older" download.log > nul
if "%ERRORLEVEL%"=="0" (
echo あちらが古いのでダウンロードを見送りました。ご確認ください。
echo ----------------------------------------
findstr /I "older" download.log
echo ----------------------------------------
set ISCHANGE=1
)

rem 不明なファイルの確認。
findstr "EXTRA" download.log > nul
if "%ERRORLEVEL%"=="0" (
echo ダウンロード先に妙なファイルがあるのを放っておきました。ご確認ください。
echo ----------------------------------------
findstr "EXTRA" download.log
echo ----------------------------------------
set ISCHANGE=1
)
rem 何かしらの特記事項があればキー入力があるまでストップ。
if "%ISCHANGE%"=="1" (
echo 画面を閉じるには何かキーを押してくだささい。
PAUSE > nul
)

計算結果の一時保存が汚くなりそうだったので避けました。
重複処理がありますが、軽快で簡単に使えるかと思います。
烏野の箱庭ページ烏野の箱庭 …動画・絵・漫画・脚本などの作品紹介
烏野のyoutubeページ烏野博史動画 …広告・実験・講習用映像のyoutubeチャンネル
烏野のyoutubeページうのひろし日々描描 …作画配信のyoutubeチャンネル
UNOUNOのPixiv …絵、デザイン資料、漫画、実験画像
karasuno10をフォローしましょうkarsauno10のTwitter …考え、宣伝
posted by karasuno10 at 19:04 | Comment(0) | PC技術 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: