[Windows]batでネットワークを超えてファイルをコピーする

bat network バッチ ネットワーク 超える

 

 

こんにちは。ナガオカ(@boot_kt)です。

 

Windowsのbatで、ネットワーク越しにファイルコピーするプログラムを解説します

この記事のザックリした内容
◆対象読者

  • Windowsのbatでネットワーク越しにファイルコピーしたい

 

 

 

 

 

ネットワーク越しのファイルコピーのbatプログラムのソースコード

基本的にWindowsのbatとかDOSプロンプトはネットワークを使えません

 

C:\hogehoge・・・」みたいなアドレスは扱えるのですが、

\\hoge\fuga・・・」みたいなアドレスは扱えません

 

 

じゃ、どうやるのかと言うと、

 

ネットワークドライブ

 

を扱います

 

ネットワークドライブとは、簡単に言うと、ネットワークにある共有フォルダとかをコンピュータに内蔵されたドライブのように見せるものです

ドライブとは、CドライブとかDドライブとかのこと
ドライブがよく分からないなら、内蔵ハードディスクや内蔵SSDのことと思ってください

 

詳しくは別途ググってください

 

 

ってことで、コピー先であるネットワーク上の共有フォルダをネットワークドライブにしてしまえば

 

分からんかったら聞いてね♪

 

>> GitHub/gabekore/bat/file_copy_to_network/

rem ********************************************
rem  File Copy to Network
rem    ◆期待する引数:
rem      %1:コピーしたいファイル(←ドラッグ&ドロップ)
rem          1個だけを想定
rem    ※コピー先のネットワークは固定
rem    ◆注意
rem      動作確認したものを紙に印刷してそれを見ながら再度打ちました
rem      その際、多少コードを変更していますが動作確認してません
rem      変な不具合あるかも知れません
rem ********************************************

@echo off

rem 本batの起動ディレクトリをカレントディレクトリにする
cd /d %~dp0

rem コピーしたいファイルのフルパス
set TARGET_FILE=%1
rem コピーしたいファイル名+拡張子のみ
set TARGET_FILE_NAME=%~n1%~x1

set YYMMDD=%date:~2,2%%date:~5,2%%date:~8,2%

set NETWORKDRIVE=X:

set NET_USE_CMD=net use %NETWORKDRIVE%

rem /Y オプションは上書き確認
set COPY_CMD=copy /Y %TARGET_FILE% %NETWORKDRIVE%\.

rem 処理実行
call :NETUSE_AND_COPY \\NETWORK-MACHINE1\Hoge\Fuga\
call :NETUSE_AND_COPY \\NETWORK-MACHINE2\Hoge\Fuga\
call :NETUSE_AND_COPY \\NETWORK-MACHINE3\Hoge\Fuga\

exit /b 0

rem ********************************************
rem  サブルーチン:NETUSE_AND_COPY
rem    ◆期待する引数:
rem      %1:コピー先のパス
rem    ◆処理順序:
rem      1.ネットワークドライブを作る
rem      2.サーバーのファイルをbkup(初回のみ)
rem          bkupファイルが無いときだけ実行
rem          あるならやらない
rem          バックアップファイルは「.yymmdd」を付与
rem      3.copyする
rem      4.ネットワークドライブを削除
rem ********************************************
:NETUSE_AND_COPY

rem 1.
%NET_USE_CMD% %1

rem 2.
set SERVER_FILE=%NETWORKDRIVE%\%TARGET_FILE_NAME%
if not exist %SERVER_FILE%.%YYMMDD% (
    copy %SERVER_FILE% %SERVER_FILE%.%YYMMDD% 
)

rem 3.
%COPY_CMD%

rem 4.
%NET_USE_CMD% /delete

exit /b 0

 

広告




 

参考書籍

 


 

プログラミング のレッスンに興味がある方、レッスン内容を聞いてみたい方、なんなりとお問い合わせください。
無料体験レッスンもありますのでお気軽にどうぞ!!!

 

 

bat network バッチ ネットワーク 超える

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

Windows/Mac/Linuxを使う現役システムエンジニア&プログラマ。オープン系・組み込み系・制御系・Webシステム系と幅広い案件に携わる。C言語やC#やJava等数多くのコンパイラ言語を経験したが、少し飽きてきたので、最近はRubyやPython、WordPressなどのWeb系を修得中。初心者向けのプログラミング教室も運営中。オンライン・対面・出張等でプログラミングをレッスンします。