我如何在Windows 7中获得系统区域设置?
我的意思是类似于:cs_CZ.UTF-8
我试图在命令行中编写“locale”,但在Windows中不起作用。 有什么build议么?
没有一个特定的命令(或者至less不是我知道的)来获取这些信息,但是你可以在systeminfo.exe
提供的命令之间find它。
Get-UICulture
或Get-Host
在PowerShell中
(大写可选)
如果您需要实际的语言环境来在batch file中有条件地执行其他操作,则可以使用以下命令创buildbatch file(将文本文件另存为.bat扩展名)。 作为起点,这将打印到命令提示符,例如,“en-us”(不含引号)也可以使用variables!VERBOSE_SYSTEM_LOCALE! 对于人类可读的语言环境,例如英语(UnitedStates)
@echo off setlocal EnableDelayedExpansion FOR /F "delims==" %%G IN ('systeminfo.exe') Do ( set input=%%G for /l %%a in (1,1,100) do if "!input:~-1!"==" " set input=!input:~0,-1! IF "!input:~0,13!"=="System Locale" ( set answer=!input:~15! set answer=!answer: =! set VERBOSE_SYSTEM_LOCALE=!answer:*;=! call set SYSTEM_LOCALE_WITH_SEMICOLON=%%answer:!VERBOSE_SYSTEM_LOCALE!=%% set SYSTEM_LOCALE=!SYSTEM_LOCALE_WITH_SEMICOLON:~0,-1! echo !SYSTEM_LOCALE! ) )
事实上,你的build议失败了,因为它们依赖于search一个根据当前语言环境而变化的string(“ System Locale ”)! 在我的法语Win10Pro中,string是“Optionrégionaledusystème”(带有重音字母,在CMD文件中很难正确处理)。
我已经做了一些testing,似乎在我的系统上,在systeminfo输出中有关语言环境的行是唯一包含分号(“;”)的字符:
24/09/2017 17:18:43,23 | C:\CMD () > systeminfo | findstr ; Option régionale du système: fr;Français (France) Paramètres régionaux d'entrée: fr;Français (France)
基于这个(在其他不同语言的系统上可能不是这样),我编写了这个get_locale.cmd脚本:
@echo off setlocal EnableDelayedExpansion FOR /F "delims==" %%A IN ('systeminfo.exe ^| findstr ";"') do ( FOR /F "usebackq tokens=2-3 delims=:;" %%B in (`echo %%A`) do ( set VERBOSE_SYSTEM_LOCALE=%%C REM Removing useless leading spaces ... FOR /F "usebackq tokens=1 delims= " %%D in (`echo %%B`) do ( set SYSTEM_LOCALE=%%D ) set SYSTEM_LOCALE_WITH_SEMICOLON=!SYSTEM_LOCALE!; set | findstr /I locale REM No need to handle second line, quit after first one goto :EOF ) )
我的系统上的脚本的结果是:
24/09/2017 17:18:45,31 | C:\CMD () > get_locale.cmd SYSTEM_LOCALE=fr SYSTEM_LOCALE_WITH_SEMICOLON=fr; VERBOSE_SYSTEM_LOCALE=Français (France)
但是,要注意的是,这三个环境variables只存在于脚本内部,脚本结束后不会保留在CMD环境中(不存在导出命令,如* nix)。