Страница 1 из 3
Создание файла с содержимым на основе имени другого файла
Добавлено: Вт июн 21, 2011 22:53
KrechetovRS
День добрый, у меня стоит такая задача:
Необходим скрипт, который при запуске использует имя файла под курсором (выделяется только один файл) и при запуске создает другой файл с заданным расширением и параметрическим текстом (весьма коротким). Надо это для оформление каталога для сетевого проигрывателя.
В программировании я, к сожалению, не очень силен, буду рад помощи.
[mod="Моторокер"]Простой вопрос по созданию файла
Тема переименована на основании
п.6 правил.[/mod]
Добавлено: Ср июн 22, 2011 00:15
Rodny
Откуда берётся текст?
И где задавать имя, расширение и путь создания файла? Параметрами кнопки?
Добавлено: Ср июн 22, 2011 00:18
Batya
KrechetovRS
Если кодировка не имеет значения, то можно обойтись кнопкой, создающий файл в кодировке DOS:
Код: Выделить всё
TOTALCMD#BAR#DATA
cmd /c echo
Весьма короткий текст>%O.txt
shell32.dll,114
Текст в файл
1
-1
Добавлено: Чт июн 23, 2011 22:07
KrechetovRS
Спасибо за ответ, вопрос был поставлен по идиотски.
Более понятное описание задачи:
1. есть файл "А в этой сказке было так… (1984).mkv"
абсолютный путь к файлу: "\\192.168.0.9\Public\Мультфильмы\СССР\!А-Д\А в этой сказке было так… (1984).mkv"
2. когда на нем курсор и запускаем скрипт, результатом хотелось бы получить файл "А в этой сказке было так… (1984).m3u" с текстом внутри: "nfs://192.168.0.9:/Public/Мультфильмы/СССР/!А-Д/А в этой сказке было так… (1984).mkv"
абсолютной путь получен при помощи скрипта "Копировать имена файлов с UNC-путями" в Total Commander. Можно, конечно все руками сделать, но честно лень менять прямой слеш на обратный, т.к. файлов реально много.
Спасибо
Добавлено: Чт июн 23, 2011 23:14
Flasher
Если я правильно понял:
Код: Выделить всё
' Создать файлы с именами выделенных в каталоге сетевого устройства
' файлов, расширением 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 писал(а):лень менять прямой слеш на обратный

Зачем менять, если указано, что нужен именно прямой в содержимом файла?
KrechetovRS писал(а):при помощи скрипта "Копировать имена файлов с UNC-путями"
Это никакой не скрипт, а обычная внутренняя команда ТС
cm_CopyNetNamesToClip.
Добавлено: Сб июн 25, 2011 00:43
KrechetovRS
Спасибо огромное, попробую
Добавлено: Пн июн 27, 2011 00:03
KrechetovRS
М-да попробовал, утилиту скачал, а что дальше то делать?
Добавлено: Пн июн 27, 2011 00:22
Flasher
В каком смысле? Был запрошен
скрипт. Я его написал.
Добавлено: Пн июн 27, 2011 09:30
Batya
KrechetovRS
Ещё один вариант vbs-скрипта:
Код: Выделить всё
'=====================================================================
' Формирование для каждого файла из файла-списка 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()
Добавлено: Пн июн 27, 2011 11:29
Flasher
Batya
%L тут неуместен. Речь идёт об UNC-путях.
Добавлено: Пн июн 27, 2011 12:04
KrechetovRS
Получается не тот текст в файле:
Надо - nfs://192.168.0.9:/Public/Мультфильмы/СССР/!А-Д/А в этой сказке было так… (1984).mkv
Имеем - nfs:Y:/Мультфильмы/СССР/!А-Д/А в этой сказке было так… (1984).mkv
Добавлено: Пн июн 27, 2011 12:06
Flasher
KrechetovRS
Мой скрипт работает?
Добавлено: Пн июн 27, 2011 12:08
KrechetovRS
made by Batya
Добавлено спустя 2 минуты:
to Flasher
твой совсем не работает.
запрашивает доступ к буферу обмена и на этом - все (
Добавлено: Пн июн 27, 2011 12:08
Flasher
KrechetovRS
Прочти снизу
этого поста.
Добавлено: Пн июн 27, 2011 12:16
KrechetovRS
Flasher
теперь ничего не происходит