从批处理文件将重音字符发送到剪贴板

从批处理文件将重音字符发送到剪贴板

我一直在尝试寻找解决方案,但我编写了一个基本程序来自动生成“停机”报告,我需要将其复制到剪贴板中,以便将其粘贴到大型机系统中。它需要使用英语和法语,但法语口音无法正确复制... 有没有办法解决这个问题 - 包括变量?

输出基本上就是这样le syst├¿me ne (剪掉其余部分)。

任何帮助都将不胜感激。

这是我目前所拥有的:

if "%SRSST%"=="n" (
    (
    echo                   ***  IMSNEWS ***
    echo.
    echo On Sunday, %DATEME% %DT%%DATEST% %DATEYR%, There will be no
    echo system outage.
) | Clip )else (
            echo                   ***  IMSNEWS ***
            echo.
            echo On Sunday, %DATEME% %DT%%DATEST% %DATEYR%, the system will not
            echo be available between %SRSST% - %SRSET% for regular
            echo weekly maintenance.
        ) | Clip
timeout /t 5
if "%SRSST%"=="n" (
    (
    echo                  ***  NOUVELLES ***
    echo.
    echo Le dimanche %DT% %DATEME%, %DATEYR%,  Il n'y aura pas
    echo d'interruption du système 
) | Clip )else (
            echo                  ***  NOUVELLES ***
            echo.
            echo Le dimanche %DT% %DATEME%, %DATEYR%, le système ne
            echo sera pas disponible entre %SRSST% - %SRSET% pour la
            echo maintenance hebdomadaire.
        ) | Clip

goto Menu

答案1

法语口音模仿得不太好

将“(西欧拉丁语)”添加chcp 1252到批处理文件的开头。

  • 如果没有这个,我可以重现你的问题(我的默认代码页是 850 - 多语言(拉丁语 I)
  • 添加它后,我在剪贴板上得到了预期的文本。

示例 1:

F:\test>type test.cmd
echo systÞme | Clip
F:\test>test

F:\test>echo systÞme   | Clip

F:\test>systÞme
'systÞme' is not recognized as an internal or external command,
operable program or batch file.

示例 2:

F:\test>type test.cmd
chcp 1252
echo systÞme | Clip
F:\test>test

F:\test>chcp 1252
Active code page: 1252

F:\test>echo système   | Clip

F:\test>système
'système' is not recognized as an internal or external command,
operable program or batch file.

笔记:

  • 在上面的测试中我只是将剪贴板的内容粘贴到命令行上。

  • chcp包含剪贴板systÞme

  • 包含chcp剪贴板système


进一步阅读

答案2

经过进一步调查,问题很奇怪 -chcp 1252在 test.cmd 中使用 - 可以工作....但由于某种原因,在我较大的批处理文件中不起作用。(我真的不知道为什么,因为我复制了代码的文本代码

:TST
@echo off
cls
chcp 1252
echo d'interruption du système | CLIP
pause
goto Menu

然而我发现添加该行chcp 65001对所有事情都有效。

:TST
@echo off
cls
chcp 65001
echo d'interruption du système | CLIP
pause
goto Menu

希望这会有所帮助。

相关内容