【问题标题】:Get CMD output in specific language regardless of the language installed on Windows获取特定语言的 CMD 输出,而不管 Windows 上安装的语言如何
【发布时间】:2018-10-17 10:05:46
【问题描述】:

我正在尝试弄清楚如何让 cmd.exe(命令提示符)以与系统中安装的语言不同的语言显示输出。

我将使用一个简单的命令作为示例。 如果我输入命令

date

输出将是:

数据更正:07/05/2018

Immettere la nuova 数据:(gg-mm-aa)

那是因为我系统上安装的 Windows 设置为 Italian

我想在我的应用程序中通过 CMD.exe 执行命令并解析它们的输出。我已经知道如何做到这一点,但问题是如果我的应用程序在非意大利语 Windows 系统上执行,该应用程序将无法运行,因为它基于意大利语字符串(例如,我搜索“Data corrente”字符串,但如果Windows 设置为其他语言将找不到该字符串)。

无论系统上安装什么语言,我都需要生成固定语言的输出。

使用上面的示例,输入“日期”命令我想在所有系统中获得以下输出,包括意大利系统:

当前日期是:07/05/2018

输入新日期:(gg-mm-aa)

谢谢。

【问题讨论】:

  • wandersick.blogspot.com/p/change-non-english-command-line.html 不确定这是否仍然适用于最新的操作系统版本
  • 它更像是一种文化背景。检查此link 了解更多信息
  • date 是一个特别麻烦的例子,因为它的输出不仅取决于语言,还取决于实际的区域设置(gg-mm-aa 不是大多数系统上使用的格式,但即使在我的美国英语 Windows 上,短日期格式也设置为 yy-mm-dd)。我假设/希望你实际上并没有调用date,虽然......
  • 如果可能,不要使用本地化的内置命令。编写执行所需操作的 C# 代码,或编写 PowerShell 脚本,以独立于区域设置的方式格式化其输出并调用它。只有调用内置命令才能方便地完成的事情很少,其他任何方式都无法完成的事情更是少之又少。
  • “date”命令只是一个例子,我不使用它(我知道管理 DateTime 的方法比使用 cmd 更方便)。问题是是否可以用与本地语言不同的语言显示输出。

标签: c# windows cmd


【解决方案1】:

试试这个:

Console.Out.WriteLine($"The current date is: {DateTime.Now.ToShortDateString()}");
var currentCulture = Thread.CurrentThread.CurrentCulture;
Console.Out.Write($"Enter the new date: {currentCulture.DateTimeFormat.ShortDatePattern}");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 2019-04-24
    相关资源
    最近更新 更多