如何让Windows的cmd.exe输出非系统默认语言的内容?
嘿,我刚好碰到过类似的需求,给你几个实用的解决办法,帮你在意大利语系统里让cmd输出其他语言的内容,方便后续解析:
方法1:临时设置区域环境变量再执行命令
Windows的cmd命令输出语言其实是受区域环境变量控制的,不用改系统全局设置,临时设置一下就行。比如你想让date输出英语内容,直接在命令前加个环境变量设置:
set LANG=en-US && date
如果是在你的应用里调用cmd,把命令拼成这样就行:
cmd /c "set LANG=en-US && date"
执行后你就能看到英语的输出了:
Current date: 05/07/2018
Enter the new date: (mm-dd-yy)
小提示:这个方法需要系统已经安装了目标语言的语言包,不然可能不会生效哦。
方法2:代码页+环境变量双管齐下
要是单纯设置环境变量没效果,可以试试同时切换控制台的代码页到目标语言对应的编码。比如英语常用的OEM代码页是437,ANSI是1252,命令可以这么写:
chcp 437 && set LANG=en-US && date
应用里调用的话就是:
cmd /c "chcp 437 && set LANG=en-US && date"
方法3:换用PowerShell(更灵活的替代方案)
要是你不非得用cmd.exe,PowerShell其实更适合做这种可控的输出。比如想输出英语格式的日期,直接用命令就能搞定:
Get-Date -UFormat "%m/%d/%Y" | Write-Host "Current date: $_"
或者直接切换PowerShell的文化信息,之后所有相关命令都会用这个语言输出:
[System.Threading.Thread]::CurrentThread.CurrentCulture = [System.Globalization.CultureInfo]::CreateSpecificCulture("en-US") Get-Date
这种方式完全不用依赖系统的区域设置,输出格式和语言都能精准控制,特别适合程序解析。
方法4:在应用进程启动时直接设置环境变量
如果你的应用是通过创建进程的方式调用cmd.exe,那可以在启动进程的时候,直接给它设置LANG环境变量(比如设为en-US)。这样整个cmd会话都会用这个语言输出,不用在命令里额外拼接设置语句。具体怎么实现要看你用的编程语言,比如C#里可以通过ProcessStartInfo.EnvironmentVariables来添加或修改这个变量。
内容的提问来源于stack exchange,提问作者robytur

