gpt4 book ai didi

string - 替换文本文件中的单个字符时出现意外结果

转载 作者:行者123 更新时间:2023-12-03 11:06:57 24 4
gpt4 key购买 nike

我的批处理文件:

@ECHO off

(FOR /f "delims=" %%i in (source.txt) DO (
SET "line=%%i"
setlocal enabledelayedexpansion

SET "line=!line:Ć=F!"
SET "line=!line:Ç=G!"
SET "line=!line:Ň=R!"
SET "line=!line:Ô=T!"

ECHO.!line!
endlocal
))>"output.txt"

我的 source.txt 文件:

ĆÇŇÔ

预期的输出.txt文件:

FGRT

当前输出.txt文件:

FFRR

我的问题是:这里出了什么问题?

最佳答案

如果 source.txt 没有保存为 Unicode,您的问题可能与您运行循环时的代码页有关。

以下示例切换到代码页 1252West European Latin,(正如 Gerhard 在评论中所建议的那样),如果不是已经。 尽管我假设代码页 850Multilingual (Latin I) 应该同样有效(只需根据需要替换 78 行上的 1252 即可更改为所需的代码页)。

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
If Not Exist "source.txt" GoTo :EOF
For /F "Delims==" %%G In ('2^> NUL Set _cp') Do Set "%%G="
For /F Tokens^=* %%G In ('"%SystemRoot%\System32\chcp.com"'
) Do For %%H In (%%G) Do Set "_cp=%%~nH"
If Not %_cp% Equ 1252 (Set "_cpc=TRUE"
"%SystemRoot%\System32\chcp.com" 1252 1> NUL)
(For /F UseBackQ^ Delims^=^ EOL^= %%G In ("source.txt") Do (
Set "line=%%G"
SetLocal EnableDelayedExpansion
Set "line=!line:Ć=F!"
Set "line=!line:Ç=G!"
Set "line=!line:Ň=R!"
Set "line=!line:Ô=T!"
Echo=!line!
EndLocal)) 1> "output.txt"
If Defined _cpc "%SystemRoot%\System32\chcp.com" %_cp% 1> NUL

请注意,像这样使用 For 循环,将从输出中删除所有空行

关于string - 替换文本文件中的单个字符时出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64322513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com