使用位于网络驱动器上的TCL应用程序打开Web URL

时间:2009-11-20 23:09:51

标签: windows url tcl

我刚刚完成了一个TCL Db应用程序,其中包含打开网页URL的功能。我的代码如下($ adr是网址):

eval exec [auto_execok start] \“\”[list $ adr]

此代码在我的Windows工作站上正常运行。但是,在我将应用程序放在网络驱动器上后,我收到以下错误:

'\驱动\共享\文件夹\子文件夹' CMD.EXE以上面的路径作为当前目录启动。 不支持UNC路径。默认为Windows目录。

网页仍然打开,但我仍然收到TCl错误。

soemone是否知道在服务器或网络环境中使用TCL打开URL的更好方法?

谢谢,

DFM

1 个答案:

答案 0 :(得分:3)

当Tcl尝试执行您指定的URL时,显示的消息实际上是由Windows命令解释程序CMD.EXE生成的。当stderr以当前工作目录设置为网络路径启动时,它会向stderr生成该警告消息。

您可以尝试的其他两件事:

  1. 使用-ignorestderr运行exec。这将导致此特定警告消息(以及写入stderr的任何其他消息/错误不会在Tcl中产生错误)。当你用catch包装你的代码时,你基本上忽略了这个和任何其他错误,这可能并不理想。
     eval exec -ignorestderr [auto_execok start] \"\" [list $adr]
    
  2. 将您的工作目录设置为exec之前的另一个路径,这是CMD.EXE在打印出该警告后正在执行的操作:
     cd $::env(TEMP)
     eval exec [auto_execok start] \"\" [list $adr]
    

当然,要小心运行来自不受信任的输入的任意命令和参数,或者有人可能将您的应用程序用作后门来运行恶意命令。