标签: windows-console

如何在Windows命令行中使用unicode字符?

我们在Team Foundation Server(TFS)中有一个项目,其中包含非英语字符(š).当我试图编写一些与构建相关的东西时,我们偶然发现了一个问题 - 我们无法将š字母传递给命令行工具.命令提示符或其他什么不是搞砸了,并且tf.exe实用程序找不到指定的项目.

我已经尝试了.bat文件的不同格式(ANSI,带有和不带BOM的 UTF-8 )以及用JavaScript编写脚本(这本身就是Unicode) - 但没有运气.如何执行程序并将其传递给Unicode命令行?

unicode command-line input windows-console

299
推荐指数
12
解决办法
40万
查看次数

使用MS批处理文件将程序的输出分配给变量

我需要使用MS批处理文件将程序的输出分配给变量.

所以在GNU Bash shell我会用VAR=$(application arg0 arg1).我在Windows中使用批处理文件需要类似的行为.

有点像set VAR=application arg0 arg1.

cmd batch-file variable-assignment windows-console

269
推荐指数
6
解决办法
29万
查看次数

241
推荐指数
5
解决办法
41万
查看次数

在Windows控制台应用程序中输出unicode字符串

嗨,我试图将unicode字符串输出到带有iostreams的控制台并失败.

我发现了这一点: 在c ++控制台应用程序中使用unicode字体 ,这个代码片段有效.

SetConsoleOutputCP(CP_UTF8);
wchar_t s[] = L"èéøÞ????æ?a";
int bufferSize = WideCharToMultiByte(CP_UTF8, 0, s, -1, NULL, 0, NULL, NULL);
char* m = new char[bufferSize]; 
WideCharToMultiByte(CP_UTF8, 0, s, -1, m, bufferSize, NULL, NULL);
wprintf(L"%S", m);
Run Code Online (Sandbox Code Playgroud)

但是,我没有找到任何方法来使用iostream正确输出unicode.有什么建议?

这不起作用:

SetConsoleOutputCP(CP_UTF8);
utf8_locale = locale(old_locale,new boost::program_options::detail::utf8_codecvt_facet());
wcout.imbue(utf8_locale);
wcout << L"¡Hola!" << endl;
Run Code Online (Sandbox Code Playgroud)

编辑 我找不到任何其他解决方案,而不是在流中包装此片段.希望,有人有更好的想法.

