Windows 7及更高版本包含一個名爲「waitfor.exe」的實用程序。該程序應該監聽並等待接收到一個指定的信號。它也可以發送信號。如何使用Windows waitfor實用程序
等待信號的語法是這樣的:waitfor.exe somevent
發送的語法應該是:waitfor.exe /S remotecomputer /SI somevent
。還可以選擇指定用戶和密碼以連接到遠程計算機。
但是我無法正常工作。該程序在等待信號時似乎可以正常工作。但是我從來沒有能夠讓程序在發送模式下工作。
我已經試過這些可能性:
waitfor /si someevent
- 產生錯誤 - 錯誤:無法發送信號 'someevent'。waitfor /s someevent
- 語法錯誤waitfor /s %COMPUTERNAME% someevent
- 語法錯誤waitfor /s %COMPUTERNAME% /si someevent
- 產生誤差 - ERROR:無法發送信號 'someevent'。
我想用這個程序來簡單地在兩個命令窗口之間同步,作爲同一個用戶運行。兩者都沒有升高。在這種情況下測試會產生上述錯誤。
我知道我可以找到(或寫)第三方實用程序來做到這一點,但我想使用Windows內置實用程序。我也想避免使用PowerShell,因爲它的性能很差,對於我的用例。同樣也,我知道我可以在接收端使用「if exists」來拼湊同步機制,並在發送端創建一個文件(使用reg.exe的註冊表,同上),但是我想避免那也。這些解決方案的延遲與性能成反比(接收方需要使用輪詢循環)。
有沒有人知道如何使這個簡單的相同電腦同用戶場景waitfor.exe工作?還是其他任何內置的具有良好性能和零延遲的內置?錯誤消息
確切細節:
C:\>where waitfor
C:\Windows\System32\waitfor.exe
C:\>rem - did run "waitfor myevent" in another window
C:\>waitfor /s %COMPUTERNAME% /si myevent
ERROR: Unable to send signal 'myevent'.
C:\>waitfor /s %COMPUTERNAME% myevent
ERROR: Invalid syntax.
Type "WAITFOR /?" for usage.
C:\>
我的電腦運行的是Windows 2008 R2服務器,是一個企業的活動目錄域的一部分。
如果您使用用戶名和密碼會發生什麼? 'WAITFOR/S%PCNAME%/ U%UNAME%/ P%UPASS%/ SI%SIGNAL%'另外,我建議你提供更多關於你試圖發送的信號和每個信號之間的同步信息。 – Compo
我剛剛注意到你正在努力實現的目標,我甚至不確定'WaitFor'允許通過網絡發送給自己。你有沒有成功過一個非常基本的信號,以確保它甚至可以工作? – Compo
waitfor.exe基於[mailslots](https://msdn.microsoft.com/zh-cn/library/aa365576)。 'waitfor someevent'創建一個名爲'\\。\ mailslot \ WAITFOR.EXE \ someevent'的郵筒。通過'waitfor/si someevent'發送信號打開'\\ * \ mailslot \ WAITFOR.EXE \ someevent'的句柄,其中「*」表示UNC提供程序向域中的每臺計算機廣播消息。 'waitfor/s%COMPUTERNAME%/ si someevent'專門打開'\\ [computer_name] \ mailslot \ WAITFOR.EXE \ someevent'而不是廣播信號。 – eryksun