网络上的文件您好,我有一个脚本可以打开网络地址上的某个文件。当计算机连接到该网络时,一切正常。 但是当计算机离线时,我希望脚本能温和地停止,而不是在它理解地址不可用之前一直等待。 是否有快速检查远程文件可用性甚至更好的网络连接可用性的功能?
谢谢
马特奥
回复:网络上的文件嗨戴夫,我试过了,但如果资源不可用,它仍然需要很多秒。
谢谢
马特奥
回复:网络上的文件也许尝试使用检查文件的存在文件已存在在尝试打开它之前?
回复:网络上的文件用网盘ping一下试试;那是中间的例子。 如果不要求某人关闭驱动器,我无法完全测试它......
回复:网络上的文件谢谢,我将探讨这种可能性。 其实我的资源是网盘上的一个文件,所以ping并不是我需要使用的命令,但是调用OS命令的概念很清楚。
马特奥
回复:网络上的文件此脚本使用 ping 从服务器获取回显;来自 ping 的文本在不同的操作系统风格上可能略有不同,“Received = 1”的测试可能需要调整。 n=1 表示只 ping 一次,w=100 表示不要等待超过 100ms。 mac 版本会有所不同,这是(勉强)在 windows 上测试过的。
Ping 以潜艇声纳发出的声音命名……然后听回声。 但与真正的回声不同,繁忙的计算机可能会出现其他延迟。 您的 ping 可能很容易地通过五台或更多台计算机,并且回声将是相似的。 您可以像这样在“dos box”中使用 ping:
Using ping in a "dos box"在“dos 框”中使用 ping
isAvailable = Function( {resource},
{default local},
Contains( RunProgram( executable( "ping" ), options( {"-n 1 -w 100", resource} ), readfunction( "text" ) ), "Received = 1" ) != 0
);
// this succeeds in < .1 second
start = Tick Seconds();
jmp = isAvailable( "jmp.com" );
stop = Tick Seconds();
Show( jmp, stop - start );
// this fails in about 3 seconds
start = Tick Seconds();
fileserver = isAvailable( "jmpsserver" ); // leave out the back slashes and use the first name
stop = Tick Seconds();
Show( fileserver, stop - start );
// this fails in about .2 seconds
start = Tick Seconds();
nonesuch = isAvailable( "x" || Char( Random Integer( 1e15, 9e15 ) ) || ".com" );
stop = Tick Seconds();
Show( nonesuch, stop - start );
跳跃 = 1; -- jmp.com 有效
停止 - 开始 = 0.0333333333255723;
文件服务器 = 0; -- 那不是我们的文件服务器名称
停止 - 开始 = 2.26666666672099;
非此即彼 = 0; -- 这不太可能是真实的网络名称
停止 - 开始 = 0.0500000000465661;
回复:网络上的文件好的,那么您可能想使用系统命令来检查网络连接是否可用,并在执行脚本的其余部分之前调用它。 不确定那是否会持续更短的时间。 一些想法写在我之前提到的帖子中。
回复:网络上的文件谢谢马丁。 是的,我正在使用“尝试”,但是当我没有连接到网络时,它需要大约 10 秒才能退出。
马特奥
回复:网络上的文件例如类似于以下命令,如果失败,这将抛出异常消息或数字。 然后你可以做其他事情(消息,替代文件,......)。 您还可以在此线程中找到其他提示: Can-JMP-call-a-DOS-Exe
a = Try( Open( networkpath ),0 )<BR />
回复:网络上的文件嗨马特奥,
您是否尝试过 TRY 和/或 THORW 函数。 如果您找不到文件,他们会抓住并跳出。 不确定这是否能解决您描述的问题,因为它可能也会搜索路径。 但是,如果您到目前为止还没有检查过,那么值得一试。
马丁