SAS - 无法从Windows资源管理器

时间:2017-06-20 14:04:06

标签: windows sas

我在Windows 7上使用Base SAS 9.4。由于各种原因,下面详细说明,我的一些程序名称非常长。进一步加剧了这一点,程序存储在网络驱动器的深渊深处。尝试从Windows资源管理器打开时,这会导致问题。我认为问题在于SAS,但是如果没有,则用Windows标记问题。我希望通过配置文件或编辑注册表来解决这个问题。

要打开程序,我通常会双击Windows资源管理器中的.sas文件。这将在SAS消息框指示的短暂等待时间后打开增强编辑器:

  

SAS系统正在处理请求。请等一下......

当节目的全名(包括路径和扩展名)超过182个字符(即格式为\\network-location\a\bunch\of\....\folders\program path exceeding 182 char.sas)时,相同的" SAS系统正在处理请求"消息出现,但随后会生成Windows错误。

enter image description here

毫不奇怪,Windows没有提供任何解决方案。

当程序名称为完整路径正好是182个字符时,没有任何反应。我双击该程序,唯一的结果是在Windows资源管理器中选择该文件。如果我监控"流程"在Windows任务管理器中,双击此类程序时不会启动任何新进程。

如果程序名称的完整路径少于182个字符,程序将按照预期在增强编辑器中打开。

根据MSDN,最大路径为260个字符。显然,182远低于该限制。 SAS是唯一一个路径长度有问题的应用程序。例如,我可以复制文件名和扩展名,创建一个具有相同名称的新文本文档(加.txt)并在记事本,Notepad ++,Word,Wordpad,Emacs等中打开该文件。

我已经推导出两种解决方法,用于处理超过182个字符的名称。 如果我通过SAS.exe打开SAS,我可以通过打开对话框加载程序,路径超过182个字符就好了。但是,这不是一个好的解决方案,因为“打开”对话框不允许复制/粘贴路径。必须遍历整个文件路径。我也可以将这样的程序拖到SAS内的编辑器窗口中加载它。这也不是一个好的解决方案,因为程序只会在有一个空白的编辑器窗口时加载。如果程序被意外拖动到日志窗口,它将自动执行。此外,该程序不在方便的位置打开。它在增强编辑器的中间打开,必须手动调整大小。程序可以加载和执行,这让我相信有一些方法可以解决这个问题。似乎在加载文件的过程中,SAS违反了一些变量限制。

当然,人们会建议我使用不同的网络位置或更短的名称。对于前者,我需要使用特定的网络位置。对于后者,这些计划正在与各种报告并行开发。许多程序是相似的,报告中的相应参考(表格/图表编号)会多次更改/不会始终传达给我。通过经验,我发现处理这些不确定性的最可靠方法是简单地按照报告中给出的标签命名文件。否则,我需要采用不清楚的缩写,糟糕的组织实践,或引入中间步骤(如创建代码或索引程序的文档)。

编辑:根据Joe的评论,似乎“打开”对话框允许复制和粘贴特定文件名。可以通过Shift + Right Mouse Click > Copy as Path在Windows资源管理器中复制文件路径并将其粘贴到"文件路径"打开对话框中的框。

enter image description here

为了避免遍历树,可以在访问“打开”对话框之前更新“当前文件夹”。它位于增强编辑器的右下角。

enter image description here

“打开”对话框从当前文件夹位置设置为的任何位置开始。

1 个答案:

答案 0 :(得分:1)

我怀疑您的问题是您的260限制实际上是适用的。

双击程序文件时,它不会只是将路径复制到SAS。相反,会发生什么情况是调用SASOACT.exe,并发出与此类似的命令:

"C:\Program Files\SAS94\SASFoundation\9.4\core\sasexe\sasoact.exe" action=Open datatype=Access filename="%1" progid=SAS.Application.940

已经超过100个字符本身;据推测,在幕后,你最终会得到像

这样的东西
"C:\Program Files\SAS94\SASFoundation\9.4\core\sasexe\sasoact.exe -open ""%1"""

为您传递的内容增加了大约70或80个字符。因此260个字符的限制。

你应该使用其中一个解决方法 - 我个人更喜欢只是文件 - >打开,我自己,但实际上最适合你的一切都很好。您也可以考虑使用其他编辑器进行简单的双击操作,但您选择的任何编辑器仍会出现某些问题。

您还可以考虑让IT部门在路径名称较短的位置安装SAS,但实际上可能会节省10个字符左右。

至于粘贴;您可以像使用文件名一样轻松地将路径名粘贴到文件 - >打开对话框中。我不知道为什么你似乎不认为你可以,但我现在只是这样做,没有比任何其他文件夹对话更困难...

顺便说一下,要考虑的另一个解决方法是将驱动器号映射到网络路径。即,如果您的网络路径是

//myserver/projects/financial/projectnumber/.../

你将一些字母(让我们说R:任意)映射到那个根路径,// myserver / projects / financial / projectnumber,除了你在本地引用它之外没有任何改变。然后你可以使用:

R:\...\filename.sas

并且您不必浏览路径等等。您必须在要执行此操作的任何计算机上重复该映射过程,但如果这主要是关于您自己的工作流程,则不应该问题是一个问题。只是不要参考R:在程序本身内部,没有其他人会知道你已经改变了什么。