我正在撰寫一個批處理腳本來關閉網路配接器屬性中的綠色以太網。我寫了以下代碼:
@echo off
cls
for /F "skip=3 tokens=1,2,3* delims= " %%G in ('netsh interface show interface') DO (
IF "%%H"=="Disconnected" netsh interface set interface "%%J" enabled
IF "%%H"=="Connected" netsh interface set interface "%%J" disabled
echo %%J
powershell.exe Set-NetAdapterAdvancedProperty -Name '%%J' -DisplayName 'Green-Ethernet' -DisplayValue 'Disabled'
)
我的 Windows 語言設定為德語,它會引發此錯誤:
Set-NetAdapterAdvancedProperty : No matching display value found. The following are valid display values: Deaktiviert,
Aktiviert
In Zeile:1 Zeichen:1
Set-NetAdapterAdvancedProperty -Name 'Ethernet' -DisplayName 'Green-E ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : InvalidArgument: (MSFT_NetAdapter...CC2156B75}:...):ROOT/StandardCi...ertySettingData) [
Set-NetAdapterAdvancedProperty], CimException
FullyQualifiedErrorId : Windows System Error 87,Set-NetAdapterAdvancedProperty
因此,如果我將“禁用”替換為“Deaktiviert”,它會起作用,但為什么“禁用”不起作用?powershell 在語言設定為德語的 Windows 上不接受英語引數嗎?
uj5u.com熱心網友回復:
因為可執行檔案(在本例中為netsh)理解英語且僅理解英語,但訊息被翻譯成系統語言以供人工解釋。
假設可執行檔案能夠接受任何可能的語言。可能需要數百種不同的方式來表達每個可能的引數,例如show在您的示例中。示例指令可以用數百萬種不同的方式表達——interface例如使用兩次。為什么你不能第一個用荷蘭語,第二個用愛沙尼亞語?
甚至批處理本身 - 或任何編程語言,都需要能夠接受數百種if, not,echo等的翻譯中的任何一種for。這簡直是??不切實際的。一個常見的字串意味著一件常見的事情,即使它是任何特定語言的 gobbledegook - 例如cls英語。
另一方面,用戶有不合理的態度,他們希望能夠理解回應,因此回應是針對用戶的語言量身定制的。這不僅僅是逐字翻譯的問題——不同的語言使用不同的詞序。
因此,旨在由人類解釋的輸出變成了人類語言和英語語言的混合體,例如In Zeile:1 Zeichen:1在CategoryInfo InvalidArgument您的示例中。
這個問題還有另一個方面——詞序。我們的日期和時間有問題。取決于語言和其他用戶設定的不同表示形式,例如 d(d)/m(m)/(cc)yy 與 m(m)/d(d)/(cc)yy 與 ccyy/mm/dd 所有分隔符的變化。時間可能有不同的分隔符,可能是 12 或 24 小時格式,可能am/pm不僅有不同的字串,也有可能用空格與數字部分隔開的字串,也可以不帶點或不帶點。
因此,總而言之,您的代碼需要根據接收回應的語言自定義其對接收到的回應的解釋。
一個非常好的主意是允許開關以標準方式生成命令的回應,而不管用戶語言如何
:: Responds in user-language
dir
set babel on
:: Responds in standard language (Probably English)
dir
set babel off
:: Back to user-language
dir
但是有這個的機會是零。微軟幾年前就曾要求用戶提供有關增強批處理語言的建議 - 以至于我失去了我擁有的任何鏈接 - 但沒有任何東西從用戶建議轉換為語言更改 AFAIAA。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/494647.html
上一篇:通過處理獲得正確的起始目錄
下一篇:將具有相同文本的數字相加
