Запуск файла BAT/CMD с акцентированными символами в нем

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

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

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

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

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

Ответ 1

Другим способом сделать это, в Windows, является использование wordpad.exe:

  • Запустите wordpad.exe
  • Напишите свой script, как обычно, с акцентами
  • Выберите Сохранить как > Другие форматы
  • Выберите, чтобы сохранить его как Текстовый документ MS-DOS (*.txt)
  • Измените расширение файла с .txt на .bat

Ответ 2

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

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

:: your stuff here ::

chcp %cp%>nul

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

Ответ 3

Поскольку у вас есть @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

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

Ответ 5

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

Ответ 6

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

Даже попытки использовать предложения Katalin и Metalcoder не работали на моей неолитической машине Windows XP. Тогда я вдруг подумал: "Почему бы не уберечь вещи как можно проще (поскольку я сам очень простомыслен, когда речь идет о компьютерах) и просто замените в командном файле" é "символом подстановки"? ".

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