我一直在尝试寻找解决方案,但我编写了一个基本程序来自动生成“停机”报告,我需要将其复制到剪贴板中,以便将其粘贴到大型机系统中。它需要使用英语和法语,但法语口音无法正确复制... 有没有办法解决这个问题 - 包括变量?
输出基本上就是这样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
。
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 慢性肾衰竭- 更改活动控制台代码页。默认代码页由 Windows 区域设置决定。
答案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
希望这会有所帮助。