![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-02 06:50 |
共 48,037 主题排行 / 350,122 发帖 / 今日 2 篇 / 48,250 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » DOS COMMAND編寫對遠端多台主機檔案進行更新的腳本 |
| 可打印版本 802 / 1 |
| 第1楼 ymtien | 发表于 2006-10-20 22:52 |
| 初级用户 发帖 11 积分 36 | |
|
DOS COMMAND編寫對遠端多台主機檔案進行更新的腳本 前言:
在管理Winodw系統主機時,我們常會利用到DOS Command 指令或是wsh(Windows Script Host)之類的指令語法編寫管理用的Scripts,進階一點的管理者甚致會自己利用vbscript、javascript、vb等程式語言編寫所需的管理程式工具,在管理多台遠端主機時,我們常會需要做檔案更新的工作,但如果是管理10台、20台或是更多主機時,如果一台一台的更新,那會是很煩人又很浪費時間的工作,如果對程式不太熟,或是就算用工具軟體來做更新的工作,但如果是需付費的也有版權的問題,這邊我自己編寫了一個利用DOS Command編寫的一個DOS Scripts提供需要的朋友! 實 作: 一.準備工作: 1.首先我們在Maintain用的主機和其它你每天要管理的主機上建立一組有讀取權限的帳號讓管理主機可以讀取其它主機。 2.在防火牆及被管理主機上請開放遠端共享給Maintain用的主機。 二.再來介紹這個scripts的組成檔案有那些 1. ip.ini ---> 這個檔案是記錄我們要更新的主機有那些,把你要更新的主機ip和Hostname加到這個檔案裡並命名為ip.ini存檔就可以了。 --------------------------------------檔案內容 ------------------------------------ 192.168.1.1WEB1 192.168.1.2WEB2 192.168.1.3WEB3 --------------------------------------------------------------------------------------- 2. Log資料夾 --->這是要放置log記錄檔的資料夾,建立一個叫Log的資料夾就可以了。 三.接下來就是程式主體了 3. Start_Update.bat ---> 這支Scripts是我們要執行更新工作的檔案,把以下原始碼copy起來存成Start_Update.bat並存檔。 --------------------------------------原始碼 ------------------------------------ @echo off :input_source mode con lines=30 title 遠端主機檔案更新程序 color 1f cls echo-------------------------------- 執行檔案更新程序 ----------------------------- echo請選擇執行項目後按[Enter]鍵執行 echo開始更新請按 (1) 遠端主機列表請按 (2) echo說明請按 (3) 查看更新記錄請按 (4) 退出請按 (0) echo------------------------------------------------------------------------------------- set source=: set /p source=請輸入執行項目: set "source=%source:"=%" :: 上面這句為判斷%source%中是否存在引號,有則剔除。 if "%source%"==":" goto input_source if "%source%"=="0" exit if "%source%"=="1" goto update if "%source%"=="2" goto list if "%source%"=="3" goto readme if "%source%"=="4" goto log set id = :update start Start_Update.bat cls mode con lines=35 color 8e title 遠端主機檔案更新 echo------------------------------------------------------------------------------------- echo--- 即將開始對以下位置遠端主機進行檔案更新 --- echo確定請按[Enter] echo------------------------------------------------------------------------------------- echo ------------------------------------------------------------------------------------- type ip.ini echo ------------------------------------------------------------------------------------- pause>nul del Log\*.txt FOR /F "eol=;" %%i in (ip.ini) do sync.bat %%i %1 pause>nul goto input_source :list cls mode con lines=30 color 8e title 更新主機列表 echo------------------------------------------------------------------------------------ echo--- 遠端主機列表 --- echo------------------------------------------------------------------------------------ echo------------------------------------------------------------------------------------ echo 主機IP:主機名稱: type ip.ini echo------------------------------------------------------------------------------------ echo請按任意鍵返回上一步... pause>nul goto input_source :readme cls mode con lines=30 color 8e title 操作說明 echo----------------------------------------------------------------------------------- echo--- 操作說明 --- echo1. 如果要新增或刪除更新的主機位置,請直接修改IP.INI檔。 echo2. 修改上傳檔案主機檔案位置,請修改sync.bat的第十三行 echoxcopy c:\你自定的檔案位置\*.*Z:\/s /e /y /z /f echo將 " c:\你自定的檔案位置\ "改為上傳檔案的放置位置。 echo echo3. 修改遠端主機上檔案的放置位置,請修改sync.bat的第七行 echonet use "Z:\\%1\c$\update" 遠端主機檔案放置位置。 echo----------------------------------------------------------------------------------- echo請按任意鍵返回上一步... pause>nul goto input_source :log cls mode con lines=42 color 8e title 更新主機列表 echo----------------------------------------------------------------------------------- echo--- 檔案更新記錄 --- echo----------------------------------------------------------------------------------- type Log\synclog.txt echo請按任意鍵返回上一步... pause>nul goto input_source 4. sync.bat --->這支是執行程式要呼叫執行檔案更新的Scripts, 把以下原始碼copy起來存成Start_Update.bat並存檔。 說明: 1. xcopy c:\test\*.*Z:\/s /e /y /z /f 這行請修改為你要上傳檔案的放置位 置。 2. net use z: \\%1\c$\update 這行請修改為你要上傳檔案放置在遠端主機上的位置, 要上傳檔案的所有主機,檔案放置位置一定要一致 -------------------------------------原始碼 ------------------------------------ @echo off rem **************************************************************** rem *File Name : SYNC.BAT* rem *Update the files by xcopy command* rem **************************************************************** net use z: \\%1\c$\update echo Server IP:%1 >> Log/synclog.txt date/T >> Log/synclog.txt time /T >> Log/synclog.txt echo ---------------------------------------------------------------- @echo on xcopy c:\test\*.*Z:\/s /e /y /z /f @echo off rem ----- Error Messages -------------------------------------------- if errorlevel 1 goto nofiles if errorlevel 2 goto abort if errorlevel 4 goto lowmemory if errorlevel 5 goto write_error if errorlevel 0 goto succeed :succeed net use z: /delete echo %1: Update is succeed! >> Log/synclog.txt echo ******************************************************************* echo %1: Update is succeed! echo ******************************************************************* echo -------------------------------------------------------------- >> Log/synclog.txt goto finish :nofiles echo %1: Can't find files of the update data! >> Log/synclog.txt echo ******************************************************************* echo %1: Can't find files of the update data! echo ******************************************************************* echo -------------------------------------------------------------- >> Log/synclog.txt goto quit :abort echo %1: The copy operation is end by the user![CTRL+C] >> Log/synclog.txt echo ******************************************************************* echo%1: The copy operation is end by the user![CTRL+C] echo ******************************************************************* echo -------------------------------------------------------------- >> Log/synclog.txt goto :quit :lowmemory echo %1: Out of Memory or Out of drive space! >> Log/synclog.txt echo %1: Can't find drive or command error !>> Log/synclog.txt echo ******************************************************************* echo%1: Out of Memory or Out of drive space! echo%1: Can't find drive or command error ! echo ******************************************************************* echo -------------------------------------------------------------- >> Log/synclog.txt goto quit :exit echo %1: Write error!>> Log/synclog.txt echo ******************************************************************* echo %1: Write error! echo ******************************************************************* echo -------------------------------------------------------------- >> Log/synclog.txt goto quit :quit net use z: /delete echo %1: Update faild!>> Log/synclog.txt echo ******************************************************************* echo %1: Update faild! echo ******************************************************************* echo -------------------------------------------------------------- >> Log/synclog.txt goto finish :finish echo%1:檔案已更新完畢... echo ---------------------------------------------------------------------------------- 五.測試看看囉: 全部都設定ok之後,在管理主機上執行Start_Update.bat這支Scripts,就會自動把你要更新的檔案全部上傳到所有需要更新檔案的主機上囉,幾十台主機不到幾分鐘就全部更新完畢,如果再加上排程,還可以自定更新時間喔!是不是很方便又很簡單呢! 作者:小田仔 2006/10/15 |
|
| 第2楼 electronixtar | 发表于 2006-10-20 23:04 |
| 铂金会员 发帖 2,672 积分 7,493 | |
|
不错哦~~是不是多发了一份?
NT Batch 的很多技巧也没有用上,呵呵 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |