使用powershell命令更改字体样式的批处理文件
我有一个批处理文件,它应该显示umlaute。我发现,您必须使用使用powershell命令更改字体样式的批处理文件,powershell,batch-file,encoding,cmd,utf-8,Powershell,Batch File,Encoding,Cmd,Utf 8,我有一个批处理文件,它应该显示umlaute。我发现,您必须使用chcp 65001,因此我需要在控制台中使用字体样式Lucida Console。这个很好用 当使用chcp 1252umlaute时,如果未正确显示,则会使用UTF-8编码从csv文件中读取文本 但是现在我需要从这个bat文件运行powershell命令。这些命令会更改字体样式,因此当cmd尝试显示umlaute时,它会关闭。有没有解决办法 以下是我的代码中最重要的部分: @echo off setlocal EnableDel
chcp 65001
,因此我需要在控制台中使用字体样式Lucida Console
。这个很好用
当使用chcp 1252
umlaute时,如果未正确显示,则会使用UTF-8编码从csv文件中读取文本
但是现在我需要从这个bat文件运行powershell命令。这些命令会更改字体样式,因此当cmd尝试显示umlaute时,它会关闭。有没有解决办法
以下是我的代码中最重要的部分:
@echo off
setlocal EnableDelayedExpansion EnableExtensions
chcp 65001
rem ...
set InputFile=C:\Users\...\Documents\file.csv
for /f "delims=" %%d in ('powershell -Command [DateTime]::Today.AddDays^(-2^).ToString^(\"dd.MM.yyyy\"^)') do (
rem ...
)
rem ...
for /f "tokens=*" %%i in ('type "%InputFile%"') do (
rem ...
for %%g in (%%i) do (
rem ...
set /A outyear=tyear-year
set out[!index!]=!data[1]! !data[2]! !data[3]! !outyear!
set /A index=!index!+1
)
)
for /F "tokens=2 delims==" %%s in ('set out[') do echo %%s
以下是用于测试的CSV文件的简短片段:
Test;Musterman;Max;Test;21.01.1991
Test;Musterman2;Max2aöüäß;Test;22.01.1993
Test;Musterman3;Mülleraöüäß;Test;23.01.1989
我已经尝试了以下方法,但不起作用
注意我也在使用Windows 7,也许这也是它不起作用的原因。我能够用建议的@GerhardBarnard方法解决这个问题 现在,我通过第二个文件启动批处理文件,该文件运行powershell命令,然后使用参数调用另一个批处理文件。看起来是这样的:
@echo off
rem ...
for /f "delims=" %%d in ('powershell -Command [DateTime]::Today.AddDays^(1^).ToString^(\"dd.MM.yyyy\"^)') do (
rem ...
)
rem ...
call File.bat %param1% %param2% %param3% %param4%
在第二个文件中,我现在解析CSV文件,因为powershell命令在不同的批处理文件中运行,所以字体样式没有更改。因此,它可以毫无问题地显示所有umlaute。无法进行测试,因为我的windows 10计算机不会重现您的问题。您是否有机会尝试过启动powershell?或者,您可以在另一个批处理文件中运行powershell循环,并将值发送回此批处理文件,但我无法再次测试它,因为我没有遇到相同的问题。我正在使用Windows 7,将尝试您建议的方法。无法复制。在您的示例中甚至没有任何UMLAUT。我运行了你的脚本,工作正常,没有崩溃。我甚至不知道为什么会这样。@marsze我用umlaute从csv文件中读取文本,然后在cmd中显示,这不起作用。@Meister96Fels提取csv是合理的,或者用umlauts进行任何其他类型的输出来重现问题。