Shell函数为何不支持带空格的路径?
时间:2011-08-17
来源:互联网
Private Sub Command1_Click() Dim SHa Dim lj lj = "D:\Program Files\Microsoft Visual Studio\VB98\TsDig\data\1.jpg" SHa = Shell("c:\windows\system32\mspaint.exe " & lj, 1) End Sub
如代码中lj变量中有多个空格,该如何解决?
运行代码告诉没发现文件"D:\Program.png"
作者: zdingyun 发布时间: 2011-08-17
作者: zdingyun 发布时间: 2011-08-17
Win下的带空格的路径表示:
用缩写。比如c:\Program Files缩写为c:\Progra~1
再来刨根问底查查这个命名是否有规则,于是找到:
采用8个字符缩写,即写头六个字母(略去空白),另加波浪号和1,首字母不足六个字母,略去空白,用了第二个词的字母
,凑成六个。
例如:"Documents and Settings“ -- DOCUME~1、"Local Settings" -- LOCALS~1
(注意略去空白,用了第二个词的字母,凑成六个,再加波浪号和1)。
如果多个文件前6字符一样怎么办?为什么最后是1而不是0或者其他数字呢?看看这个例子:
假设下面是你的C盘根目录中的文件夹:
Program Files
Progra file
Progra zhang
则三个目录分别表示为:C:\Progra~1; C:\Progra~2; C:\Progra~3;
作者: ybh37 发布时间: 2011-08-17
lj = chr(39) & "D:\Program Files\Microsoft Visual Studio\VB98\TsDig\data\1.jpg" & chr(39)
作者: patrickkong 发布时间: 2011-08-17
VB code
Private Sub Command1_Click() Dim SHa Dim lj lj = "D:\Program Files\Microsoft Visual Studio\VB98\TsDig\data\1.jpg" SHa = Shell("c:\windows\system32\mspaint.exe """ & lj & """", 1) End Sub
作者: sysdzw 发布时间: 2011-08-17
VB code
lj = """D:\Program Files\Microsoft Visual Studio\VB98\TsDig\data\1.jpg"""
作者: chinaboyzyq 发布时间: 2011-08-17
VB code
Private Sub Command1_Click() CommonDialog1.CancelError = True On Error GoTo ErrHandler CommonDialog1.Flags = cdlOFNHideReadOnly CommonDialog1.Filter = "JPEG Files" & "(*.jpg)|*.jpg" CommonDialog1.FilterIndex = 2 CommonDialog1.ShowOpen 'Text1 = CommonDialog1.FileName Dim SHa SHa = Shell("c:\windows\system32\mspaint.exe " & CommonDialog1.FileName, 1) Exit Sub ErrHandler: Exit Sub End Sub
带空格的CommonDialog1.FileName不能正确传递,如果CommonDialog1.FileName中没空格就能正确传递.
作者: zdingyun 发布时间: 2011-08-17
VB code
SHa = Shell("c:\windows\system32\mspaint.exe ""D:\Program Files\Microsoft Visual Studio\VB98\TsDig\data\1.jpg""", 1)
作者: chinaboyzyq 发布时间: 2011-08-17
作者: cuizm 发布时间: 2011-08-17
支持,注意要用双引号引起来。
VB code
lj = """D:\Program Files\Microsoft Visual Studio\VB98\TsDig\data\1.jpg"""
没用的,照样出错.

作者: zdingyun 发布时间: 2011-08-17
转换成短路径就可以了
那如何用代码转换?
作者: zdingyun 发布时间: 2011-08-17
引用 8 楼 cuizm 的回复:
转换成短路径就可以了
那如何用代码转换?
短路径仍不行:
VB code
Dim SHa SHa = Shell("c:\windows\system32\mspaint.exe D:\Progra~1\Micros~1\VB98\TsDig\data\1.jpg", 1)
作者: zdingyun 发布时间: 2011-08-17
引用 8 楼 cuizm 的回复:
转换成短路径就可以了
那如何用代码转换?
作者: sysdzw 发布时间: 2011-08-17
fso里面的getfile("长文件名").shortname
script run time
作者: chinaboyzyq 发布时间: 2011-08-17
引用 10 楼 zdingyun 的回复:
引用 8 楼 cuizm 的回复:
转换成短路径就可以了
那如何用代码转换?
我想是你的D:\Program Files\Microsoft Visual Studio\VB98\TsDig\data\1.jpg 这个路径不存在吧?复制到开始-运行里面回车看看能不能打开。
这个路径存在不存在见图:

作者: zdingyun 发布时间: 2011-08-17

作者: ybh37 发布时间: 2011-08-17
引用 5 楼 chinaboyzyq 的回复:
支持,注意要用双引号引起来。
VB code
lj = """D:\Program Files\Microsoft Visual Studio\VB98\TsDig\data\1.jpg"""
没用的,照样出错.
查看你的路径是否正确,我测试有空格加双引号没问题。
作者: chinaboyzyq 发布时间: 2011-08-17
作者: chinaboyzyq 发布时间: 2011-08-17
Dim fso As New FileSystemObject
fso里面的getfile("长文件名").shortname
script run time
fso获得短文件名的方法:
x=fso.getfile("长文件名").shortname
作者: chinaboyzyq 发布时间: 2011-08-17
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28