1

Я пытался найти решение этой проблемы, но я написал базовую программу для более или менее автоматического создания отчета об отключении, который мне нужно скопировать в буфер обмена, чтобы я мог вставить его в систему мэйнфреймов. Это должно быть на английском и французском языках, но французские акценты не копируют должным образом ... Есть ли что-нибудь вокруг этого - включить переменные?

Выходными 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

2 ответа2

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 .


Дальнейшее чтение

0

После дальнейшего исследования проблема была странной - Использование 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

Надежды это помогает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .