Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Command line 使用;“破折号”;在输入文件中添加到批处理文件_Command Line_Encoding_Character Encoding - Fatal编程技术网

Command line 使用;“破折号”;在输入文件中添加到批处理文件

Command line 使用;“破折号”;在输入文件中添加到批处理文件,command-line,encoding,character-encoding,Command Line,Encoding,Character Encoding,最可悲的是,我得到了几个TFS团队项目,其中包含了一个en-dash 如果您不熟悉en-dash,请打开MS Word并键入alt+8211 你会看到一个更大的破折号。(如果为您呈现,则如下所示:–)。如果你打开记事本,你会看到一个?如果您在大多数Unicode编辑器中尝试它,您将看到 但我需要它是一个破折号。因为我需要对所有项目运行批处理文件。通往项目的路径现在有了这个破折号 我创建了一个包含项目名称的文件,并将它们输入到批处理文件中 但当它运行时,它将ü替换- 我能做些什么来保持我的冲刺 注

最可悲的是,我得到了几个TFS团队项目,其中包含了一个en-dash

如果您不熟悉en-dash,请打开MS Word并键入alt+8211

你会看到一个更大的破折号。(如果为您呈现,则如下所示:–)。如果你打开记事本,你会看到一个?如果您在大多数Unicode编辑器中尝试它,您将看到

但我需要它是一个破折号。因为我需要对所有项目运行批处理文件。通往项目的路径现在有了这个破折号

我创建了一个包含项目名称的文件,并将它们输入到批处理文件中

但当它运行时,它将ü替换-

我能做些什么来保持我的冲刺

注: 我有两个批处理文件。第一个使用文件中的参数运行第二个


我的第一个可以是。第二种可能是。输入文件的示例可以是。

破折号字符是Unicode代码点U+2013。在Windows代码页1252中,它是字符号150。ācharacter是代码页437中的字符号150。因此,看起来一个进程正在代码页1252中写入文件,而另一个进程正在使用代码页437读取文件

理想情况下,除了Unicode之外的所有代码页都应该与世界大战、天花和20世纪的其他遗迹一起扔掉。不幸的是,Windows控制台使这变得相当困难

由于代码页437是大多数Windows安装的默认控制台代码页,我怀疑是此默认设置导致了这些问题。(文件名由操作系统以Unicode格式存储,因此该部分至少是正确的。)由于代码页437不包含破折号字符,因此任何使用该代码页的系统都必须求助于回退机制来呈现文件名,例如问号

通过将控制台代码页更改为支持en-dash字符的内容,例如1252,可以纠正此问题

您可以使用以下命令更改此代码页

chcp 1252
此命令可能应该放在批处理文件的开头

这是一个可怕的黑客攻击,在您将系统转换为从上到下支持Unicode的现代系统之前,这是必要的


您可能还想在Powershell中试用它,因为PS确实支持Unicode。

我知道这是一篇旧文章,但我在这里没有看到修复程序,在尝试自己的修复程序之前,我花了一些搜索时间


在记事本中,我将字体从“Lucinda Console”改为“TERMINAL”,破折号(–)改为(ā)符号。我只是手动使用键盘上的-这个字体,保存了我的BAT脚本,它执行得很好。

使用ALT+0150将一个破折号正确插入到任何Windows应用程序中。这在记事本和任何其他程序中都有效,只要当前字体支持。我一直都在使用它们。@Jeffery-我很想知道一种字体,它可以将字母破折号插入记事本。您发布的输入文件是UTF-8格式的。这是文件所在的编码还是在发布时转换的?@Jeffery-发布时转换的。我尝试过输入文件的许多不同编码(包括1252)。它们都不起作用(我得到?、‼和其他一些值,但从来都不是en-dash)。谢谢你提供的信息。但是,更改字符集(或使用powershell)不起作用(我仍然得到了一些信息)。我正在批处理文件中使用“for”命令从文件中加载。这可能是使用默认字符集从中加载吗?(我的for命令如下:
for/F“delims=,”(ProjectList.txt)do UpdateReportInProject.bat中的%%a)http://TFS2010Prod/ReportServer“%%a”
我更新了我的问题,并添加了指向批处理文件和示例输入的链接,以备您查看。
chcp 1252
命令是否“保持不变”?意思是如果我在命令提示符下调用它,它会影响整个窗口吗?我问这个问题,因为我运行了
chcp 1252
,它说活动的代码页是1252。然后我尝试粘贴在en破折号中,并将其粘贴为aā。@Vaccano-是的,它会影响整个窗口,直到它关闭或其他东西改变代码页。@Vacca否-进一步的测试表明,控制台使用的是CP-1252,但它显示的字符是150,就好像它使用的是CP-437。这是一个字体问题。将字体从“Rastor字体”更改为“Lucida控制台”可以修复显示问题。