Windows脚本之拷贝文件---简化工作
前言:
长期工作workbench的调试坏境,重复的拷贝执行文件到NFS文件系统中,花费大量的时间,因此写此文章的目的就是为了让工程师们尽量使用脚本等方法减轻工作,让我们有更多的时间学习,成长。。。
下面就简单介绍workbench下如何通过脚本拷贝执行文件:
1.拷贝脚本应与工程目录同级
2.如何执行脚本或修改脚本
鼠标移至copy.bat,右键open with-->Test Editor,则以文本方式打开脚本,此时可以根据需要修改脚本(脚本也可以在脚本所在目录,以其它编辑器打开)
该脚本可以适用于workbench任意类型的工程,只需要按照脚本注释的地方修改即可。datecmp.exe实现的功能是对比两个执行文件更新时间,写datecmp.exe原因有两个:1.生成的执行文件目录中可能会出现debug和no debug两个文件,故需要对比那个是最新的;2.测试直接在脚本中用 > 等 对比olddate和filedate时间,发现执行结果与预期结果不一致。实现datecmp.exe需要注意的点,因为olddate与filedate所携带的时间信息都带有空格,datecmp.exe在解析参数时会将空格后的另一部分,认作另外的参数,所以需要转换。
@echo off
::ctreate by maketuresetlocal enabledelayedexpansion
::setlocal enabledelayedexpansion %*% ->!*!
set execRouter = D:\datecmp.exe
echo /**************************二进制文件拷贝**********************************/
::设置搜索二进制文件的路径,根据实际情况修改
set scriptpath=%~dp0^ARMARCH7diab
::设置目的路径,根据实际情况修改
set destpath=H:\NFS
::初始化变量
set s = "0"
set olddate = 0
::for循环查找二进制文件,匹配(*.out),匹配内容根据实际情况修改
for /r %scriptpath% %%a in (*.out) do (
if "!s!" equ "" (
set s=%%a
set olddate=%%~ta
set filedate=%%~ta
)else (
call !execRouter! %%~ta !olddate!
if !errorlevel! gtr 0 (echo 更新二进制文件
set filedate=%%~ta
set s=%%a)
)
)
echo last copy file date time = !filedate!
echo.
if "!s!" neq "" (xcopy !s! !destpath! /s /y
echo.
echo DestPath = !destpath! )else (
echo !scriptpath! not find can copy file)
echo /**************************二进制文件拷贝**********************************/
pause
鼠标移至copy.bat,右键open with-->System Editor,则是执行脚本。选择默认打开方式后,后面可以直接双击脚本