我遇到了一個問題,看起來它應該是一個相當基本的腳本。批量條件編程 - 不能將STDERR指定到NUL
ECHO !url1! >> !hostsfile! && ECHO Successfully added !url1! to file. || 2>&1>NUL && ECHO Unable to write !url1! to file. && GOTO :FAIL
這是一個條件,試圖到URL寫入給定的文件,如果訪問該文件被拒絕,打印錯誤消息。不幸的是,CMD也會生成它自己的錯誤信息,所以目前作爲輸出,我得到了默認錯誤「拒絕訪問」,然後是我自己的「無法將www.url.com寫入文件」。
我試過沒有運氣將管道默認的錯誤消息給NUL,但即使所有我讀到它,我的知識如何管道工作和它的語法仍然稀疏,我不是到任何地方。
此外,作爲旁道:是否有任何方法可以將該行分割爲更易於管理而不會導致錯誤?
嘗試這樣的東西:
ECHO !url1! >> !hostsfile! && ECHO Successfully added !url1! to Hosts file.
|| 2>&1>NUL && ECHO Unable to write !url1! to Hosts. && GOTO :FAIL
或
ECHO !url1! >> !hostsfile! && ECHO Successfully added !url1! to Hosts file. ||
2>&1>NUL && ECHO Unable to write !url1! to Hosts. && GOTO :FAIL
...導致 「意外字符」 的錯誤。
注:由於延遲擴展,感嘆號被用於變量。
回聲不會返回錯誤級別[dbenhams廣泛的答案到錯誤級別問題](http://stackoverflow.com/a/34937706/6811411)並閱讀[ss64.com errorlevel](http:// ss64 .com/nt/errorlevel.html) – LotPings
你應該用這種方式重定向'2>&1> Nul'或'2>&1 1> Nul'在標準數據流之間放置一個空格或明確標識數字1 – LotPings
@LotPings - 我會在沒有'echo'的情況下完成我想要做的事情嗎?有沒有我可以用來檢查寫入權限的命令?有沒有一種方法可以使用'echo'來達到我想要的目的? – Hashim