dearmb 发表于 2011-4-4 10:16:41

关于@ScriptDir最后的\

帮助中对于这个宏是这样解释的
@ScriptDir 当前运行中的脚本所在的目录(不包括结尾的反斜杠符号)。

但是@ScriptDir得到的路径,如果直接在磁盘下,比如D盘,得到的路径就是D:\,是带反斜杠符号的,这样写的时候,如果直接在磁盘下,运行的东西,生成的路径,都会是带两个\\的路径
比如脚本里写@ScriptDir & "\script"在D盘运行,得到的结果是d:\\script
问问各位这样会有什么影响呢,有人注意到没?

lixiaolong 发表于 2011-4-4 11:01:02

本帖最后由 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

dearmb 发表于 2011-4-4 11:05:31

不知道,我感觉算个小BUG,目前我用的路径,\\运行还没问题,我只能认为windows会自动识别两个\的路径了
……

annybaby 发表于 2011-4-4 12:00:38

厉害,这个都被你细心发现了~~

dearmb 发表于 2011-4-4 12:23:59

厉害,这个都被你细心发现了~~
annybaby 发表于 2011-4-4 12:00 http://www.autoitx.com/images/common/back.gif

唉……我原来测试D:\带\,以为全带\,后面&路径就都没写\
致使脚本全部出错,就发现了……
@ScriptDir应用很多,造成的麻烦真的很麻烦……

happytc 发表于 2011-4-4 13:52:11

在我学au3不久,就发现这个问题了,于是不得不加个判断来解决这个问题。
象下面这样子:If StringInStr($TotalcmdDIR, "\\") Then $TotalcmdDIR = StringReplace($TotalcmdDIR, "\\", "\")

annybaby 发表于 2011-4-4 15:50:02

回复 5# dearmb


    这个宏我几乎没有怎么用,一般都不写路径,有时会用下@DesktopDir

bakefish 发表于 2011-4-4 16:56:58

说到这个“\”让我想起最初用post时,一不小心加成了“//”,用了好久,一切正常,估计ie自己过滤了。

boyhong 发表于 2011-4-4 18:41:25

\\ WINDOWS会自动在目录里识别为\。关系不大的。。。

netegg 发表于 2011-4-4 18:55:01

回复 1# dearmb
了解下windows的文件系统命名规则就行了

netegg 发表于 2011-4-4 18:56:01

回复 9# boyhong


    {:face (382):}

水木子 发表于 2011-4-4 19:23:13

本帖最后由 水木子 于 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 = ''

小A 发表于 2011-4-4 19:24:14

楼主真细心啊,这都发现了。

131738 发表于 2011-4-4 20:18:45

这个应该是新版修改了,以前确实没有反斜杠的!!!

kadingxiaodi 发表于 2011-4-4 21:43:54

感觉和C++的文件操作差不多
页: [1] 2
查看完整版本: 关于@ScriptDir最后的\