Запуск файла BAT / CMD с акцентированными символами в нем - PullRequest
14 голосов
/ 28 сентября 2011

У меня есть пакетный файл Windows, в котором есть инструкция для выполнения файла EXE в месте, путь которого содержит символы с акцентом. Ниже приведено содержимое командного файла.

@echo off
C:\español\jre\bin\java.exe -version

C: \ español \ jre \ bin \ java.exe - этот путь существует и является правильным. Я могу запустить эту команду прямо на cmd.exe. Но когда я запускаю команду из файла bat / cmd, она не может сказать «Система не может найти указанный путь»

Один из способов исправить это - установить кодовую страницу на 1252 (это работает для меня). Но я боюсь, что нам придется устанавливать кодовые страницы для любой неанглийской локали, и выяснить, какую кодовую страницу использовать, довольно сложно.

Есть ли альтернативный подход к решению этой проблемы? Может быть, параметр командной строки или что-то еще?

Ответы [ 6 ]

17 голосов
/ 12 марта 2014

Другой способ сделать это в Windows - использовать wordpad.exe :

  1. Запустить wordpad.exe
  2. Напишите ваш скрипт, как обычно, с акцентами
  3. Выберите Сохранить как > Другие форматы
  4. Выберите, чтобы сохранить его как Текстовый документ MS-DOS (* .txt)
  5. Изменить расширение файла с .txt на .bat
9 голосов
/ 02 февраля 2013

У меня была такая же проблема, и этот ответ решил ее. По сути, вы должны обернуть ваш скрипт кучей команд, чтобы изменить кодовую страницу терминала, а затем восстановить ее.

@echo off
for /f "tokens=2 delims=:." %%x in ('chcp') do set cp=%%x
chcp 1252>nul

:: your stuff here ::

chcp %cp%>nul

Работал как шарм!

6 голосов
/ 22 октября 2011

Поскольку у вас есть @echo off, вы не можете видеть, что ваш пакет отправляет в командную строку. При воспроизведении этой проблемы кажется, что символ ñ интерпретируется неправильно, так как вывод, который я вижу:

C:\espa±ol\jre\bin\java -version
The system cannot find the path specified.

Мне удалось заставить его работать, отобразив команду в командном файле из командной строки, т.е.

echo C:\español\jre\bin\java.exe -version>>test.bat

Похоже, это переводит символ в то, что ищет командная строка, хотя я тестировал его только с английским языковым стандартом, поэтому не знаю, будет ли он работать во всех ситуациях. Кроме того, если открыть пакет в текстовом редакторе, таком как блокнот, он выглядит неправильно (C:\espa¤ol\jre\bin\java.exe)

4 голосов
/ 26 октября 2016

Я использую Notepad ++, и у него есть возможность изменить «наборы символов», OEM-US сделал свое дело. ;)

3 голосов
/ 26 апреля 2016

Используйте Alt + 0164 для ¤ вместо Alt + 164 - в пакетном файле ... Это будет выглядеть странно, но ваш скрипт должен работать.

0 голосов
/ 08 декабря 2015

У меня тоже была такая же проблема. Я пытался создать простой командный файл XCOPY для копирования электронной таблицы из одной папки в другую. В его имени был символ "é", и он отказывался копировать.

Даже попытки использовать предложения Каталина и Металкодера не сработали на моей неолитической машине с Windows XP. Затем я внезапно подумал: почему бы не сделать все как можно более простым (поскольку я сам чрезвычайно прост, когда дело доходит до компьютеров) и просто заменить в коде командного файла «é» подстановочным знаком «?».

И угадайте что? Это сработало!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...