Cоздание txt с именем выделенных с добавлением постфикса

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: CaptainFlint, Nik, d-view, Моторокер, Avada

Ответить
Аватара пользователя
king_art
Сообщения: 5
Зарегистрирован: Вс мар 16, 2025 12:27

Cоздание txt с именем выделенных с добавлением постфикса

Сообщение king_art »

Уважаемые специалисты,
Помогите, пожалуйста, со скриптом, который бы создавал из выделенных файлов с любым расширением, пустые текстовые файлы с таким же названием и с добавлением постфикса (_nn) на конце*
*nn = no need
Например есть выделенные файлы:
aaa.avi
bbb.mkv
ccc.mp4
После применения скрипта создались бы:
aaa_nn.txt
bbb_nn.txt
ccc_nn.txt

Нашел, что-то похожее от Batya, но надо в параметрах каждый раз менять расширение для исходных файлов, так же применятся для всех, а не для выделенных, ну и нет постфикса в конце.
forum.wincmd.ru/viewpost.php?p=14555
Batya писал(а):
ADv писал(а):помогите, plz. нужен скрипт, который бы создавал в текущей папке текстовый файл с именем mp3-шки.

Код: Выделить всё

'==========================================================================
' Создание в текущей папке для всех файлов с указанным расширением
'   аналогичного файла с другим указанным расширением

' В параметрах вызова из TC должно быть прописано:
' "%P" {расширение исходных файлов} {расширение создаваемых файлов}
' Пример:
' "%P" mp3 txt
'==========================================================================
Dim MB
If WScript.Arguments.Count < 3 Then
  MB = MsgBox("Заданы не все параметры!", vbOKOnly + vbExclamation, "Создание новых файлов")
  WScript.Quit
End If

Dim FSO, CurrentFolder, Ext1, Ext2, oFolder, oFile, NewFilePath, oNewFile
Set FSO = CreateObject("Scripting.FileSystemObject")

CurrentFolder = WScript.Arguments(0)
Ext1          = WScript.Arguments(1)
Ext2          = WScript.Arguments(2)

If not FSO.FolderExists(CurrentFolder) Then
  MB = MsgBox("Папка " & CurrentFolder & " не существует!", vbOKOnly + vbExclamation, "Создание новых файлов")
  WScript.Quit
End If

Set oFolder = FSO.GetFolder(CurrentFolder)

For Each oFile in oFolder.Files
  If FSO.GetExtensionName(oFile.Path) = Ext1 Then
    NewFilePath = CurrentFolder & FSO.GetBaseName(oFile.Path) & "." & Ext2
    If not FSO.FileExists(NewFilePath) Then
      Set oNewFile = FSO.CreateTextFile(NewFilePath)
      oNewFile.Close
    End If
  End If
Next

Set oFolder  = Nothing
Set oFile    = Nothing
Set oNewFile = Nothing
Set FSO      = Nothing
Wscript.Quit
Отослал также на мыло.
В параметрах кнопки (команды) надо указать 3 параметра, например:
"%P" mp3 txt

Edit:
Выяснилось, что %P в параметрах кнопки надо поставить в кавычки. Иначе криво работает, если в пути папок есть пробелы. Спасибо ADv.
До сих пор не уяснил для себя, как при разборе строки параметров Гислер с кавычками работает.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

king_art
А зачем нужен скрипт? Достаточно инструмента группового переименования (ИГП), где для "Маска для: имя файла" = "[N]_nn", "...расширения" = "txt".
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
king_art
Сообщения: 5
Зарегистрирован: Вс мар 16, 2025 12:27

Сообщение king_art »

Batya
Скрипт что бы из .avi, .mkv, mp4 и пр типов файлов, создались текстовые файлы (txt) с таким же именем, но сразу с нужным окончанием.
Так-то, пока конечно, именно групповым переименованием и пользуюсь по маске. Проще б одной кнопкой, если возможно.
790
Сообщения: 359
Зарегистрирован: Сб авг 09, 2008 18:08

Сообщение 790 »

king_art
Есть такое решение, но есть и недостаток - с кириллицей у меня не получается:
1. В Запуск или на кнопку вешаем:

Код: Выделить всё

Команда: cmd.exe /c @echo off &
Параметры: for /f "delims=" %%i in (%F) do fsutil file createnew "%T%%i" 0 > nul
(я думаю, этот код можно переделать и для добавления _nn)
В противоположной панели появятся нулевые файлы, которые были выделены - панели должны быть разными! Потом расширения можно удалить у всех по маске, пустым-то файлам зачем расширения? Или заменить на _nn.

А ещё где-то тут было "Создание файлов по списку", а уж создать такой список легко по Shift+F11.
TC 11.58 32/64, Win10x64

Cuda уехал text, он был ещё вчераа...
Аватара пользователя
Monarch-LFV
Сообщения: 365
Зарегистрирован: Пн июл 22, 2019 13:20

Сообщение Monarch-LFV »

king_art

Код: Выделить всё

TOTALCMD#BAR#DATA
cmd /C
for %%a in ("%S") do (cd.> "%%~dpna_nn.txt")
WCMICONS.DLL,5
Создать пустые txt файлы с суффиксом '_nn' для выделенных файлов
Аватара пользователя
king_art
Сообщения: 5
Зарегистрирован: Вс мар 16, 2025 12:27

Сообщение king_art »

Monarch-LFV
Спасибо, огромное
Все работает, это то, что было нужно.
Ответить