windows - SAS-无法从Windows资源管理器加载带有长名称的程序

标签 windows sas

我在Windows 7上使用Base SAS 9.4。出于各种原因(下面将详细介绍),我的某些程序名称非常长。进一步加剧了这一点,程序存储在网络驱动器的深处。尝试从Windows资源管理器打开时,这会导致问题。我相信问题出在SAS上,但已经用Windows标记了问题,以防万一。我希望有某种方法可以通过配置文件或对注册表进行编辑来解决此问题。

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

The SAS System is processing requests. Please wait...



当程序的全名(包括路径和扩展名)超过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,写字板,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

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

最佳答案

我怀疑您的问题是您的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个字符。

您应该使用一种解决方法-我个人更喜欢仅file-> open,但是实际上最适合您的方法都可以。您也可以考虑使用其他编辑器来执行简单的双击操作,尽管您选择的任何编辑器仍然存在一些问题。

您也可以考虑要求IT部门在路径名较短的位置安装SAS本身,尽管实际上可以节省10个左右的字符。

至于粘贴;您可以将路径名和文件名一样容易地粘贴到file-> open对话框中。我不知道为什么您似乎不认为可以,但是我现在这样做的难度不比任何其他文件夹对话框大...

顺便说一下,要考虑的另一种解决方法是将驱动器号映射到网络路径。也就是说,如果您的网络路径是
//myserver/projects/financial/projectnumber/.../

您将一些字母(任意说R :)映射到该根路径,//myserver/projects/financial/projectnumber,除了在本地引用方式外,它没有任何其他更改。然后,您可以使用:
R:\...\filename.sas

而且,您不必导航路径等。您必须在要对其执行此操作的任何计算机上重复该映射过程,但是如果这主要与您自己的工作流程有关,那不应该成为问题。只是不要引用R:在程序本身内部,并且没有其他人会知道您已进行任何更改。

关于windows - SAS-无法从Windows资源管理器加载带有长名称的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44655300/

相关文章:

sql - 使用 proc 转置计算观察次数

java - 在 java 应用程序中使用 winapi

windows - 批处理文件中的 net use - 提示"is"

c# - UWP x :Bind with time

c++ - system() 函数找不到可执行文件的可能原因是什么?

windows - 重命名文件模式窗口批处理

sql - 在 SQL 中,HAVING 是在 SELECT 之前还是之后处理?

sas - 数据集的排序顺序

sas - 什么是 SAS 格式 8.

sql - PROC SQL 类操作符