Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] не работает bat файл если в пути имеются русские символы. (http://forum.oszone.net/showthread.php?t=211152)

Pinguine 14-07-2011 09:54 1713002

не работает bat файл если в пути имеются русские символы.
 
не работает bat файл если в пути имеются русские символы.
Для примера:

@echo off
xcopy "D:\BASE\!!!\save" "%UserProfile%\Мои документы" /E /C /H /R /K /Y /Z

@echo off
xcopy "D:\БАЗА\!!!\save" "%UserProfile%\Documents" /E /C /H /R /K /Y /Z

Хоть вариант 1, хоть вариант 2 не работают. Переименовать папки нет возможности. Что можно сделать?

P.S.>> Поиском воспользовался, но ничего подходящего не нашел.

Petya V4sechkin 14-07-2011 10:02 1713007

Цитата:

Цитата Pinguine
Поиском воспользовался, но ничего подходящего не нашел.

Что-то не то и не так искали, вопрос из FAQ (задается регулярно).
Как добиться правильной работы пакетных файлов (*.bat, *.cmd), содержащих кириллические пути?

root221 14-07-2011 15:51 1713314

если вы батник пишите в win-1251 кодировке, тогда папробуйте так.

Код:

@echo off
chcp 1251 >nul
 xcopy "D:\BASE\!!!\save" "%UserProfile%\Мои документы" /E /C /H /R /K /Y /Z


Pinguine 14-07-2011 16:45 1713358

Моя вина в поиске искал а в FAQ не заглянул. Исправлюсь :)
Возник вопрос DOS-866 и OEM 866 (пользуюсь Notepad++) это одно и тоже?

amel27 14-07-2011 17:11 1713382

Pinguine, DOS/OEM/866 - одно и то же (для русской локали)

Sly_Fox__ 28-10-2018 18:21 2838127

root221, Подскажи, как правильно написать данный код:
RMDIR \S \Q C:\Users\Administrator\Documents\Общие документы\Games
Не могу не как сделать чтобы на русском мог ввести. Переименовать папку " Общие документы " нельзя. Подскажи как правильно сделать, чтобы bat работал при запуске ?

Точнее код так выглядит RMDIR /S /Q C:\Users\Administrator\Documents\Общие документы\Games

Iska 28-10-2018 20:32 2838158

Цитата:

Цитата Sly_Fox__
как правильно написать данный код:
RMDIR \S \Q C:\Users\Administrator\Documents\Общие документы\Games »

Так и написать. Не забыв обрамить кавычками и использовав правильный вид слэшей для указания параметров.
Код:

rd /s /q "c:\Users\Administrator\Documents\Общие документы\Games"
Пакетный файл должен быть сохранён в кодировке OEM/866. Естественно, каталог c:\Users\Administrator\Documents\Общие документы\Games должен существовать и у пользователя, под которым будет исполняться пакетный файл, должно быть достаточно привилегий для его удаления.

tibor5 07-05-2019 19:28 2870786

Как в командном файле (лучше в CMD) прописать знак ° (''символ градуса'', 0176)?
PS: ... этот символ расположен в пути файла, который нужно запустить через батник.

Iska 07-05-2019 20:17 2870792

Цитата:

Цитата tibor5
Как в командном файле (лучше в CMD) прописать знак ° (''символ градуса'', 0176)? »

В кодировке OEM/866 ему соответствует код 0xF8.

tibor5 07-05-2019 21:52 2870802

ув. Iska, большое спасибо за отклик.
Если не в тягость, прошу детальнее для простого случая:
code:
start E:\A\Desktop\New°
... в error-окне пишет (прилагаю скрин):
Не удается найти " E:\A\Desktop\New^—". Проверьте, правильно ли указано имя и повторите попытку.
PS: ... после New (см. выше) идут 3 кракозябрины ...
СПАСИБО.
скрин:
http://i-fotki.info/25/d3dd704cc710e...14580.png.html

Iska 07-05-2019 23:25 2870809

