Страница 2 из 6

Добавлено: Сб фев 12, 2005 13:30
Сергеич
Ну не уж такую фичу в тотале не могли сделать?
Есть. собирает-разбирает. Но собирает только в том случае если сам он и разбирал.
Для остальных случаев видать автор считает, что рядовым юзерам это совсем не надо, а продвинутые и сами знают как собрать.
ИМХО он думает правильно, а то мож народ решит так архивы объединять или документы Ворда.... а потом жаловаться будет....

я кстати пару разобъединял файлики так: проходил групповым переименованием, а потом меню "файл" - "собрать".

Добавлено: Сб фев 12, 2005 13:33
mike
Вот как раз для рядовых-то и надо. Ну да ладно чего обсуждать, пора закрывать тему

Добавлено: Сб фев 12, 2005 16:49
NakaRB
чего мучаетесь? в папку суете файлы для объединения, переименовываете их типа file01.txt, file02.txt,..,file99.txt. ставите курсор на первый файл в списке, лезете в меню Files|Combine files и жмем ОК. и еще раз ОК. и в панельке напротив получаем файлик file01.out с содержимым всех фалов. меняем разрешение на txt и радуемся ;)

Добавлено: Пн фев 14, 2005 06:33
mike
Я же уже говорил, нужно для Чайников, попробуй им объяснить это, особенно какой-нибудь бабуле которая мышью работать не умеет толком

Добавлено: Пн фев 14, 2005 11:29
Сергеич
Значит надо этой бабуле так давать файлы чтоб она легко смогла их собрать. Стандартно или с бат-файлом. В этом и фикус. А дай бабуле струмент в руки неизвестно что она удумает. Вы бы ещё ей хардлинки в руки дали..... ;)

Добавлено: Пн фев 14, 2005 11:34
mike
Она должна выбрать по куче файлов нужный, например через ctrl+q
просмотреть, а потом отмечая нужные их склеить - имена файлов какие есть не изменить

Добавлено: Пн дек 31, 2007 17:00
doRn
Есть куча файлов вида
a.001
a.002
b.001
b.002
c.001
c.002
...
можно как нить автоматически(не вручную по однаму) собрать их в
a.out
b.out
c.out
...
соответственно

Добавлено: Вт янв 08, 2008 04:03
doRn
без вариантов?

Добавлено: Чт янв 10, 2008 18:29
Batya
doRn
С варантами все просто - пара десятков строк в скрипте.
Сложно со временем.
Тебе срочно?

Добавлено: Пт янв 11, 2008 08:41
Моторокер
doRn
Только 001 и 002?
Создать bat файл с именами файлов, удалить расширения, добавить copy в начале строк, продублировать имена и расширения для склеивания файлов.

Добавлено: Пт янв 11, 2008 14:58
Batya
doRn
С добавлением всех проверок и собственной сортировки по возрастанию номера в расширении получилось чуть больше 20 строк :)
Только crc-сумму я не проверяю.

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

'=================================================================================
' Склеивание выделенных файлов.
' Два режима работы скрипта:

' 1. Склеиваются только файлы с цифровым расширением.
' Если после отбрасывания цифрового расширения у файлов останется какое-либо
'   расширение, то оно будет у итогового файла, иначе - расширение out:
' (*.001,...,*.999) -> *.out; (*.ext.001,...,*.ext.999) -> *.ext
' Папка (существующая) формирования итоговых файлов указывается вторым параметром.
' Параметры вызова из TC:
' %L "%T"
' или
' %L "%P"

' 2. Склеиваются все файлы в один, если вторым параметром указан файл, а не папка.
' Такой файл не должен существовать.
' Параметры вызова из TC:
' %L {путь итогового файла}
' Пример:
' %L "%Tresult.txt"
'=================================================================================
Option Explicit
' Проверяем число параметров
Dim Title
Title = "Склеивание выделенных файлов"
If WScript.Arguments.Count < 2 Then
  MsgBox "Неправильно заданы параметры!", _
    vbOKOnly + vbCritical, Title
  WScript.Quit
