Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Декодировать URL кириллицу в Bat файле.

Ответить
Настройки темы
CMD/BAT - Декодировать URL кириллицу в Bat файле.

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый вечер!
Занимаюсь разработкой БД для использования в нашей организации. Суть базы данных такая, что с браузера должен работать переход на локальную папку пользователя. Но к сожалению браузеры из за политики безопасности эту функцию закрыли на прочь. Я нашел в интернете альтернативный вариант, как этот запрет обойти:

Переход по ссылке с сайта:
Код: Выделить весь код
<a href="myproto://C:/My Folder/123">открыть папку</a>
Одноразовый запуск рег файла на компьютера пользователя:
Код: Выделить весь код
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\myproto]
"URL Protocol"=""
@="URL:Myproto Protocol"

[HKEY_CLASSES_ROOT\myproto\shell]

[HKEY_CLASSES_ROOT\myproto\shell\open]

[HKEY_CLASSES_ROOT\myproto\shell\open\command]
@="\"C:\\myproto.bat\" \"%1\""

Выполняемый bat файл на компьютере пользователя, который должен открывать папку в ссылке:
Код: Выделить весь код
@echo off
set "path=%~1"
setlocal enabledelayedexpansion
set path=%path:myproto://=%
set path=%path:"=%
set path=%path:/=\%
set path=!path:%%20= !
set path=!path:%%5C=\!
C:\Windows\explorer.exe "%path%"
Меня такой формат открытия вполне устраивает. Есть одно НО, этот способ не работает если папка названа русским языком. Посоветуйте, как можно решить эту проблему! Сразу скажу что далек от темы с батниками.

Отправлено: 20:06, 16-11-2019

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6626
Благодарности: 1528

Профиль | Отправить PM | Цитировать


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

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:20, 16-11-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
БД в организации, зависящая от огромного размера дыры в безопасности, когда браузер может открывать локальные каталоги, и от батников - это сильно.
А потом говорят - переходите на отечественное ПО. А оно всё сплошь вот такое - из костылей и пластилина.
Поучения это конечно хорошо, но первое я не в кои море не претендую на создание ПО для общего распространения, моя задача просто сделать более удобным фильтрацию и сортировку большой файловой системы, которая накопилась за много лет на сетевом диске компании. Второе данной системой будет пользоваться 5-10 человек одной организации. Поэтому о какой безопасности мы говорим в компании, у которой даже нету финансовых средств на нормальное ПО? Лучше подскажите как можно решить данную проблему и этим вы поможете одной маленькой и не богатой организации и заработаете +10 к своей карме))

Отправлено: 11:18, 17-11-2019 | #3


Старожил


Сообщения: 352
Благодарности: 193

Профиль | Отправить PM | Цитировать


artemleb, Через echo надо смотреть что там на вход батнику подаётся.

Отправлено: 11:58, 17-11-2019 | #4


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата iglezz:
artemleb, Через echo надо смотреть что там на вход батнику подаётся.
Я посмотрел туда приходит не декодированный url в таком виде: C:\%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0

Отправлено: 12:24, 17-11-2019 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


artemleb, вот потому-то пакетным файлам там не место.

Скрытый текст
*.reg
Код: Выделить весь код
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\myproto]
"URL Protocol"=""
@="URL:Myproto Protocol"

[HKEY_CLASSES_ROOT\myproto\shell]

[HKEY_CLASSES_ROOT\myproto\shell\open]

[HKEY_CLASSES_ROOT\myproto\shell\open\command]
@="wscript.exe \"C:\\Мои проекты\\0284\\0001.js\" \"%1\""
0001.js
Код: Выделить весь код
sFolder = decodeURI(WScript.Arguments.Item(0)).replace('myproto:\/\/', '').replace('\/', '');

if(WScript.CreateObject('Scripting.FileSystemObject').FolderExists(sFolder)) {
	WScript.CreateObject('Shell.Application').Open(sFolder);
} else {
	WScript.Echo('Can\'t find folder [' + sFolder + ']');
}
0001.html
Код: Выделить весь код
<html>
	<body>
		<a href="myproto://C:\Мои проекты\0135">открыть папку 0135</a><br />
		<a href="myproto://C:\Мои проекты\bla-bla-bla">открыть папку bla-bla-bla</a>
	</body>
</html>

P.S. И в целом коллега DJ Mogarych абсолютно прав.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:48, 17-11-2019 | #6


Старожил


Сообщения: 352
Благодарности: 193

Профиль | Отправить PM | Цитировать


artemleb, Фраза "Занимаюсь разработкой БД для использования в нашей организации." наводит на мысли, что вам доступны более адекватные способы решения этой задачи, чем использование батников.

Программа минимум в рамках имеющегося батника -- использовать утилиту-перекодировщик для строки с url (таких не знаю, но они наверняка существуют)

Но лучше или нормальное windows-приложение или скрипт на локальном вебсервере.

Отправлено: 13:10, 17-11-2019 | #7


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
P.S. И в целом коллега DJ Mogarych абсолютно прав. »
Я согласен, что данный способ является костылем, который еще и не безопасный. Но я интересовался этой темой в просторах интернет и пробовал много различных вариантов и не один не работал. Пришлось брать вышеуказанный способ, жертвуя безопасностью. Если предложите правильный способ буду премного благодарен, готов даже отблагодарить, отправить 500 руб. на мороженое)

P.S. Ваш способ работает, благодарю за помощь!!!

Отправлено: 16:28, 17-11-2019 | #8


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


artemleb, за использование myproto следовало бы настучать по рукам (правила форума запрещают эксплойты и иже с ними, так что довольствуйтесь лишь сухой констатацией факта небезопасности использования сего). Во-вторых, что Apache, что nginx вполне дружат с кириллицей (правильно ли ли вас понимаю, у вас сервачок?), - прописывается все в конфигах. В-третьих, командный язык никогда не предназначался для решения сложных задач, для этого уже более десятка лет существует PowerShell (и прочие интерпретируемые языки вроде Perl или Python - и вовсе динозавры, к слову), а с учетом, что для PowerShell есть bindings различных СУБД, то проблема озвученная здесь проблемой-то не является. Но раз уж вы любитель плети и латекса острых ощущений, то декодировать строку вроде C:\%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0 c помощью PowerShell можно так:
Код: Выделить весь код
pwsh -nop -c [Uri]::UnescapeDataString('C:\%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0')
Вернет:
Код: Выделить весь код
C:\папка
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:13, 17-11-2019 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Декодировать URL кириллицу в Bat файле.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Условие в Bat-файле MrDmitri Скриптовые языки администрирования Windows 3 25-03-2019 19:11
CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле InVariable Скриптовые языки администрирования Windows 4 22-05-2015 20:06
CMD/BAT - Сочетание клавиш в bat файле. Kamerin Скриптовые языки администрирования Windows 2 20-09-2011 02:22
CMD/BAT - [решено] Bat Url Нужна помощь root221 Скриптовые языки администрирования Windows 4 22-11-2010 04:26
Доступ - [решено] КАК СМЕНИТЬ АДРЕС URL В ФАЙЛЕ FINALIZE.EXE В SP agrei678 Тест-форум 2 09-05-2010 17:28




 
Переход