tibor5, я же написал, что в кодировке OEM/866 данный символ имеет другой номер — не 0xB0 (176₁₀), а 0xF8 (248₁₀). А у Вас он так и остался под тем же номером (что явственно видно на скриншоте: 0xB0 в кодировке OEM/866 — это символ «░»), то, что он у Вас видится в редакторе, как символ градуса — так это потому, что пакетный файл у Вас не в той кодировке — в ANSI/1251 вместо потребной OEM/866:



Вам нужно пересохранить пакетный файл в кодировке OEM/866.

P.S. AkelPad — не лучший выбор для создания/редактирования пакетных файлов.

tibor5 08-05-2019 00:18 2870816

Iska, спасибо, усвоил. Век живи - век учись! Удачи!

YuS_2 08-05-2019 14:56 2870889

Цитата:

Цитата Iska
AkelPad — не лучший выбор для создания/редактирования пакетных файлов. »

Вы просто не умеете его готовить :)
Мало того, что он вполне подходит, в нем ещё и запускать пакетники можно, не переключаясь в консоль... :)
Да, конечно, полной эмуляции нет, но для проверки простых команд, вполне

Iska 08-05-2019 15:19 2870896

Цитата:

Цитата YuS_2
Вы просто не умеете его готовить … в нем ещё и запускать пакетники можно, не переключаясь в консоль... »

Он неудобен. Far Manager наше фсё ;).

YuS_2 08-05-2019 15:47 2870906

Цитата:

Цитата Iska
неудобен »

это чисто субъективная оценка, к тому же, это, всего лишь, дело привычки. :)
а объективно, вот например:
картинко

- где символы отображаются правильнеЕ? :wink:

Iska 08-05-2019 21:43 2870939

YuS_2, правильный ответ — можно использовать любой редактор, если в шрифте есть необходимые глифы:



У меня нет моноширинного шрифта, в котором бы был глиф для символа ﬔ. Посему мне пришлось тупо для AkelPad'а указать шрифт Arial Unicode MS (он не моноширинный, посему напрямую его для Far Manager'а использовать не получится, а вот посредством, например, ConEmu — вполне).

Но шрифты никаким боком не относятся к функционалу самих приложений.

Скрытый текст


YuS_2 09-05-2019 08:44 2870960

Цитата:

Цитата Iska
правильный ответ — можно использовать любой редактор, если в шрифте есть необходимые глифы »

Согласен, это правильно. Шрифт, кстати, Consolas, там есть эти глифы.
Но и утверждая, что AkelPad - не лучший выбор, необходимо что-то более объективное приводить, кроме удобства. :)
А возможностей там - хоть отбавляй. Особенно, что касается скриптовой части...
Например, можно даже переводчик использовать:
AkelPad

если говорить о функционале... и т.д. и т.п.

mwz 09-05-2019 11:11 2870967

Цитата:

Цитата YuS_2
А возможностей там - хоть отбавляй »

Добавьте: при использовании плагинов. ;)
Поскольку "голый" бинарник в основном является простым, хоть и весьма продвинутым, заместителем Блокнота.

Busla 09-05-2019 12:36 2870971

Цитата:

Цитата Iska
правильный ответ — можно использовать любой редактор, если в шрифте есть необходимые глифы: »

неправильный
Это в самых простых случаях символ в txt-файле однозначно соответствует глифу в шрифте. Есть модификаторы (надстрочные знаки), есть глифы для сочетания символов (массово в имитации рукописного текста), ну и эмодзи. Всё это требует поддержки со стороны ПО для корректного отображения и редактирования.

YuS_2 09-05-2019 13:49 2870978

Цитата:

Цитата mwz
Добавьте: при использовании плагинов. »

И? Это как-то уменьшает функциональные возможности? :)

Цитата:

Цитата mwz
Поскольку "голый" бинарник в основном является простым, хоть и весьма продвинутым, заместителем Блокнота. »

А в Far-е, редактор совсем "голый" используется? И плагинов нет?
Сравнивать надо сравнимое. К тому же, фаровский редактор вообще без Far не работает, но это ведь не записывается ему в минусы... :)


Цитата:

Цитата Busla
Всё это требует поддержки со стороны ПО для корректного отображения и редактирования. »

