在实际开发中,尤其是维护式开发,经常是接到一个需求,然后我们要么修改之前的文件,要么新增文件。如果涉及到的文件很多,在发布的时候还要一个一个文件找到通过FTP上传文件服务器,就很费时间。看到同事们搞了一个bat文件,只要把要发布的文件列好清单放到一个txt文件中,就很容易生成啦!现在就分享一下同事们写的那个bat文件,希望大家能提出意见:
@echo off
set source=filelist.txt
set input=E:\project\workspace\projectName\WebRoot
set output=E:\project\workspace\deployed
set dirname=%date:~0,4%-%date:~5,2%-%date:~8,2%
if not exist %output%\%dirname% mkdir %output%\%dirname%
if exist %output%\%dirname%\copy.log del /q %output%\%dirname%\copy.log
for /f %%a in (%source%) do (
echo f|xcopy /y /f %input%\%%a %output%\%dirname%\%%a>>%output%\%dirname%\copy.log
)
xcopy /y /f %source% %output%\%dirname%\>>%output%\%dirname%\copy.log
echo 文件已复制到%output%\%dirname%
pause
其中
input是项目所在的本地路径,一般对个bat文件我们项目是用来发布.class文件的所以input的路径写到WebRoot;
output是生成的文件夹所在的本地路径,即要发布的文件,其他的就不用太关注啦,全部复制,然后文件起名为copyfiles.bat
具体操作是:
在本地任意一个路径下,放入copyfiles.bat和filelist.txt文件,其中filelist.txt文件中分别列出要整理的.class文件,注意路径是相对于input的相对路径,即要从E:\project\workspace\projectName\WebRoot下找class文件,应该是
WEB-INF\classes\com\xx\xx\service\newhyx\xxxx\Exxxxxxx.class这种格式的!
然后,双击运行copyfiles.bat文件就会在output路径下生成一个以年月日命名的文件!
----------------------------------------------------------
我们测试环境是用jar包的形式发布文件的,上面bat文件生成好要发布的文件,在E:\project\workspace\deployed\xxxx-xx-xx下找到对应的WEB-INF文件夹,然后再ftp上找到
/xxxx/xxx_war.ear/xxx.war/WEB-INF/lib/xxxxxx.jar(我们ftp的路径),下载到本地,再用winRAR打开,将刚才的WEB-INF\classes下的com包拖到其中,覆盖掉旧的。。。
此外,对其他类型的文件,如.jsp、.xml等等文件,我们直接是通过ftp上传的,这个可能不同项目组处理的方式不同吧。
==================================
当然还有其他方式整理文件,如
首先创建一个1.bat
@echo off
set input=%3
set output=%4
set subdir=%1
set dirname1=%2\%subdir:~0,5%
echo 开始复制清单%1
if not exist %output%\%dirname1% mkdir %output%\%dirname1%
for /f %%a in (%1) do (
echo f|xcopy /y /f %input%\%%a %output%\%dirname1%\%%a>>%output%\%2\copy.log
echo %input%\%%a
)
echo 清单%1复制完成
然后再创建一个copysrcfiles.bat
@echo off
set input=E:\project\workspace
set output=D:\tool\COPY_QC
set dirname=%date:~0,4%-%date:~5,2%-%date:~8,2%
if exist %output%\%dirname%\copy.log del /q %output%\%dirname%\copy.log
dir /b *.txt>list
for /f %%b in (list) do (
call 1.bat %%b %dirname% %input% %output%
)
echo 文件已复制到%output%\%dirname%
pause
这种情况,可以对所有.txt文件都进行扫描,遇到txt文件中有具体以形容下面的内容就会生成相应的文件夹和文件
xx\src\com\cpic\ryx\web\insurance\SelectProductsAction.java
xx\WebRoot\insurance\addEpolicyApply.jsp
xx\WebRoot\config\product\zhusulvke.xml