
こんにちは。ナガオカ(@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
広告
参考書籍
プログラミング のレッスンに興味がある方、レッスン内容を聞いてみたい方、なんなりとお問い合わせください。
無料体験レッスンもありますのでお気軽にどうぞ!!!
