Q:Столкнулся со следующей проблемой: при копировании в буфер имён файлов на FTP, ссылка имеет вид: "ftp://212.212.212.212/Public/Video/Films (фильмы)/int/BMWfilms/1 - Ловушка.avi" со всеми пробелами, русскими буквами и т.д., что, в принципе, не совсем верно. Хотелось бы получать ссылку в правильном виде, т.е: ftp://212.212.212.212/Public/Video/Films%20(%F4%E8%EB%FC%EC%FB)/int/BMWfilms/1%20-%20%CB%EE%E2%F3%F8%EA%E0.avi
Такая ссылка хоть и менее наглядна, зато спокойно открывается любым браузером и любой качалкой.
A: Скрипт с использованием Script Helper:
'========================================================================== ' Преобразование текстовой ссылки в буфере - ' замена русских символов и пробелов на 16-теричный код этих символов ' с префиксом % '========================================================================== Dim TCS, Str, StrF, ChCode, Ch, i Set TCS = CreateObject("TCScript.Helper") Str = TCS.GetTextFromClip For i = 1 To Len(Str) Ch = Mid(Str, i, 1) ChCode = Asc(Ch) If (ChCode > 191) or (ChCode = 32) or (ChCode = 168) or (ChCode = 184) Then StrF = StrF & "%" & Hex(ChCode) Else StrF = StrF & Ch End If Next TCS.SetTextToClip(StrF) Set TCS = Nothing Wscript.Quit Тот же скрипт, но с дополнительными возможностями: '========================================================================== ' Преобразование текстовой ссылки в буфере - ' замена русских символов и пробелов на 16-тиричный код этих символов ' с префиксом % ' Можно предварительно выполнить копирование путей в буфер, ' указав в качестве параметра один из вариантов копирования: ' 0 - Копировать в буфер имена файлов ' 1 - Копировать в буфер имена с путями ' 2 - Копировать в буфер имена с UNC-путём ' 3 - Копировать в буфер путь источника ' 4 - Копировать в буфер путь получателя '========================================================================== Dim TCS, Str, StrF, ChCode, Ch, i Set TCS = CreateObject("TCScript.Helper") If WScript.Arguments.Count > 0 Then Select Case WScript.Arguments(0) Case 0 TCS.SendCommand(2017) Case 1 TCS.SendCommand(2018) Case 2 TCS.SendCommand(2021) Case 3 TCS.SendCommand(2029) Case 4 TCS.SendCommand(2030) End Select End If Str = TCS.GetTextFromClip For i = 1 To Len(Str) Ch = Mid(Str, i, 1) ChCode = Asc(Ch) If (ChCode > 191) or (ChCode = 32) or (ChCode = 168) or (ChCode = 184) Then StrF = StrF & "%" & Hex(ChCode) Else StrF = StrF & Ch End If Next TCS.SetTextToClip(StrF) Set TCS = Nothing Wscript.Quit