ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【IDL】使用SPAWN启动路径中带有空格的文件

2022-06-14 16:04:51  阅读:183  来源: 互联网

标签:SPAWN Files Temp 空格 IDL Program test txt


直接利用SPAWN启动外部程序或文件时,如果路径中含有空格,则启动失败。如下边的例子,我们想打开D:\Temp\Program Files\test.txt文件,则会弹出错误提示,从错误提示可以看出,系统自动将空格后边的路径截断了:

IDL> spawn, 'start D:\Temp\Program Files\test.txt' 


图 错误提示 

如果不输入start,如下所示,则不会弹出错误提示。

IDL> spawn, 'D:\Temp\Program Files\test.txt'


下面介绍几种方法,可以实现启动带空格路径的文件或程序。 

添加空格

这个是发现的最简单的方法,SPAWN执行的命令里边,只要在start后边加入””即可。如下所示:

IDL> ;加入hide关键字可以隐藏CMD弹出的界面

IDL> spawn, 'start "" "D:\Temp\Program Files\test.txt"', /hide

 

此方法同样可以实现打开文件名中带有空格的文件,例如同路径下的“test 1.txt”文件:

IDL> spawn, 'start "" "D:\Temp\Program Files\test 1.txt"', /hide

利用简写

在Windows系统中,IDL的SPAWN命令其实就是在执行CMD命令。所以我们从Windows的命名规则找到解决方法。

带空格路径会使用缩写,比如C:\Program Files缩写为C:\Progra~1。从这里可以看出是采用了8个字符缩写,即前六个字母(略去空白),另加波浪号和1(编号)。例如:

  • "Documents and Settings“ -- DOCUME~1
  • "Local Settings" -- LOCALS~1 (注意略去空白,前六个字母,再加波浪号和编号)。

如果同一路径下,带有空格且前六个字母相同的文件夹,就需要“~”后边的编号来区分了。假设下面是C盘根目录中的文件夹:

  • Program Files
  • Progra File
  • Progr ArcGIS

则三个目录分别表示为:C:\Progra~1; C:\Progra~2; C:\Progra~3。

注:如果文件夹名不足6个字母,比如abc,则使用abc~1即可。

注:后边的编号是按照文件夹创建时间的先后进行排序的,从1开始。

 

现在回到我们的例子,即打开“D:\Temp\Program Files\test.txt”文件,路径可以缩写为D:\Temp\Progra~1\test.txt,使用如下命令即可成功打开test.txt文件。

IDL> ;加入hide关键字可以隐藏CMD弹出的界面

IDL> spawn, 'start D:\Temp\Progra~1\test.txt', /hide

创建镜像

另外一种方法是利用CMD命令创建镜像,会自动在我的电脑生成一个虚拟硬盘Z盘(盘符不要与已有的盘符重复),操作如下:

IDL> ;利用subst可以创建镜像Z盘,指向目标目录"D:\Temp\Program Files"

IDL> ;然后就可以利用"Z: "替代"D:\Temp\Program Files",即"Z:\test.txt"

IDL> spawn, 'subst Z: "D:\Temp\Program Files"'

IDL> spawn, 'start Z:\test.txt', /hide

IDL> ;最后利用CMD命令删除创建的镜像即可

IDL> spawn, 'subst Z: /d'

快捷方式

可以利用创建快捷方式的方法。比如创建test.txt的快捷方式,剪贴到D盘根目录,便可以使用如下命令启动文件:

IDL> spawn, 'D:\test.txt.lnk', /hide

标签:SPAWN,Files,Temp,空格,IDL,Program,test,txt
来源: https://www.cnblogs.com/enviidl/p/16374957.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有