網絡上的文件您好,我有一個腳本可以打開網絡地址上的某個文件。當計算機連接到該網絡時,一切正常。 但是當計算機處於離線狀態時,我希望腳本能夠溫和地停止,而不是在它明白地址不可用之前一直等待。 是否有快速檢查遠程文件可用性甚至更好的網絡連接可用性的功能?
謝謝
馬特奧
回复:網絡上的文件嗨戴夫,我試過了,但如果資源不可用,它仍然需要很多秒。
謝謝
馬特奧
回复:網絡上的文件也許嘗試使用檢查文件的存在文件已存在在嘗試打開它之前?
回复:網絡上的文件用網盤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"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 函數。 如果您找不到文件,他們會抓住並跳出。 不確定這是否能解決您描述的問題,因為它可能也會搜索路徑。 但是,如果您到目前為止還沒有檢查過,那麼值得一試。
馬丁