Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Создание файла с содержимым на основе имени другого файла
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
KrechetovRS



Joined: 21 Jun 2011
Posts: 14

Post (Separately) Posted: Tue Jun 21, 2011 22:53    Post subject: Создание файла с содержимым на основе имени другого файла Reply with quote

День добрый, у меня стоит такая задача:
Необходим скрипт, который при запуске использует имя файла под курсором (выделяется только один файл) и при запуске создает другой файл с заданным расширением и параметрическим текстом (весьма коротким). Надо это для оформление каталога для сетевого проигрывателя.

В программировании я, к сожалению, не очень силен, буду рад помощи.

 !  Моторокер:
Простой вопрос по созданию файла
Тема переименована на основании п.6 правил.
Back to top
View user's profile Send private message
Rodny



Joined: 24 Jan 2007
Posts: 949
Location: Могилёв, Беларусь

Post (Separately) Posted: Wed Jun 22, 2011 00:15    Post subject: Reply with quote

Откуда берётся текст?
И где задавать имя, расширение и путь создания файла? Параметрами кнопки?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Wed Jun 22, 2011 00:18    Post subject: Reply with quote

KrechetovRS
Если кодировка не имеет значения, то можно обойтись кнопкой, создающий файл в кодировке DOS:
Code:
TOTALCMD#BAR#DATA
cmd /c echo
Весьма короткий текст>%O.txt
shell32.dll,114
Текст в файл

1
-1

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
KrechetovRS



Joined: 21 Jun 2011
Posts: 14

Post (Separately) Posted: Thu Jun 23, 2011 22:07    Post subject: Reply with quote

Спасибо за ответ, вопрос был поставлен по идиотски.
Более понятное описание задачи:
1. есть файл "А в этой сказке было так… (1984).mkv"
абсолютный путь к файлу: "\\192.168.0.9\Public\Мультфильмы\СССР\!А-Д\А в этой сказке было так… (1984).mkv"
2. когда на нем курсор и запускаем скрипт, результатом хотелось бы получить файл "А в этой сказке было так… (1984).m3u" с текстом внутри: "nfs://192.168.0.9:/Public/Мультфильмы/СССР/!А-Д/А в этой сказке было так… (1984).mkv"

абсолютной путь получен при помощи скрипта "Копировать имена файлов с UNC-путями" в Total Commander. Можно, конечно все руками сделать, но честно лень менять прямой слеш на обратный, т.к. файлов реально много.

Спасибо
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Jun 23, 2011 23:14    Post subject: Reply with quote

Если я правильно понял:
Code:
' Создать файлы с именами выделенных в каталоге сетевого устройства
' файлов, расширением M3U и соответствующим NFS-путём в их содержимом
' Параметры: "Путь назначения>\"
' Пример: "%T"
'===========================================
CreateObject("WScript.Shell").Exec("%COMMANDER_PATH%\Utils\TCMC\TCMC.exe CM2021")
  Clip = ""