Ну, это-то само собой подразумевается. Ибо наличие неотображаемых в конкретном ПО глифов шрифта, никаких преференций не дают...

Busla 09-05-2019 14:58 2870981

Цитата:

Цитата YuS_2
И? Это как-то уменьшает функциональные возможности? »

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

YuS_2 09-05-2019 20:22 2871020

Цитата:

Цитата Busla
Поэтому каждый плагин надо рассматривать как отдельное ПО »

Это если ПО работает самостоятельно, оно может считаться отдельным, иначе это просто плагин к основной программе... как не крути.
А помимо плагинов, ещё скрипты существуют, также расширяющие функционал.
Да и вообще, конечного пользователя мало интересуют структурные характеристики ПО. Главное - функционал, который можно использовать и по возможности, как можно меньше глюко-багов... ну, ещё, возможно, дружественность интерфейса, т.е. как можно меньше заморочек для начинающего пользователя (хоть это, чаще всего и редкость, в ПО с большими возможностями функционала).

Iska 26-05-2019 19:31 2873096

Цитата:

Цитата YuS_2
Шрифт, кстати, Consolas, там есть эти глифы. »

YuS_2, у меня для символа «ﬔ» — нет.

Цитата:

Цитата YuS_2
Но и утверждая, что AkelPad - не лучший выбор, необходимо что-то более объективное приводить, кроме удобства. »

Именно удобство работы с консолью. Мои пакетные файлы не содержат pause в конце пакетных файлов.

Цитата:

Цитата YuS_2
А возможностей там - хоть отбавляй. Особенно, что касается скриптовой части... »

Проще, чем Lua? Поглядел я на .MemAlloc()/.MemRead()/.MemFree() — и заскучал ;).

Цитата:

Цитата YuS_2
Например, можно даже переводчик использовать: »

Можно, но… зачем он нужен при работе с пакетными файлами?!

Цитата:

Цитата mwz
Добавьте: при использовании плагинов.
Поскольку "голый" бинарник в основном является простым, хоть и весьма продвинутым, заместителем Блокнота. »

«И это правильный ответ!» Тот же Far Manager, тот же Mozilla Firefox, да тот же Microsoft Office интересны в первую очередь плагинами и, в случае первого и последнего, своим внутренним языком.

Цитата:

Цитата Busla
неправильный
Это в самых простых случаях символ в txt-файле однозначно соответствует глифу в шрифте. Есть модификаторы (надстрочные знаки), есть глифы для сочетания символов (массово в имитации рукописного текста), ну и эмодзи. Всё это требует поддержки со стороны ПО для корректного отображения и редактирования. »

Для отображения — само собой. Но тут все претензии к Microsoft и её реализации консоли. А редактировать можно в чём угодно, если программисты не наделали глупых ошибок при реализации (типичнейший пример: символ — это один байт, кроме латиницы — языков не существует). Впрочем, кому позарез нужно видеть символы и модификаторы в консоли в одном знакоместе, могут пользовать, например, ConEmu.

YuS_2 26-05-2019 22:30 2873130

Цитата:

Цитата Iska
Именно удобство работы с консолью. Мои пакетные файлы не содержат pause в конце пакетных файлов.»

Про паузу - не понял в чем преимущество, ну да ладно.
Собственно, о том и говорю: удобство - дело привычки, т.е. субъективная оценка.

Цитата:

Цитата Iska
Проще, чем Lua? Поглядел я на .MemAlloc()/.MemRead()/.MemFree() — и заскучал »

Ну, что тут сказать... мне сравнивать сложно, ибо знаний маловато, я Lua не изучал... и это, как бы, намек на то, что простота - опять таки необъективная оценка. :)

Цитата:

Цитата Iska
зачем он нужен при работе с пакетными файлами?! »

Ну, это просто пример возможностей, а практическое значение - дело третье... хотя, что касается переводчика, вполне себе: например, переводить комментарии, если их кто-то напишет на забугорном. :wink:


Цитата:

Цитата Iska
все претензии к Microsoft и её реализации консоли. »

Цитата:

