MoBiRo
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Вот доделал программку, может кому-нибудь пригодиться. Если у вас на компьютере стоит ftp сервер чисто для своих нужд (чтобы вам передали файл на прямую, а не через файлообменник или чтобы скачали ваш так же напрямую), то вам возможно пригодиться этот скриптик. При переносе файлов на скомпилированный скрипт, они переносятся в ftp-папку и ихнее имя меняется на транслитированный вариант без пробелов (пробелы заменяются "_"). По окончанию работы программа заносит в буфер обмена список ссылок на ваши файлы и ихний размер, округлённый до тысячных. Другими словами, то, что вы скопировали до запуска скрипта - удалится, вместо этого будет список ссылок. Так же если в папке уже существует файл с подобным именем, то к имени файла добавляется символ "_". Чтобы подредактировать скриптик под свои нужды надо прочитать комментарии. Кроме переменный $FTPLocation и $FTPAdress менять ничего не нужно. Код: #Include <File.au3> Dim $InputCharset [153] = [32, 1105, 1081, 1094, 1091, 1082, 1077, 1085, 1075, 1096, 1097, 1079, 1093, 1098, 1092, 1099, 1074, 1072, 1087, 1088, 1086, 1083, 1076, 1078, 1101, 1103, 1095, 1089, 1084, _ 1080, 1090, 1100, 1073, 1102, 96, 113, 119, 101, 114, 116, 121, 117, 105, 111, 112, 91, 93, 97, 115, 100, 102, 103, 104, 106, 107, 108, 59, 39, 122, 120, 99, 118, 98, 110, 109, 44, 46, 47, 49, 50, 51, _ 52, 53, 54, 55, 56, 57, 48, 45, 61, 92, 33, 64, 35, 36, 37, 94, 38, 42, 40, 41, 95, 43, 124, 1025, 1049, 1062, 1059, 1050, 1045, 1053, 1043, 1064, 1065, 1047, 1061, 1066, 1060, 1067, 1042, 1040, 1055, _ 1056, 1054, 1051, 1044, 1046, 1069, 1071, 1063, 1057, 1052, 1048, 1058, 1068, 1041, 1070, 81, 87, 69, 82, 84, 89, 85, 73, 79, 80, 65, 83, 68, 70, 71, 72, 74, 75, 76, 90, 88, 67, 86, 66, 78, 77] Dim $OutputCharset [153] = ["_", "e", "i", "c", "u", "k", "e", "n", "g", "sh", "sch", "z", "h", "'", "f", "y", "v", "a", "p", "r", "o", "l", "d", "j", "e", "ya", "ch", "s", "m", "i", "t", "'", "b", _ "yu", "`", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "1", "2", "3", "4", _ "5", "6", "7", "8", "9", "0", "-", "=", "\", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "+", "|", "E", "I", "C", "U", "K", "E", "N", "G", "SH", "SCH", "Z", "H", "'", "F", "Y", "V", "A", _ "P", "R", "O", "L", "D", "J", "E", "YA", "CH", "S", "M", "I", "T", "'", "B", "YU", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", _ "B", "N","M"] Dim $FileName ; имя файла без расширения Dim $NameLength ; длинна имени файла Dim $FileNameArray ; массив, содержащий коды всех символов имени файла Dim $FileExt ; расширение файла Dim $FileDrive ; диск, на котором расположен файл. по сути эта переменная вообще не используется, но без неё появляется ошибка... Dim $FileDirectory ; путь из папок (всё оставшееся кроме названия диска и имени файла). так же нигде не используется Dim $FileSize ; размер файла Dim $i, $j, $l ; счётчики, использующиеся при For Dim $FTPFilePath ; конечный путь, содержащий адрес ftp в интернете и полное имя файла Dim $ToClip ; список из ссылок, который заносится в клипборд Dim $FTPLocation = "C:\MyFTP\" ; местонахождение папки ftp-сервера на вашем компьютере, место куда копируются файлы Dim $FTPAdress = "ftp://myftp.ru/" ; адрес, к которому будет приписываться имя файла. ; Например, если вы напишите ftp://myftp.ru/, то вы получите сслыки вида: ; ftp://myftp.ru/<filename> ; если к вашему ip не привязан домен, тогда уберите комментарии у следующего кода: ;~ #Include <INet.au3> ;~ $FTPAdress = "ftp://" & _GetIP() & "/" For $i = 1 To $cmdline[0] _PathSplit($cmdline[$i], $FileDrive, $FileDirectory, $FileName, $FileExt) $FileSize = Round (((FileGetSize($cmdline[$i])) / 1048576), 3) $NameLength = StringLen($FileName) $FileNameArray = StringToASCIIArray($FileName) $FileName = "" For $j = 0 To $NameLength - 1 For $l = 0 to 151 If $FileNameArray[$j] = $InputCharset[$l] Then $FileName = $FileName & $OutputCharset[$l] EndIf Next Next While FileExists ($FTPLocation & $FileName & $FileExt) $FileName = $FileName & "_" WEnd FileCopy($cmdline[$i], $FTPLocation & $FileName & $FileExt) $FTPFilePath = $FTPAdress & $FileName & $FileExt & " ( " & $FileSize & "mb )" If $i <> $cmdline[0] Then $ToClip = $ToClip & $FTPFilePath & @CRLF Else $ToClip = $ToClip & $FTPFilePath EndIf Next ClipPut($ToClip) TrayTip("FTP Script", "Done", 5, 1) Sleep (5000) |
|