With CreateObject("InternetExplorer.Application")
  .Navigate("about:blank")
  Clip = Replace(.document.parentWindow.clipboardData.getData("Text"),"\","/")
  .Quit
End With
With CreateObject("Scripting.FileSystemObject")
  For Each F In Split(Clip, vbNewLine)
    Set N = .OpenTextFile(WScript.Arguments(0)&.GetBaseName(F)&".m3u",2,True)
    N.WriteLine "nfs:"&F
    N.Close
  Next
End With
Путь к утилите TCMC должен совпадать с приведённым в скрипте.
Если надо, могу поставить условие, чтобы обрабатывались только MKV из всего выделенного.
KrechetovRS wrote:
лень менять прямой слеш на обратный
Confused Зачем менять, если указано, что нужен именно прямой в содержимом файла?
KrechetovRS wrote:
при помощи скрипта "Копировать имена файлов с UNC-путями"
Это никакой не скрипт, а обычная внутренняя команда ТС cm_CopyNetNamesToClip.

Last edited by Flasher on Mon Jun 27, 2011 11:42; edited 1 time in total
Back to top
View user's profile Send private message
KrechetovRS



Joined: 21 Jun 2011
Posts: 14

Post (Separately) Posted: Sat Jun 25, 2011 00:43    Post subject: Reply with quote

Спасибо огромное, попробую
Back to top
View user's profile Send private message
KrechetovRS



Joined: 21 Jun 2011
Posts: 14

Post (Separately) Posted: Mon Jun 27, 2011 00:03    Post subject: Reply with quote

М-да попробовал, утилиту скачал, а что дальше то делать?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Jun 27, 2011 00:22    Post subject: Reply with quote

В каком смысле? Был запрошен скрипт. Я его написал.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Jun 27, 2011 09:30    Post subject: Reply with quote

KrechetovRS
Ещё один вариант vbs-скрипта:
Code:
'=====================================================================
' Формирование для каждого файла из файла-списка m3u-файла,
'   с содержимым вида:
'   "nfs:<//ip-адрес:>|<диск:>/<Путь>/<к файлу>/<из файла-списка>/<имя файла>.<расширение>"
'
' Параметры:
' {файл-список}
'
' Примеры параметров при вызове из TC:
' %L
'=====================================================================
Option Explicit
Dim FSO, F, F1, FF, Str, D, N
Set FSO = CreateObject("Scripting.FileSystemObject")

With FSO.OpenTextFile(WScript.Arguments(0), 1)
  Do While Not .AtEndOfStream
    F = Trim(.ReadLine)
    If F <> "" Then
      If FSO.FileExists(F) Then
        Str = FSO.GetFile(F).Path
        Set D = FSO.GetDrive(FSO.GetDriveName(F))
        N = InStr(Str, ":")
        If (D.DriveType = 3) And (N > 0) Then Str = D.ShareName & Mid(Str, N+1)
        If Left(Str, 2) = "\\" Then
          N   = InStr(3, Str, "\", 1)
          Str = Left(Str, N-1) & ":" & Mid(Str, N)
        End If
        F1 = FSO.GetParentFolderName(F) & "\" & FSO.GetBaseName(F) & ".m3u"
        Set FF = FSO.OpenTextFile(F1, 2, True)
        FF.WriteLine "nfs:" & Replace(Str, "\", "/")
        FF.Close
      End If
    End If
  Loop
  .Close
End With

Set D   = Nothing
Set FF  = Nothing
Set FSO = Nothing
Wscript.Quit()

_________________
Нет, я не сплю. Я просто медленно моргаю.


Last edited by Batya on Tue Jun 28, 2011 11:08; edited 2 times in total
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Jun 27, 2011 11:29    Post subject: Reply with quote

Batya
%L тут неуместен. Речь идёт об UNC-путях.
Back to top
View user's profile Send private message
KrechetovRS



Joined: 21 Jun 2011
Posts: 14

Post (Separately) Posted: Mon Jun 27, 2011 12:04    Post subject: Reply with quote

Получается не тот текст в файле:
Надо - nfs://192.168.0.9:/Public/Мультфильмы/СССР/!А-Д/А в этой сказке было так… (1984).mkv
Имеем - nfs:Y:/Мультфильмы/СССР/!А-Д/А в этой сказке было так… (1984).mkv
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Jun 27, 2011 12:06    Post subject: Reply with quote

KrechetovRS
Мой скрипт работает?


Last edited by Flasher on Mon Jun 27, 2011 12:06; edited 1 time in total
Back to top
View user's profile Send private message
KrechetovRS



Joined: 21 Jun 2011
Posts: 14

Post (Separately) Posted: Mon Jun 27, 2011 12:06    Post subject: Reply with quote

made by Batya

Добавлено спустя 2 минуты:

to Flasher
твой совсем не работает.
запрашивает доступ к буферу обмена и на этом - все (
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Jun 27, 2011 12:08    Post subject: Reply with quote

KrechetovRS
Прочти снизу этого поста.
Back to top
View user's profile Send private message
KrechetovRS



Joined: 21 Jun 2011
Posts: 14

Post (Separately) Posted: Mon Jun 27, 2011 12:16    Post subject: Reply with quote

Flasher

теперь ничего не происходит
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3  Next
Page 1 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group