25 Oct 2016

批处理文件对字符串中空格的处理

收藏到CSDN网摘
在执行UG 2 ICEM tin几何模型转换时,文件路径带有空格时,处理不小心就会造成各种问题.以前写过UG2TIN的过程分析(见 链接1, 链接2).最近在没有部署ICEM或者没有Admin账户权限的机器上执行模型转换时遇到了各种问题.如之前分析过的,这个过程需要调用一个UG的probe函数来返回UG版本号,然后判断对应的vendor文件夹是否已经存在于ICEM的安装路径之中.由于UG版本更新非常快,远超ICEM,因此就造成ICEM的对应文件夹下找不到对应UG版本的vendor文件夹.被这个问题困扰了几周之后,决定重拾之前的分析,彻底搞清楚ug2tin的转换步骤.

这里 曾经说过,一切的根源都在于ug_run_script.cmd这个批处理.因此需要hack这个批处理的过程,将其中需要用到的几个环境变量都换成用户输入即可.具体hack步骤就不详细写了,都是简单的批处理.但是包含空格的路径确造成了很多麻烦.

对于用户输入的变量,可用%1~%9来截取,因为batch最多支持10个输入,第0个还是它自己.其实支持更多,只是默认处理10个,因为%10会被认为是%1加上一个字符0.顺手也解决这个问题,如果用户输入过多,每处理一个输入,就用shift这个命令将所有输入左移一次.那么原来的%2就会变成%1,原来的%3就会变成%2,以此类推.

解决输入参数的空格,记住两个tips就能高枕无忧:
1. 用%~1,%~2...来去掉输入参数的引号
2. set临时变量时,一律加上引号,这样即使拼接字符串也不会出错,例如: set "temp1=%~1\testpath1\test_file.txt"

最后在需要使用temp1的地方,记得也加上引号变成 "%temp1%" 即可.

No comments :

Post a Comment