illcyt 发表于 2013-11-29 15:52:49

求一个函数:用于处理文件名路径含空格

本帖最后由 illcyt 于 2013-11-29 15:56 编辑

    大家都知道,启动一个应用程序可以用(startapp)来实现,但是使用过程中发现一个问题,以打开pdf为例说明:
1、添加“桌面”的路径至cad文件搜索支持路径里中,如下图:



2、pdf文件在电脑桌面上,此时,若使用(startapp)来启动pdf文件
;;示例1:
(startapp "JisuPdf.exe" "C:\\Documents and Settings\\Administrator\\桌面\\AutoLISP&DCL基础篇(高清版).pdf")


;;示例2:
(startapp "JisuPdf.exe" "C:\\Docume~1\\Administrator\\桌面\\AutoLISP&DCL基础篇(高清版).pdf")3、加载示例1代码时会出现错误:



4、加载示例2代码时会则可以正常打开pdf文件:



(以上测试的JisuPdf.exe为绿色版,且在cad文件搜索路径下)


【求函数】可实现将自动搜索文件路径是否带空格如:Documents and Settings(常用的包括Program Files)等等,若有空格则将其转换为Docume~1 (Progra~1),并返回转化后的路径,不胜感激!!




illcyt 发表于 2013-11-30 00:07:10

求高手解答,难道要这么沉下去了?非常感谢!!

自贡黄明儒 发表于 2013-11-30 12:52:58

(startapp "JisuPdf.exe" (findfile"AutoLISP&DCL基础篇(高清版).pdf"))行不行呀?

ll_j 发表于 2013-11-30 15:01:41

自贡黄明儒 发表于 2013-11-30 12:52 static/image/common/back.gif
(startapp "JisuPdf.exe" (findfile"AutoLISP&DCL基础篇(高清版).pdf"))行不行呀?

多数不行。
只接受“xxxxxx~1”这种文件名的程序多数是在早期的DOS平台下开发的(有些是部分移植到后来的各版本Win平台),他们只接受当时的八位文件名,即使不含空格,也不认识超过八位的长文件名。
为解决这个问题,windows会替这些程序吧长文件名解释成xxxxx~1的形式,最后一个数字是自动顺序排列的,没有试过自己改名,但很可能自己把长文件名替换成xxx~1这种模式,程序也未必会认。
所以,彻底解决问题的办法不是写程序,而是用跟上发展的软件。

illcyt 发表于 2013-12-1 14:21:00

ll_j 发表于 2013-11-30 15:01 static/image/common/back.gif
多数不行。
只接受“xxxxxx~1”这种文件名的程序多数是在早期的DOS平台下开发的(有些是部分移植到后来 ...

首先感谢回复

按照你的想法我试了一下
首先在D盘新建了一个名称为“testfilemynameisverylong”的文件夹,其超过8个字符,分别在文件家里放置两个不同的文件,一个文pdf文件,一个为chm文件。


测试代码如下:(startapp "JisuPdf.exe" "D:\\testfilemynameisverylong\\地震动谱分析入门 第二版.pdf")


(startapp "hh.exe" "D:\\testfilemynameisverylong\\建筑工程抗震设防分类标准.chm")经过测试,pdf文件打开异常



而chm文件则可以正常打开



这么以来,同样是(startapp)函数,打开不同类型的文件对路径的要求不一致,猜测可打开的应用程序有关系?那这样又如何解决呢,另外也测试了,在注册表里找到office程序路径,打开带空格的路径下的文件也有同样的问题,是否有高手能提供解决的思路呢,求教!

ll_j 发表于 2013-12-1 16:27:14

illcyt 发表于 2013-12-1 14:21 static/image/common/back.gif
首先感谢回复

按照你的想法我试了一下


不是pdf和chm的问题,而是急速pdf阅读器的问题,不妨上网看看这个软件是否有更新版本,没有的话,找一个其它的替代程序。

illcyt 发表于 2013-12-1 21:17:02

我试了最新的福新pdf软件,还是不行

不知道你是否有支持全文件名的pdf软件推荐,试试看

liu22737 发表于 2013-12-1 22:02:13

1,用open建一个bat文件,
2,用DOS把PDF文件备份到D:\; 或者用DIR加S加重定向再生成文件;应该会带~的路径
3,用startapp执行BAT文件

我觉得JISUPDF不是windows系统文件,调用时应该要加路经

以上只是设想,没实际操作

vormittag 发表于 2013-12-2 11:10:33

看看系统中的环境变量 用%USERPROFILE% 试试看能不能代替用户文件目录。

illcyt 发表于 2013-12-2 17:16:36

liu22737 发表于 2013-12-1 22:02 static/image/common/back.gif
1,用open建一个bat文件,
2,用DOS把PDF文件备份到D:\; 或者用DIR加S加重定向再生成文件;应该会带~的路径 ...

JISUPDF这个是为了省事下了个绿色版的,并且放置搜索路径下了的,所以调动可以直接(startapp)

你的想法我试试看
页: [1]
查看完整版本: 求一个函数:用于处理文件名路径含空格