PDA

Показать полную графическую версию : Создание макси для Total Commander


Страниц : [1] 2

Viberezh
13-10-2017, 13:30
Добрый день. Перейду сразу к сути дела. Необходим батник, который сохранял бы имена файлов из папки в которой лежит в текстовой документ, блокнот например.
Теперь подробнее. Есть некая папка, где лежит n-ное количество файлов в одном расширении, имена у всех разные по типу ABV#123456.qst букв может быть и больше, так вот, надо чтобы батник заменял часть имени идущую с "#" на "*", то есть ABV* и сохранял результат по всем файлам в текстовой документ, чтобы конечный результат выглядел следующим образом в одну строку: abv* abc* asd* ghj*... и тд. Такое возможно?

Iska
13-10-2017, 14:50
На WSH:
Option Explicit

Dim strSourceFolder

Dim objFSO
Dim objFile

Dim strValue


If WScript.Arguments.Count = 1 Then
strSourceFolder = WScript.Arguments.Item(0)

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FolderExists(strSourceFolder) Then
With WScript.CreateObject("VBScript.RegExp")
.Pattern = "(.+)#.*"

For Each objFile In objFSO.GetFolder(strSourceFolder).Files
If .Test(objFile.Name) Then
If IsEmpty(strValue) Then
strValue = .Execute(objFile.Name).Item(0).Submatches.Item(0) & "*"
Else
strValue = strValue & " " & .Execute(objFile.Name).Item(0).Submatches.Item(0) & "*"
End If
End If
Next

With objFSO.CreateTextFile(objFSO.BuildPath(strSourceFolder, "Result.txt"))
.Write strValue
.Close
End With
End With
Else
WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
WScript.Quit 2
End If

Set objFSO = Nothing
Else
WScript.Echo "Usage: wscript.exe """ & WScript.ScriptName & """ <Source folder>"
WScript.Quit 1
End If

WScript.Quit 0

Исходная папка задаётся параметром скрипта. Для Total Commander можно использовать меню запуска, панель инструментов и т.п. с аргументом «"%P"».

А что Вы потом с содержимым этого файла делать будете?

Viberezh
13-10-2017, 17:41
Iska, Не работает, либо я делаю что то не так. Файл нужен для создания шаблона маски в тотале для последующего копирования файлов по нему.

Iska
13-10-2017, 18:19
1. Скопируйте код в буфер обмена.
2. Откройте Блокнот.
3. Вставьте скопированный код из буфера обмена в Блокнот.
4. Сохраните содержимое Блокнота в любую папку под любым именем, с расширением «.vbs» в кодировке ANSI/1251.
5. В Total Commander'е добавьте новый пункт меню «Запуск» в виде:
https://i.imgur.com/B8OWHU9.png
где:
1) название пункта меню;
2) имя интерпретатора скриптов («wscript.exe» или «сscript.exe»);
3) путь и имя к сохранённому в п.4. файлу с кодом;
4) параметр скрипта, куда при исполнении Total Commander вместо «%P» подставит текущий путь с активной панели.

6. Выберете пункт меню, находясь в искомом каталоге:
https://i.imgur.com/vOXDVZZ.png
7. Обновите активную панель, нажав Ctrl-R, дабы увидеть файл с результатами «Result.txt»:
https://i.imgur.com/fuCaR7S.png

P.S. Понял Вашу задумку — \Выделение\Загрузить выделение из файла, оно?

Viberezh
13-10-2017, 22:26
Сделал всё по инструкции.
https://pp.userapi.com/c841423/v841423174/2e9e3/DNup9Ico5ok.jpg
Вот для этого надо.
https://pp.userapi.com/c841531/v841531174/27a34/hjLv31M9OgU.jpg

Iska
14-10-2017, 00:05
Сделал всё по инструкции. »
Почти. Угловые кавычки вокруг %P — лишние. Смотрите, в моём примере их нет:
https://i.imgur.com/B8OWHU9.png
— только обычные двойные. Вероятно Вы взяли их из текста п.5.4 — не надо, уберите угловые и оставьте только двойные.

Viberezh
14-10-2017, 11:32
Iska, спасибо большое, всё работает! А чтобы скрипт работал в тотале с флешки его лучше в папку с тоталом закинуть, и не будет ли конфликта пути с буквой флешки на разных компах?

Iska
14-10-2017, 11:53
и не будет ли конфликта пути с буквой флешки на разных компах? »
Будет.

его лучше в папку с тоталом закинуть »
Не стоит его захламлять. Лучше создайте внутри какой-нибудь каталог, например, «My Scripts», и поместите скрипт туда. Тогда путь может выглядеть как «"%COMMANDER_PATH%\My Scripts\Имя скрипта.vbs"»:
https://i.imgur.com/b6hiKzI.png

Viberezh
14-10-2017, 12:01
Iska, Огромное спасибо! Всё прекрасно работает!

Iska
14-10-2017, 12:13
Viberezh, а знаете, как всё вышеизложенное выглядит в Far Manager'е, включая и само выделение файлов?
lua:Keys('Add CtrlY') print('/.+#.*/') Keys('Enter')
И всё :).

Viberezh
14-10-2017, 12:25
Iska, забавно, но фаром не пользуюсь :)

Iska
14-10-2017, 12:47
Viberezh, ну, мало ли. Вдруг когда-нибудь дозреете ;).

Iska
14-10-2017, 17:06
Viberezh, я решил Вас ещё побеспокоить. Вы уверены, что Вам точно нужен такой вот путь: скрипт→файл с масками→загрузить маски для выделения? В Total Commander ведь тоже есть регулярки для выделения:
https://i.imgur.com/5w5gCab.png
не?! Один раз создать шаблон, затем пользоваться.

Viberezh
14-10-2017, 19:36
Iska, это создаст шаблон маски файлов с # в имени?

Iska
14-10-2017, 19:41
Iska, это создаст шаблон маски файлов с # в имени? »
Да. По этому шаблону будут выделены файлы с не менее чем одним символом до знака #, и с произвольным количеством символов (в том числе нулевым) — после.

Viberezh
14-10-2017, 19:47
Iska, такой вариант не подойдёт, суть даже не в решетке а в самих буквах. По файлам запроса создается маска с помощью скрипта и с её помощью копируются необходимые файлы пополнения.

Iska
14-10-2017, 20:23
Viberezh, почему нет? В чём разница?

Viberezh
15-10-2017, 13:19
Iska, потому что есть 2 типа файлов: "запрос" и "пополнение". У каждого информационного банка (ИБ) есть свой файл запроса, пусть ИБ называется "Abv", то файл запроса будет выглядеть условно "abv#1234.qst", соответственно в комплекте может быть несколько ИБ и чтобы их обновить нужны соответствующие файлы пополнения, вот для этого и нужна маска, чтобы отфильтровать отсутствующие в комплекте ИБ.

Iska
15-10-2017, 13:58
Viberezh, Вы точно на мои вопросы отвечали? Впрочем, ладно, оставим. Если Вам удобнее так, то делайте так. Хотя я лично не вижу никакой разницы.

Viberezh
15-10-2017, 15:31
Iska, разница есть, по вашему второму способу выделятся все файлы с решеткой, но дело в том, что они все с решеткой и нужно отсеивать лишние.




© OSzone.net 2001-2012