Windows Batch Script用于机器集群文件分发

来源:互联网 发布:java伪静态页面 编辑:程序博客网 时间:2024/06/18 06:01

先交代下背景,我们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 offsetlocal enabledelayedexpansionset /p spath=<FilePath.txtset tpath1=%spath::=%for /f "token=*" %%a in (MachineList.txt) do (set tpath=%%a!tpath1!if exist "tpath" (for %%b in (!tpath!) do (set mdatetime=%%~tbset 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!")

这个礼拜太忙,太晚睡觉,周末我要安安静静做一只考拉

口乞 目垂
口乞 目垂
口乞 目垂
口乞 目垂
口乞 目垂
…..
这里写图片描述

0 0
原创粉丝点击