Запуск файла 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. Тогда я вдруг подумал: "Почему бы не уберечь вещи как можно проще (поскольку я сам очень простомыслен, когда речь идет о компьютерах) и просто замените в командном файле" é "символом подстановки"? ".
И угадайте, что? Это сработало!