Цитата Iska
Впрочем, кому позарез нужно видеть символы и модификаторы в консоли в одном знакоместе, могут пользовать, например, ConEmu. »

Кстати, тут сегодня уже попадалось:
https://habr.com/ru/company/microsoft/blog/452338/
Так что претензии к microsoft пора снимать, ну или скоро будет пора... возможно. :)

Iska 26-05-2019 23:18 2873136

Цитата:

Цитата YuS_2
Про паузу - не понял в чем преимущество, ну да ладно. »

Нет нужды добавлять pause в код, чтобы увидеть результат исполнения. Нет нужды открывать консоль, дабы исполнить под ней пакетный файл, если в коде нет pause.

Цитата:

Цитата YuS_2
и это, как бы, намек на то, что простота - опять таки необъективная оценка. »

После беглого просмотра код скриптов для AkelPad'а мне дико напомнил работу с WinAPI из-под VB.

Цитата:

Цитата YuS_2
например, переводить комментарии, если их кто-то напишет на забугорном. »

Ну, я как бы иногда пишу, но боюсь, мои комментарии он точно не поймёт :lol:.

Цитата:

Цитата YuS_2
Так что претензии к microsoft пора снимать, ну или скоро будет пора... возможно. »

Неа. Это ровно то же, что делает Maximus со своим ConEmu — просто GUI-терминал над консолью. Сам Console API останется таким же, как и был.

Busla 27-05-2019 00:06 2873146

Цитата:

Цитата Iska
Сам Console API останется таким же, как и был. »

его в Win 10 и 2016 несколько раз кардинально перелопачивали для нужд насквозь юникодного PoSh, и корректной интеграции линуксовых docker и WSL, а с 1803 появилась псевдо консоль ConPTY. До этого и в правду крупная переработка была только в Win7, когда обслуживание консоли выселили в отдельные файлы/процессы.

Новый терминал, как раз демонстрирует возможности нового API.

Iska 27-05-2019 00:22 2873151

Насколько кардинально?

YuS_2 27-05-2019 06:35 2873165

Цитата:

Цитата Iska
Нет нужды добавлять pause в код, чтобы увидеть результат исполнения. Нет нужды открывать консоль, дабы исполнить под ней пакетный файл, если в коде нет pause. »

Хмм, AkelPad это всё умеет, т.е. это не преимущество...

Цитата:

Цитата Iska
После беглого просмотра код скриптов для AkelPad'а мне дико напомнил работу с WinAPI из-под VB. »

Код AkelPad-a открыт, можно даже посмотреть его внутреннее устройство, при желании. Но почему VB, именно - не понял...

Цитата:

Цитата Iska
мои комментарии он точно не поймёт »

Ну это будет сильно зависеть от грамматики и орфографии, конечно... так-то можно и по-русски написать так, что ни один шифровальщик не прочтет. :)

Цитата:

Цитата Iska
Неа. Это ровно то же, что делает Maximus со своим ConEmu — просто GUI-терминал над консолью. »

Не совсем так...
https://habr.com/ru/company/microsoft/blog/453002/
https://habr.com/ru/post/164687/

Вообще, новый терминал можно пощупать уже, но для этого необходимо иметь сборку:
Цитата:

Вам нужно быть на сборках Insider или ждать выпуска 1903 года, поскольку терминал Windows ТРЕБУЕТ функций из последней версии Windows.

Iska 27-05-2019 08:11 2873170

Цитата:

Цитата YuS_2
Хмм, AkelPad это всё умеет, т.е. это не преимущество... »

Речь про:
Код:

%comspec% /c "<Path to batch file>" & pause
— я что-то видел про «начало командной строки», «завершение командной строки»?

А так:
Код:

edit:<0001.cmd
или:
Код:

view:<0001.cmd
(перенаправление вывода во Viewer или в редактор) он умеет :)?

Цитата:

Цитата YuS_2
Код AkelPad-a открыт, можно даже посмотреть его внутреннее устройство, при желании.»

Не, не, я про содержимое %ProgramFiles%\AkelPad\AkelFiles\Plugs\Scripts\*.js|*.vbs

Цитата:

Цитата YuS_2
Но почему VB, именно - не понял... »

Просто как типичный пример того, что из-под него работать с WinAPI, в общем-то, можно, но по факту жутко неудобно. Примерно так же выглядят скрипты для AkelPad'а.

Цитата:

Цитата YuS_2
Ну это будет сильно зависеть от грамматики и орфографии, конечно... так-то можно и по-русски написать так, что ни один шифровальщик не прочтет. »

Ха. Да для меня смешать в одном предложении разные времена — запросто ;). Впрочем, бывает, что я и на русском могу написать так, что хрен что поймёшь :(.

Цитата:

Цитата YuS_2
Не совсем так... »

Не знаю, почему «не совсем». По факту — из описаний я пока вижу ещё одну GUI-оболочку над консолью.

Цитата:

Цитата YuS_2
Вообще, новый терминал можно пощупать уже, но для этого необходимо иметь сборку: »

Не… Я и ConEmu-то не пользую. Ни ConEmu, ни Console, ни Console2 у меня не прижились — нет таких потребностей.

YuS_2 27-05-2019 09:29 2873178

Цитата:

Цитата Iska
Речь про: »

так и я о том же:
картинка


Цитата:

Цитата Iska
что-то видел про «начало командной строки», «завершение командной строки»? »

Не понял про что это...

Цитата:

Цитата Iska
перенаправление вывода во Viewer или в редактор) он умеет ? »

Хмм, он сам редактор, но он таки умеет захватывать вывод и даже выбирать приемник для вывода... почитать надо Log_Rus.txt (документация есть в официальных PlugsPack), там про это есть.

Цитата:

Цитата Iska
Просто как типичный пример того, что из-под него работать с WinAPI, в общем-то, можно, но по факту жутко неудобно. »

но не VB же, а WSH, всё же и да, естественно, со всеми вытекающими неудобствами. Читать надо Scripts_Rus.txt
Пояснения
Scripts плагин основан на технологии Windows Scripting Host (WSH),
таким образом, Вы можете использовать различные Windows Component
Object Model (COM) объекты. Например, Вы можете осуществить
поиск по регулярным выражениям, используя RegExp объект, работать
с файлами, используя FileSystemObject объект, создавать ярлыки,
работать с реестром Windows, используя WshShell объект, или
работать с функциями сети, используя WshNetwork объект. Также Вы
можете создавать и запускать скрипты, которые взаимодействуют с
внешними приложениями, поддерживающими Automation (такими как
Word и Excel). Код плагина основан на "COM in C" от Jeff Glatt.


Цитата:

Цитата Iska
Не знаю, почему «не совсем». По факту — из описаний я пока вижу ещё одну GUI-оболочку над консолью. »

Ну откуда в консоли GUI? :)
Это же не кнопки, менюшки и прочее присущее ГИП, а именно консоль. Ну, да, там есть вкладки, графическое меню, поэтому и сказал "не совсем"...
Суть-то у него консольная, т.е. то, что именно составляет рабочее пространство, а не виньетку.
И это ведь не замена стандартной консоли, они будут существовать в параллельных, хоть и соприкасающихся, вселенных, насколько я понял.
Т.к. говорилось о претензиях по конкретному вопросу, а в новом терминале его скорее всего решили:
Цитата:

В Windows Terminal используется GPU-ускорение DirectWrite/DirectX на основе движка рендеринга текста. Этот новый движок рендеринга текста будет отображать текстовые символы, глифы и символы, присутствующие в шрифтах на вашем ПК, включая идеограммы CJK, эмодзи, символы powerline, значки, лигатуры программирования и т. д. Этот движок даже рендерит текст намного быстрее, чем предыдущий движок GDI консоли!
Поэтому и вспомнилось о нем и ссылку на него поэтому же привел...

Iska 27-05-2019 12:18 2873200

Цитата:

Цитата YuS_2
Это же не кнопки, менюшки и прочее присущее ГИП, а именно консоль. »

По описанию — именно оболочка над консолью, наподобие PowerShell ISE. Посмотрим.


Время: 10:54.

Время: 10:54.
© OSzone.net 2001-