Страница 1 из 1

Создание копий файлов с заданными в списке именами

Добавлено: Чт ноя 03, 2011 14:49
midasinc
У меня уже была похожая проблема, ее помогли решить - http://forum.wincmd.ru/viewtopic.php?t= ... highlight=

Если раньше было необходимо получить несколько копий из одного файла с именами взятыми из списка, то теперь необходимо создать по несколько копий из каждого файла в каталоге по списку.

Например:
1. В каталоге находятся 2 файла:
P1_2_1.pdf
P1_2_7.pdf

Есть список в текстовом файле (можно в любом другом):
P1_2_1.pdf TC4430N
P1_2_1.pdf TC4430N-FM
P1_2_1.pdf TC4430N-SF
P1_2_7.pdf TC4436N
P1_2_7.pdf TC4436N-FM
P1_2_7.pdf TC4436N-SF

На выходе нужно получить следующие файлы:
TC4430N.pdf
TC4430N-FM.pdf
TC4430N-SF.pdf
TC4436N.pdf
TC4436N-FM.pdf
TC4436N-SF.pdf

Помогите, пожалуйста, как это возможно сделать? Проблема в том что файлов сотни в списке, вручную это очень долго получается.

Добавлено: Чт ноя 03, 2011 16:45
Flasher

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

'==============================================================================
' Копировать выделенные файлы при совпадении их полных имён с началом строк
' в файле-списке и переименовывать базовые имена копий в оставшиеся части строк

' Параметры: %F "<путь к файлу списку>" "<путь назначения>"
'==============================================================================
With WScript.Arguments
  If .Count = 0 Then WScript.Quit
  FList = .Item(0)
  NList = .Item(1)
  Path  = .Item(2)
  If Right(Path, 1) <> "\" Then Path = Path & "\"
End With
With CreateObject("Scripting.FileSystemObject")          
  For Each F in Split(.OpenTextFile(FList).ReadAll, vbNewLine)
    If F > vbNullString And .FileExists(F) Then
      Ext = .GetExtensionName(F)
      For Each Fn in Split(.OpenTextFile(NList).ReadAll, vbNewLine)
        Fn = Trim(Fn)
        If Fn <> "" And Left(Fn, Len(F)) = F Then _
        .CopyFile F, Path & LTrim(Mid(Fn, InStrRev(Fn, vbTab)+1)) & "." & Ext
      Next
    End If
  Next
End With

Добавлено: Чт ноя 03, 2011 19:17
midasinc
Все перепроверил, но выдает почему-то такую ошибку:
Изображение
TC версий 7.55a и 8.0 beta 7.

Где я ошибся?

Добавлено: Чт ноя 03, 2011 19:21
Flasher
На строку параметров можно посмотреть?

Добавлено: Чт ноя 03, 2011 19:23
midasinc
Вот такую кнопку сделал:

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Scripts\CreateCopiesFilesWithNamesFromList.vbs
%F "d:\Projekt\_DATA\PDF\Copy&Rename\namefiles.txt" "d:\Projekt\_DATA\PDF\Copy&Rename\OUT"
Button.dll,44
Создание копий файла с именами из файла-списка


-1

Добавлено: Чт ноя 03, 2011 19:31
Flasher
Хм. А файлы тоже на d: расположены?

Добавлено: Чт ноя 03, 2011 19:34
midasinc
Да, в папке "Copy&Rename"

Добавлено: Чт ноя 03, 2011 19:38
Flasher
Файл со списком в ANSI сохранён?

Добавлено: Чт ноя 03, 2011 19:39
midasinc
Все заработало, я разобрался, проблема была в том, что в файле со списками колонки были разделены табуляцией. После замены на пробел все заработало.
Большое спасибо.
А нельзя ли как-то обойти эту проблему?
Список копируется из Excel и табуляция автоматически вставляется, при большом количестве файлов тоже многовато вручную удалять/добавлять получается.

И да файл сохранен в ANSI, это может быть проблемой?

Добавлено: Чт ноя 03, 2011 19:48
Flasher
Ну, об этом надо было сразу писать, тут-то я вижу пробелы. Сделал. Работать будет при условии, что нет начальной и конечной табуляции.

В ANSI и надо.

Добавлено: Чт ноя 03, 2011 20:05
midasinc
Да я сам как-то не заметил то что табуляция, когда стал разбираться, только тогда обратил внимание.

Все работает, очень признателен, спасибо.

Добавлено: Чт ноя 03, 2011 20:27
Flasher
Пожалуйста. Кстати, если пути несменные, то параметры можно сократить до: %F "%Pnamefiles.txt" "%POUT"