End If

Dim FSO, Out, Mode
Set FSO = CreateObject("Scripting.FileSystemObject")
Out = WScript.Arguments(1)
If FSO.FolderExists(Out) Then
  Mode = 1
Else
  If FSO.FileExists(Out) Then
    MsgBox "Файл " & Out & " уже существует!" & vbNewLine &_
           "Работа скрипта будет прервана.", _
           vbOKOnly + vbCritical, Title
    Set FSO = Nothing
    WScript.Quit
  Else
    Mode = 2
  End If
End If

Dim List, ListArr, WSH, L, Line
List = FSO.OpenTextFile(WScript.Arguments(0), 1).ReadAll
ListArr = Split(List, vbNewLine)

Set WSH = CreateObject("WScript.Shell")
Select Case Mode
  Case 1 Mode1Proc
  Case 2 Mode2Proc
End Select

Set WSH = Nothing
Set FSO = Nothing
WScript.Quit

Sub Mode1Proc
  Dim ListDic, Name, Ext, ExtOut, FileOut, PathOut, k
  Set ListDic = CreateObject("Scripting.Dictionary")
  For Each L In ListArr
    Ext = FSO.GetExtensionName(L)
    If IsNumeric(Ext) Then
      Name = FSO.GetBaseName(L)
      ExtOut = FSO.GetExtensionName(Name)
      If ExtOut = "" Then
        ExtOut = "out"
      Else
        Name = FSO.GetBaseName(Name)
      End If
      FileOut = Name & "." & ExtOut
      PathOut = Out & FileOut
      If FSO.FileExists(PathOut) Then
        WSH.Popup "Файл " & PathOut & " уже существует." & vbNewLine &_
                  "Склеивание в этот файл не будет выполнено!", _
                  1, Title, vbOKOnly + vbCritical
      Else
        If Not ListDic.Exists(PathOut) Then
          Set ListDic.Item(PathOut) = CreateObject("Scripting.Dictionary")
        End If
        ListDic(PathOut).Add CInt(Ext), L
      End If
    End If
  Next
  For Each L In ListDic.Keys
    Line = ""
    For k = 1 To 999
      If ListDic(L).Exists(k) Then
        Line = Line & "+""" & ListDic(L)(k) & """"
      End If
    Next
    Line = Mid(Line, 2)
    WSH.Run "%ComSpec% /c copy /b " & Line & " """ & L & """", 7, True
  Next
  Set ListDic = Nothing
End Sub

Sub Mode2Proc
  Line = ""
  For Each L In ListArr
    If FSO.FileExists(L) Then
      Line = Line & "+""" & L & """"
    End If
  Next
  Line = Mid(Line, 2)
  WSH.Run "%ComSpec% /c copy /b " & Line & " """ & Out & """", 7, True
End Sub
Добавлено: Переделал скрипт - теперь склеивать можно не только текстовые файлы.

Как слить несколько текстовых файлов в один?

Добавлено: Пн май 25, 2009 12:52
evshi
Есть команда "Собрать файлы", но она работает, если файлы последовательно проименованы. А у меня разные названия.

1. Можно ли в таком случае как-то слить через total?
2. Если все таки по п.1 нельзя, то, в принципе, файлы через командную строку можно слить так "copy /b file.0000+file.0001+file.0002 file.result". Как это можно прикрутить в total? В идеале хотелось бы выделять нужные файлы и, нажав команду, получить результат.

Добавлено: Пн май 25, 2009 13:09
Worros
Ctrl+M , потом собирать.

Добавлено: Пн май 25, 2009 13:24
Вахмурка
Была утилитка под названием combain (именно так, а не combine). Поищи. Я сейчас не дома, а то бы выслал. Мне она в свое время много времени сэкономила. Встраивается в ТС.

Добавлено: Пн май 25, 2009 13:29
Batya
evshi
Как собрать несколько файлов в один

[mod="Avada"]Ссылка поправлена.[/mod]