关于改变工作目录问题[已解决]
本帖最后由 .Simba 于 2020-7-1 11:09 编辑代码如下:
#include <MsgBoxConstants.au3>
Example()
Func Example()
FileSaveDialog('保存', @WorkingDir, '', 16, 'tes.txt')
FileChangeDir(@ScriptDir & '\test')
FileSaveDialog('保存', @WorkingDir, '', 16, 'tes.txt')
EndFunc ;==>Example
脚本的时候测试好好的,编译成 EXE 放到另外一个目录运行就不行了,总是莫名其妙的指向我的一个游戏目录,这个函数是不是我用错了?
这段没问题 afan 发表于 2020-6-30 22:20
这段没问题
但是编译后,换目录就变了。 .Simba 发表于 2020-6-30 23:01
但是编译后,换目录就变了。
我说这段代码没问题,当然包括编译后同样没问题。
你既然这么确定我就不说了。 afan 发表于 2020-6-30 23:06
我说这段代码没问题,当然包括编译后同样没问题。
你既然这么确定我就不说了。
我再试试,我这里确实变了( ̄ε(# ̄) @WorkingDir 当前或活动的工作目录. 当脚本位于驱动器根目录时仅包括尾部的反斜杠.
所以同时有跑游戏?
@ScriptDir 当前运行脚本的所在目录. 当脚本位于驱动器根目录时仅包括尾部的反斜杠.<---- 試試這 yohoboy 发表于 2020-6-30 23:31
@WorkingDir 当前或活动的工作目录. 当脚本位于驱动器根目录时仅包括尾部的反斜杠.
所以同时有跑游戏?
...
他这段代码没有问题,不管同时在干什么,包括其它程序造成的工作目录变动。
如有问题肯定不是这段代码。 yohoboy 发表于 2020-6-30 23:31
@WorkingDir 当前或活动的工作目录. 当脚本位于驱动器根目录时仅包括尾部的反斜杠.
所以同时有跑游戏?
...
我也是按照帮助文档里操作的,加了个反斜杠貌似有作用。
FileChangeDir(@ScriptDir & '\test')
Local $fFile = FileSaveDialog('保存', @WorkingDir & '\', '保存(*.*)', 16)
afan 发表于 2020-7-1 09:25
他这段代码没有问题,不管同时在干什么,包括其它程序造成的工作目录变动。
如有问题肯定不是这段代码。
我貌似找到原因了,我定了一个全局的目录制定,在工具启动的时候会读取这个目录地址,我修改后,保存打开的目录就是这个全局的目录。
Global $TEST_PATH .Simba 发表于 2020-7-1 10:08
我貌似找到原因了,我定了一个全局的目录制定,在工具启动的时候会读取这个目录地址,我修改后,保存打开 ...
所以说提供的测试代码一定要(精简到)能重现问题,反之像这种没问题的代码就无任何意义了。 另外,@WorkingDir 一般没必要的情况下少用,因为这是系统随时会变的宏,任何外部程序都可能使之改变,比如有交互的打开、保存对话框,甚至无交互。 afan 发表于 2020-7-1 10:19
另外,@WorkingDir 一般没必要的情况下少用,因为这是系统随时会变的宏,任何外部程序都可能使之改变,比如 ...
原来是这样,我想把问题复现,但是按照逻辑走一遍貌似有不能单独分离出来。代码中我指定了Mr3目录,工具会调用这个目录的执行文件。我设置这个游戏目录的变量后,在保存文件和打开文件就会出现在这个目录下。
我试试直接指定要保存的目录看看,是不是直接指定目录就不用 FileChangeDir() 这个函数了? .Simba 发表于 2020-7-1 10:37
原来是这样,我想把问题复现,但是按照逻辑走一遍貌似有不能单独分离出来。代码中我指定了Mr3目录,工具 ...
固定目录本来就可以直接指定,用 @WorkingDir 是不符合逻辑的。直接指定不需要 FileChangeDir() afan 发表于 2020-7-1 11:27
固定目录本来就可以直接指定,用 @WorkingDir 是不符合逻辑的。直接指定不需要 FileChangeDir()
明白了,谢谢A大。
页:
[1]