1 (изменено: Parazit, 2017-01-18 01:40:27)

Тема: AutoIt: Получить расширения выделенных файлов

Привет. Задача получить расширения выделенных файлов. Я в Total Commander выделяю файлы с параметром %P%S.

Существует ли в AutoIt такой метод, который возвращает расширения файлов?
Вот скрипт

#include <Array.au3>

If WinExists("[CLASS:TTOTAL_CMD]") Then
WinActivate("[CLASS:TTOTAL_CMD]")
endif
$aaa = _ArrayToString($CmdLine, ' ', 1)
MsgBox ( 1, "text", $aaa)

Вместо полных имён, в конечном итоге должно выглядить так.

*.txt; *.htm; *.mp3

2

Re: AutoIt: Получить расширения выделенных файлов

For $i = 1 To $CmdLine[0]
  $Path = $CmdLine[$i]
  Msgbox(0,"", StringRegExpReplace($Path, '^(?:.*?)(\.[^.]+)?$', '*\1'))
Next

3

Re: AutoIt: Получить расширения выделенных файлов

Flasher, так получается поочерёдное перебирание элементов массива.
А мне надо, чтобы это было одной строкой.

4

Re: AutoIt: Получить расширения выделенных файлов

Понятно.

Dim $Exts
For $i = 1 To $CmdLine[0]
  $Exts &= '; ' & StringRegExpReplace($CmdLine[$i], '^(?:.*?)(\.[^.]+)?$', '*\1')
Next
Msgbox(0,"", StringMid($Exts, 3))

5

Re: AutoIt: Получить расширения выделенных файлов

Спасибо. Почти то. Вот задача теперь, как удалить первую ненужную точку с запятой, вместе с пробелом.

6

Re: AutoIt: Получить расширения выделенных файлов

Ну, здрасте. StringMid это и делает. Версия AutoIt актуальная?

7

Re: AutoIt: Получить расширения выделенных файлов

Точно. Я просто делал под другую задачу, и это опустил.

8

Re: AutoIt: Получить расширения выделенных файлов

А вообще зачем это нужно? Какой толк от повторяющихся масок?

9

Re: AutoIt: Получить расширения выделенных файлов

Задача была получить все расширения файлов.
Я выделяю по одному экземпляру выделенных файлов, и с помощью этого скрипта можно делать любые вещи
с полученными расширениями. Копировать, перемещать, изменять атрибуты, архивировать и так далее.
Я облазил всю справку, но так и не нашёл ту функцию, которая возвращает расширения переданных файлов.

10

Re: AutoIt: Получить расширения выделенных файлов

Я облазил всю справку, но так и не нашёл ту функцию, которая возвращает расширения переданных файлов.

https://www.autoitscript.com/autoit3/do … hSplit.htm

11

Re: AutoIt: Получить расширения выделенных файлов

Parazit
Я всё равно не понимаю.
1. Файлы могут быть выделены с одним и тем же расширением. В итоге получатся дубликаты.
2. Зачем вообще получать имена, чтобы вытащить из них только расширения? Нет проще задать расширения сразу?

Malcev
Инклюды не в счёт.

12

Re: AutoIt: Получить расширения выделенных файлов

Flasher пишет:

Malcev
Инклюды не в счёт.

А че̇м они плохи?

13

Re: AutoIt: Получить расширения выделенных файлов

Странно видеть такой вопрос от разработчика, который кроме разве что с #Include, Gdip.ahk нигде их не использует.
А мораль сей басни такова: чтобы выкорчевать маленькую козюльку, нужно запустить в тело 3 банки соплей.

$FPath = 'C:\bla bla bla\bla lba.ext3.ext2.ext1.ext'
MsgBox(0,"", ObjCreate('Scripting.FileSystemObject').GetExtensionName($FPath))

14

Re: AutoIt: Получить расширения выделенных файлов

Согласен. Но для новичка это, по-моему, самый простой вариант.

15

Re: AutoIt: Получить расширения выделенных файлов

Проще того, что в крайнем коде? http://www.kolobok.us/smiles/mini/pardon_mini.gif