I can believe fly.

Showing posts with label bat. Show all posts
Showing posts with label bat. Show all posts

Monday, May 8, 2017

编译directx-jun2010的Effects11工程引发的问题

Microsoft DirectX SDK (June 2010)简称directx-jun2010
在编译directx-jun2010\Samples\C++\Effects11\Effects11_2013.sln工程出错:


找不到directx-jun2010自己相关的头文件,查了一下工程的配置属性,发现VC++目录里使用到环境变量DXSDK_DIR,
由于在构建环境里,directx-jun2010是在其它环境安装后直接拿数据来用的,这就导致了DXSDK_DIR是不存在的。



我是使用nant脚本编译工程的,试着在编译前增加DXSDK_DIR的环境变量,但这对VC来说是不生效的


查询了devenv语法(https://msdn.microsoft.com/zh-cn/library/ms241275.aspx),发现它有一个开关/useenv, 作用是将环境变量加载到“VC++ 目录”对话框中。我尝试着将vccompile改为vccompile_useenv。


结果出现另一个错误


需要调用vsvars32.bat重新初始化VC的环境变量

exec不在同一个进程里,vsvars32.bat的调用无效。
最后,尝试重新设置INCLUDE,LIB环境变量以便工程编译中能找到相关的依赖文件,以下是编译脚本












Tuesday, May 18, 2010

bat简易解决你的需求

bat简易解决你的需求

最近写了两个bat,觉得挺受用的,再次感觉bat的强大
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
GetData.bat 本地工作目录 文件列表
用途: 根据文件列表copy共享数据到本地
正文:

@echo on

set workdir=%1
set listfile=%2
@set user=ysl
@set pwd=ysl123
FOR /F "tokens=1,2* delims=," %%i in (%listfile%) do (
if "%%i"=="" goto exit
if "%%j"=="" goto exit
@echo %%i %%j
@if not exist "%workdir%\%%j\." mkdir %workdir%\%%j
@net use %%i /d /y
@net use %%i /user:%user% %pwd%
@xcopy /Y/E %%i\*.* %workdir%\%%j)
:exit

经典说明:
1. 该篇的经典之处在于FOR /F的用法,此文中用到FOR的意思是
从文件%listfile%中读取每行数据,并以逗号作为分隔符将获取的数据传给变量%%i,%%j,
假如名中的%%i 你用%%a,那后就可以按顺序%%a,%%b,%%c捕捉到对应的值
另外,记住此处变量获取值使用的是两个百分号%%在前面。
关于for的使用详细可参考 hi.baidu.com/cjiabing/blog/item/76bc51b5fe79bec937d3ca46.html

¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

GetLog.bat 日志文件
用途: 从日志文件里获取相关的错误数据
正文:

set logfile=%1
@echo ----------------error count-----------
@type %logfile% | find "error(s),"
@findstr /i "solution_file 个错误 已用时间" "%logfile%"
@echo ----------------error info-----------
@type %logfile% | find ": error "
@echo ----------------make setup info-----------
@type %logfile% | find "Error in script"

@echo ----------------get log end-----------


说明:
该篇的经典在于findstr的用法,@findstr /i "solution_file 个错误 已用时间" "%logfile%"
其含义指的是从%logfile%文件中读取每行数据中含有solution_file 个错误 已用时间任一个字符串的数据的信息
如:
[echo] solution_file=E:\tools\Src\MergeLib\MergeLib.vcproj
[exec] 0 个错误
[exec] 已用时间 00:00:02.91

ps; 查找多字符串的信息,碰到中文则放后面且加有引号
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

Thursday, March 5, 2009

The Regulator工具介绍

  今天不小心又用上了正则表达式,记得有段时间用得挺起劲,现都差点把它给忘了。
也记得,之前一直使用一个免安装的解析正则表达式的工具,现找不到了;然后不小心就装上RegulatorSetup.msi,这个有点复杂。引用下网上的介绍“The Regulator 就是其中的佼佼者(被列入MSDN上的知名文章《Ten Must-Have Tools Every Developer Should Download Now》)。The Regulator官方网站http://royo.is-a-geek.com/iserializable/regulator/”
   下面简单说下:



ps:小道消息,要学习正则表达式可以到网上找份资料,名叫“正则表达式30分钟入门教程.mht”

Thursday, February 26, 2009

wget使用经验

使用wget命令,取远程数据,远程有几层目录,在本地就会跟着创建.
如,执行wget -c -r -np -nH ftp://192.168.11.10/public/yusulian/ysl/20090225
==>结果会在本地跟着创建public/yusulian/ysl/20090225
有一个--cut-dirs=NUMBER 参数,即忽略远程目录的层数,
1. 如果是手工执行的时候,你可以自觉的写上要忽略的层数
如,执行wget -c -r -np -nH --cut-dirs=3 ftp://192.168.11.10/public/yusulian/ysl/20090225
==>结果在本地只会创建20090225,把前三层忽略了.
2. 如果是想写脚本自动跑,由于不同的url,目录层级可能不同
你只能在脚本外层,除了初始化url,也需要加上每个url要忽略的目录层数

ps:误区
有人提醒说,把-cut-dirs设为10000,反正目录不为这么多
结果,试了一下才发现,这不是把子目录也给忽略掉了嘛.