在脚本运行时,MATLAB找不到我下载的文件

时间:2015-09-02 20:51:51

标签: matlab

我的问题如上所述。我的脚本通过外部调用cmd来下载文件(使用系统函数然后使用.NET来生成按键)。问题是,当它试图打开我下载的这些文件(我下载时写的文本文件中的文件名)时,它找不到它们,导致错误。当我看到它失败后再次运行脚本时,它可以工作,但只能达到它试图再次下载/调用新文件的程度,它会遇到同样的问题。

在脚本运行期间下载的新文件是否以某种方式对搜索路径不可见?因为该文件夹绝对位于我的搜索路径中(因为它在脚本下载期间工作)。这并不是说它不能足够快地获取文件,因为它们几乎立即出现在我的文件夹中,并且我已经尝试了延迟以允许它识别它,但是没有#&# 39;工作要么。

我不确定是否注意脚本调用外部函数是否很重要,该函数尝试从我在主脚本中创建的.txt列表中读取文件。

有什么想法吗?

下载文件的脚本如下所示:

NET.addAssembly('System.Windows.Forms'); sendkey = @(strkey) System.Windows.Forms.SendKeys.SendWait(strkey); system('start cygwinbatch.bat') pause(.1) sendkey(callStr1) sendkey('{ENTER}') pause(.1) sendkey(callStr2) sendkey('{ENTER}') pause(.1) sendkey('exit') pause(2) sendkey('{ENTER}')

但这不是我要问的主要原因:我确信当脚本调用它们时会发生下载,因为我看到它们出现在我调用的文件夹中。我更加困惑的是,为什么MATLAB在脚本运行时似乎并不知道它们在那里,我必须停止它并再次运行它以便识别我已经下载的那些。 / p>

谢谢,

亚伦

2 个答案:

答案 0 :(得分:2)

这里的答案可能是运行'rehash'功能。 Matlab在执行操作时不会查找新文件,并且在某些环境中即使在交互活动期间也会丢失新文件。

运行rehash函数会强制Matlab搜索其完整路径并确定是否有新文件。

我从未试图在操作过程中运行rehash。 ...

答案 1 :(得分:0)

我的猜测是,MATLAB解释器正在尝试展望未来,并根据文件系统在下载文件之前的样子快照来抛出错误。如果使用F9一次运行一行,您会得到不同的行为吗?如果是这种情况,那么您可以使用eval()阻止口译员向前看。