Windows Batch Script用於機器集羣文件分發

先交代下背景,我們UI自動化有十幾臺機器,有一些配置文件需要放到每一臺機器的某個路徑下,重複性很高,很繁瑣

新時代的青年接受不了這種手工重複勞動,所以花了一個晚上弄了個windows batch腳本。老實說,windows batch真的很不習慣,毫無基礎,每一行都是現搜索現寫,如果是用Python就會便利很多,但是windows batch適用性更強,只要是個windows機器就能跑起來。

腳本工作原理:將機器放配置文件的那個盤共享出來。然後在機器集羣的某一臺機器上,手工放置新的配置文件,腳本也在這臺機器上。腳本相同目錄下,有兩個輸入文件,一個是FilePath.txt,指明瞭路徑,格式:
C:\xxx\uuu\config.xml
另一個是MachineList.txt,列出了要分發的所有機器,格式:
\\machinename_1\
\\machinename_2\
……
接下來從FilePath.txt讀取路徑,然後循環讀取每一行機器名,並將它和路徑進行拼接和處理,做成share folder路徑,例如\\machinename_1\C\xxx\uuu\config.xml

注意,share folder路徑裏盤符後面不能有冒號:,得去掉,腳本第四行就是去掉冒號的。

然後判斷在目標路徑下如果存在同名配置文件(老版本),則獲取文件修改時間,截取出日期,在文件名前加上修改日期前綴,以作備份之用。然後將新版本配置文件copy至這個路徑。

在修改老配置文件文件名時需注意,文件名不能包含/,有的機器上,文件修改時間格式:11/11/2016 11:11,所以還需要將/進行處理,換成-之類的。當然,這個需要在具體機器上敲命令,看看輸出是什麼格式的,再做定奪。

@echo off

setlocal enabledelayedexpansion

set /p spath=<FilePath.txt

set tpath1=%spath::=%

for /f "token=*" %%a in (MachineList.txt) do (

set tpath=%%a!tpath1!

if exist "tpath" (

for %%b in (!tpath!) do (

set mdatetime=%%~tb

set mdate=!mdatetime:/=-!

set prefix=!mdate:0,-9!
)

fro /f "delims=" %%F in('dir /a-d /b !tpath!') do (
ren !tpath! "!prefix!-%%F%"
)
)

copy "!spath!" "!tpath!"

)

這個禮拜太忙,太晚睡覺,週末我要安安靜靜做一隻考拉

口乞 目垂
口乞 目垂
口乞 目垂
口乞 目垂
口乞 目垂
…..
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章