//Unicode output for a Windows console 
ostream &operator-(ostream &stream, const wchar_t *s) 
{ 
    int bufSize = WideCharToMultiByte(CP_UTF8, 0, s, -1, NULL, 0, NULL, NULL);
    char *buf = …
Run Code Online (Sandbox Code Playgroud)

c++ unicode iostream windows-console

68
推荐指数
4
解决办法
6万
查看次数

控制台应用在异步呼叫完成之前终止

我目前正在编写一个C#控制台应用程序,它会生成许多指向网站上不同图像的URL,然后使用下载作为字节流WebClient.DownloadDataAsync().

我的问题是,一旦进行了第一次异步调用,控制台应用程序会认为程序已完成并在异步调用返回之前终止.通过使用Console.Read()我可以强制控制台保持打开,但这似乎不是很好的设计.此外,如果用户在进程期间点击进入(当控制台正在等待输入时),程序将终止.

在等待异步调用返回时,是否有更好的方法可以阻止控制台关闭?

编辑:调用是异步的,因为我在下载过程中通过控制台向用户提供状态指示器.

c# asynchronous webclient windows-console

37
推荐指数
3
解决办法
1万
查看次数

防止MSYS'bash'杀死捕获^ C的进程

我有一个控制台模式的Windows应用程序(从Unix移植),最初设计用于在收到^C(Unix SIGINT)时进行干净退出.在这种情况下,干净的出口涉及等待,可能相当长的时间,以便关闭远程网络连接.(我知道这不是正常行为,^C但我无法改变它.)该程序是单线程的.

我可以捕获^C与任一signal(SIGINT)(如Unix下)或用SetConsoleCtrlHandler.当程序在CMD.EXE下运行时,可以正常工作.但是,如果我使用MSYS附带的"bash"shell(我使用MinGW环境来构建程序,因为这允许我重用Unix makefile),那么程序会被强制终止一些随机,短时间(小于之后100毫秒)^C.这是不可接受的,因为正如我所提到的,程序需要等待远程网络连接关闭.

人们很可能想要在MSYS bash下运行这个程序.此外,这种效果打破了测试套件.我无法找到任何方法来解决问题,无论是从程序内(理想)还是通过shell上的设置(可接受).谁能推荐任何东西?

c windows portability windows-console

33
推荐指数
2
解决办法
3425
查看次数

如何写入控制台窗口进行调试?

我是否可以在VCL应用程序的控制台窗口中显示循环结果以进行调试?

delphi windows-console

27
推荐指数
3
解决办法
4万
查看次数

如何阻止Windows批处理文件提前退出?

我有一个Windows批处理文件,看起来类似于:

C:\DoStuff.cmd
move output.bak C:\newfolder\output.bak
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是DoStuff.cmd执行一个java程序,一旦完成退出批处理运行回到命令提示符.第2行永远不会被击中.

我尝试了以下代替,以在新窗口中执行命令:

start "My program" /WAIT C:\DoStuff.cmd
move output.bak C:\newfolder\output.bak
Run Code Online (Sandbox Code Playgroud)

上面发生的情况是新命令窗口生成cmd文件运行并退出到等待命令提示符,窗口永远不会关闭,第一个命令窗口等待,第二个命令窗口在完成第一步后没有任何操作.

如何在没有控制批处理运行的情况下执行第一个命令?

提前谢谢了

command-line batch-file windows-console

25
推荐指数
1
解决办法
1万
查看次数

在Powershell中显示Unicode

虽然Powershell几乎不可能实现,但我想要实现的目标却相当简单.

我想显示文件的完整路径,其中一些文件的名称中包含阿拉伯语,中文,日语和俄语字符

我总是得到一些难以理解的输出,如下图所示 在此输入图像描述

在控制台中看到的输出正在被另一个脚本消耗.输出包含而不是实际的人物.

执行的命令是

(Get-ChildItem -Recurse -Path "D:\test" -Include *unicode* | Get-ChildItem -Recurse).FullName
Run Code Online (Sandbox Code Playgroud)

是否有任何简单的方法来启动PowerShell(通过命令行或以任何方式写入脚本),以便正确地看到输出.

PS我在Stack Overflow上经历了很多类似的问题,但除了称之为Windows控制台子系统问题之外,它们都没有太多的输入.

unicode terminal powershell utf-8 windows-console

25
推荐指数
3
解决办法
2万
查看次数

在java控制台中打印一行(与'\n'相反)

前言

我在其他语言中看到了一些与此相关的问题,并对此进行了相当多的研究.首先,在我们开始走下兔洞之前,我必须说明我为什么这样做.我正在打印一个二叉树,我找到了一种方法来做到这一点,我认为没有其他人找到它(在网上的任何地方找不到它我永远搜索过).它解决了很多与间距和冲突有关的问题,我可能会在以后提供它作为Prettyprint Btree问题的答案.无论如何,执行上述操作的一个重要部分是能够将换行符(光标)向上移动一行.我也会安排将一个回车移动一行.

我已经对这个名为"编辑1-3"的问题进行了三次编辑.

我的特定Windows版本(可能相关):Windows 10 v1607操作系统版本:14393.2035

问题??

问题是使用ANSI转义字符很容易完成

ANSI转义码:https://en.wikipedia.org/wiki/ANSI_escape_code

使用"\ 033 [A"是我想要实现的特定代码(从有关在python中移动一行的问题得到它).

问题

所以问题解决了吗?哦不,甚至不接近.该问题是,显然窗户上挂着这个""" 精彩 '’"更新,可能有破产一切ANSI /控制台有关.下面链接到有关此问题,但具有不同的ANSI要求,但根本问题是相同的.

如何使用System.out.println在控制台中打印颜色?

tl:dr由于某些原因它不适用于Windows,你需要一个大型库来执行此操作或其他操作.

Sooo然后我尝试对更新本身做一些深入的研究,为什么这恰好是特定于Windows的(当然),我被引导到了这一点.

Windows问题的根本原因:https://github.com/Microsoft/WSL/issues/1173

tl; dr:基本上,更新更改了cmd.exe的默认设置,cmd.exe是java使用的默认控制台.更改的是如何为'子应用程序'AKA java处理ANSI代码的控制台设置(使用控制台但不是控制台本身的东西).默认值在更新之前,子应用程序继承了启用ANSI的默认控制台.现在(因为显然以前的默认设置破坏了东西)他们改变了它,以便子应用程序不从控制台继承默认设置.这意味着如果java想要启用ANSI,java必须自己有效地设置此控制台模式.显然有大量的libary用于java命令,但是有很多可用的库存有一些问题.首先他们需要maven,我不想要maven,我也不喜欢 喜欢需要一百万个额外的库来做一些非常简单的事情,它增加了我的代码依赖的东西(这很糟糕).所以我试图避免像"只使用JANSI"这样的简单解决方案setConsoleMode 对于ANSI.

我在此之后尝试过的

在我完成阅读/理解后,我尝试进入我的注册表编辑器并尝试更改控制台的默认设置(cmd.exe),以便始终为子应用程序启用ANSI(AKA java).有人在github讨论中提出过建议,但令我惊讶的是,具体设置对我来说并不存在.(它应该在计算机 - > HKEY_CUURENT_USER - >"TrimLeadingZeros"和"WindowAlpha"之间的控制台中).

试试2

由于我无法编辑控制台设置而没有大型库充满了我不想要的东西,我尝试在盒子外面思考并且在java设置中搞砸了.我发现java确切地设置了它的控制台,并发现我可以更改该设置以在java中使用不同的控制台.我最近安装了git,并且知道git bash可用,所以我尝试使用下面的问题(以及谷歌一般)作为起点.

https://superuser.com/questions/1196463/start-sh-exe-bash-with-given-path

第三次是魅力?

我无法找到合适的工作.它没有返回任何错误或做任何新的事情,就像所有.它甚至被设置为'当前项目',所以当我运行我的项目时,它应该做些不同的事情吗?我相信问题的一部分是我的根git文件夹是搞乱的(不在程序文件中).这可能是因为我使用的计算机是一台工作计算机,也许某些设置会影响安装git的位置,我不知道但我知道的是当我更改控制台时我尝试了这条路径:

C:\ Users \用户abbotts1 \应用程序数据\本地\程序\的Git\BIN\bash.exe

我也尝试过:

C:\ Users \用户abbotts1 \应用程序数据\本地\程序\的Git\bash.exe

C:\ Users \用户abbotts1 \应用程序数据\本地\程序\的Git\BIN\sh.exe

"C:\ Users\abbotts1\AppData\Local\Programs\Git\bin\sh.exe"--login -i

每次更改控制台后我都试过这段代码:

public class ExpressionEvaluator {

    public static void main(String[] args) {
        System.out.println("1"); …
Run Code Online (Sandbox Code Playgroud)

java io ansi windows-console

19
推荐指数
1
解决办法
557
查看次数