我在Windows 7上使用Base SAS 9.4。由于各种原因,下面会详细介绍,我的一些程序名称很长。 进一步加剧,程序深藏在networking驱动器的深渊。 这在尝试从Windows资源pipe理器打开时会导致问题。 我相信问题在于SAS,但是如果没有,则用Windows标记问题。 我希望有一些方法来解决这个问题,通过configuration文件或编辑registry。
要打开一个程序,我通常双击Windows资源pipe理器中的.sas
文件。 这会在SAS消息框显示一个简短的等待期之后打开增强编辑器:
SAS系统正在处理请求。 请稍候…
当一个程序的全名(包括path和扩展名)超过182个字符(例如\\network-location\a\bunch\of\....\folders\program path exceeding 182 char.sas
)时,相同的“ SAS系统正在处理请求“消息出现,但随后出现Windows错误。
毫不奇怪,Windows没有提供任何解决scheme。
当程序名称是完整的path是182个字符时,没有任何反应。 我双击该程序,唯一的结果是在Windows资源pipe理器中select文件。 如果我监视Windows任务pipe理器中的“进程”,双击这样的程序时不会启动新的进程。
当程序名称是完整pathless于182个字符时,程序按预期在增强编辑器中打开。
根据MSDN ,最大path是260个字符。 显然,182远低于此限制。 SAS是唯一具有path长度问题的应用程序。 例如,我可以复制文件名和扩展名,使用相同的名称(加上.txt
)创build一个新的文本文档,并在记事本,记事本++,Word,写字板,Emacs等中打开文件。
我推导出了两个解决方法,用于处理超过182个字符的名称。 如果我通过SAS.exe
打开SAS,我可以通过打开对话框加载一个程序超过182个字符的path就好了。 然而,这不是一个好的解决scheme,因为打开对话框不允许复制/粘贴path。 整个文件path必须遍历。 我也可以将这样的程序拖到SAS的编辑器窗口中加载它。 这也不是一个好的解决scheme,因为如果有一个空白的编辑器窗口,程序只会加载。 如果程序被意外拖到日志窗口上,它会自动执行。 而且,程序不能在方便的位置打开。 它在增强编辑器的中间打开,必须手动resize。 程序可以加载和执行的所有导致我相信有一些方法来解决这个问题。 似乎在加载文件的过程中,SAS违反了一些variables限制。
当然,人们会build议我使用不同的networking位置或更短的名称。 对于前者,我需要使用特定的networking位置。 对于后者,这些scheme正在与各种报告并行制定。 许多程序是相似的,报告中的相应引用(表格/图号)多次变化/并不总是传达给我。 通过经验,我发现用这些不确定性最可靠的方法就是简单地用报告中给出的标签来命名文件。 否则,我需要采用不明确的缩写,不好的组织实践,或者引入中间步骤(如创build代码或者对程序进行索引的文档)。
编辑:每个乔的评论,似乎打开对话框允许复制和粘贴特定的文件名。 文件path可以在Windows资源pipe理器中通过Shift + Right Mouse Click > Copy as Path
并粘贴到“打开”对话框的“文件path”框中。
为了避免遍历树,可以在访问打开对话框之前更新当前文件夹。 这位于增强型编辑器的右下angular。
“打开”对话框始于当前文件夹位置设置为。
我怀疑你的问题是你的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:在程序本身里面,没有人会知道你改变了什么。