关于@ScriptDir最后的\
帮助中对于这个宏是这样解释的@ScriptDir 当前运行中的脚本所在的目录(不包括结尾的反斜杠符号)。
但是@ScriptDir得到的路径,如果直接在磁盘下,比如D盘,得到的路径就是D:\,是带反斜杠符号的,这样写的时候,如果直接在磁盘下,运行的东西,生成的路径,都会是带两个\\的路径
比如脚本里写@ScriptDir & "\script"在D盘运行,得到的结果是d:\\script
问问各位这样会有什么影响呢,有人注意到没? 本帖最后由 lixiaolong 于 2011-4-4 11:12 编辑
回复 1# dearmb
这个我真没注意到,是BUG?还是...
不过写个用户定义函数就可以解决这个问题.$a = _DirPath(@ScriptDir & '\' & 'WINDOWS')
MsgBox(0, '', $a)
Func _DirPath($Path)
If StringInStr($Path, '\\') Then $Path = StringReplace($Path, '\\', '\')
Return $Path
EndFunc ;==>_DirPath 不知道,我感觉算个小BUG,目前我用的路径,\\运行还没问题,我只能认为windows会自动识别两个\的路径了
…… 厉害,这个都被你细心发现了~~ 厉害,这个都被你细心发现了~~
annybaby 发表于 2011-4-4 12:00 http://www.autoitx.com/images/common/back.gif
唉……我原来测试D:\带\,以为全带\,后面&路径就都没写\
致使脚本全部出错,就发现了……
@ScriptDir应用很多,造成的麻烦真的很麻烦…… 在我学au3不久,就发现这个问题了,于是不得不加个判断来解决这个问题。
象下面这样子:If StringInStr($TotalcmdDIR, "\\") Then $TotalcmdDIR = StringReplace($TotalcmdDIR, "\\", "\") 回复 5# dearmb
这个宏我几乎没有怎么用,一般都不写路径,有时会用下@DesktopDir 说到这个“\”让我想起最初用post时,一不小心加成了“//”,用了好久,一切正常,估计ie自己过滤了。 \\ WINDOWS会自动在目录里识别为\。关系不大的。。。 回复 1# dearmb
了解下windows的文件系统命名规则就行了 回复 9# boyhong
{:face (382):} 本帖最后由 水木子 于 2011-4-11 11:44 编辑
经常遇到这样的问题,无奈只好加个判断进行处理,我想这个宏的原型应该是这样的吧!
$a = DllStructCreate('CHAR')
DllCall('Kernel32.dll', 'int', 'GetCurrentDirectory', 'int', DllStructGetSize($a), 'ptr', DllStructGetPtr($a))
MsgBox(0, '当前目录', DllStructGetData($a, 1))
$a = '' 楼主真细心啊,这都发现了。 这个应该是新版修改了,以前确实没有反斜杠的!!! 感觉和C++的文件操作差不多
页:
[1]
2