Страница 8 из 15

Добавлено: Сб окт 08, 2011 18:53
Flasher
Tol!k писал(а):Сортировка по дате рулит.

Добавлено: Вс окт 09, 2011 18:55
zlodei1988
По теме созданию папок, есть ли возможность дописать какую то строку в код, чтобы только что созданные папки всегда были на виду! Когда создаешь папки, они доходят до нижнего уровня в ТС и создаются дальше, но их уже не видать( надо сделать так чтоб они всегда были на виду...

Добавлено: Вс окт 09, 2011 19:27
Avada
zlodei1988
Замечание за нарушение правил форума. На батник следовало дать ссылку (или попросить модератора помочь с этим), а не цитировать его целиком, да ещё в виде обычного текста. Выделять весь свой текст красным недопустимо. Пост отредактирован, убран ещё кое-какой мусор. Дубль прибит.
Что касается "папок на виду", то лично я, к сожалению, ничего не понял, но, может быть, кому-то повезёт больше.

Добавлено: Вс окт 09, 2011 19:59
Tol!k

Добавлено: Вс окт 09, 2011 22:26
Flasher
Tol!k
Ты, в принципе, можешь добавить переход с TCMC.exe cds <путь к перемещённому файлу> "", если уж так человеку надо.

Перемещение по спискам

Добавлено: Ср окт 12, 2011 09:53
BezDNaU
Есть несколько текстовых файлов с путями:
CD 1.txt
CD 2.txt
CD 3.txt
CD 4.txt
CD 5.txt и т.д.
Содержимое приблизительно такое:
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\01-nu.pogodi.01.avi
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\02-nu.pogodi.02.avi
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\03-nu.pogodi.03.avi
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\04-nu.pogodi.04.avi
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\05-nu.pogodi.05.avi
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\06-nu.pogodi.06.avi
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\07-nu.pogodi.07.avi
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\08-nu.pogodi.08.avi
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\09-nu.pogodi.09.avi
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\10-nu.pogodi.10.avi
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\11-nu.pogodi.11.avi
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\12-nu.pogodi.12.avi
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\13-nu.pogodi.13.avi
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\14-nu.pogodi.14.avi
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\15-nu.pogodi.15.avi
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\16-nu.pogodi.16.avi
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\17-nu.pogodi.17.avi
E:\VIDEO\Мульты\Советские\Советские\Ну погоди\18-nu.pogodi.18.avi
E:\VIDEO\Мульты\Советские\Советские\Леопольд\01-leopold.progulka.kota.leopolda.avi
E:\VIDEO\Мульты\Советские\Советские\Леопольд\02-leopold.televizor.kota.leopolda.avi
E:\VIDEO\Мульты\Советские\Советские\Леопольд\03-leopold.poliklinika.kota.leopolda.avi
E:\VIDEO\Мульты\Советские\Советские\Леопольд\04-leopold.leto.kota.leopolda.avi
E:\VIDEO\Мульты\Советские\Советские\Леопольд\05-leopold.kot.leopold.vo.sne.i.nayavu.avi
E:\VIDEO\Мульты\Советские\Советские\Леопольд\06-leopold.klad.kota.leopolda.avi
E:\VIDEO\Мульты\Советские\Советские\Леопольд\07-leopold.avtomobil.kota.leopolda.avi
E:\VIDEO\Мульты\Советские\Советские\Леопольд\08-leopold.den.rozhdenia.kota.leopolda.avi
E:\VIDEO\Мульты\Советские\Советские\Леопольд\09-leopold.i.zolotaya.rybka.avi
E:\VIDEO\Мульты\Советские\Советские\Леопольд\10-leopold.mest.kota.leopolda.avi
E:\VIDEO\Мульты\Советские\Советские\Леопольд\11-leopold.interview.avi
E:\VIDEO\Мульты\Советские\Советские\Трое из Простоквашино\Зима в Простоквашино.avi
E:\VIDEO\Мульты\Советские\Советские\Трое из Простоквашино\Каникулы в Простоквашино.avi
E:\VIDEO\Мульты\Советские\Советские\Трое из Простоквашино\Трое из Простоквашино.avi
E:\VIDEO\Мульты\Советские\Советские\Девочка и слон .avi

Нужно создать папки с именем txt файла (папка CD 1 для файла CD 1.txt и т.д.) и переместить в них файлы из списка с сохранением подкаталогов (папки не выделенные жирным).
Можно ли такое провернуть?
Заранее спасибо за помощь.

[mod="Avada"]Переносится в уже имеющуюся тему.[/mod]

Добавлено: Ср окт 12, 2011 10:16
Flasher

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

'======================================================================
' Перемещать файлы и папки, указанные в файлах-списках
' в папки с базовыми именами этих файлов-списков
' Параметры: %L <путь_назначения\>
' Пример: %L "%T"
'======================================================================
L = vbNewLine
D = InputBox(L&L&L&"Введите число отсекаемых компонентов " & L &_
"в началах путей, записанных" & L & "в выделенные файлы :",_
Space(13) & "Перемещение файлов и папок по спискам") 
If Trim(D) = "" Or Not IsNumeric(D) Then Wscript.Quit

With CreateObject("Scripting.FileSystemObject")
  Set TF = .OpenTextFile(WScript.Arguments(0), 1)
  Do While Not TF.AtEndOfStream
    F = TF.ReadLine
    If F > vbNullString And .FileExists(F) Then
      Trg = WScript.Arguments(1) & .GetBaseName(F)
      If Not .FolderExists(Trg) Then .CreateFolder Trg
      For Each Fn in Split(.OpenTextFile(F, 1).ReadAll, vbNewLine)
        Fn = Trim(Fn)
        If Fn <> "" And Mid(Fn, 2, 1) = ":" Then
          Fx = Fn
          Do While Abs(D) =< Abs(Ubound(Split(Fx, "\")))
            Fx = .GetParentFolderName(Fx)
          Loop
          FPath = Trg & "\" & .GetParentFolderName(Mid(Fn, Len(Fx)+2))
          If Not .FolderExists(FPath) Then .CreateFolder FPath
          If .FolderExists(Fn) Then .GetFolder(Fn).Move FPath & "\"
          If .FileExists(Fn) Then .GetFile(Fn).Move FPath & "\"
        End If
      Next
    End If
  Loop
  TF.Close
End With

Добавлено: Ср окт 12, 2011 10:44
Batya
Уже было.

Добавлено: Ср окт 12, 2011 10:49
Flasher
Так и знал, что было, только сделать было быстрей, чем искать. :)

Добавлено: Ср окт 12, 2011 10:56
BezDNaU
Спасибо но не совсем то.
Скрипт копирует файлы без сохранения подкаталогов т.е. для указанного примера должно получиться так:
CD 1\
-Ну погоди\
--01-nu.pogodi.01.avi
--02-nu.pogodi.02.avi
--03-nu.pogodi.03.avi
--04-nu.pogodi.04.avi
--05-nu.pogodi.05.avi
--06-nu.pogodi.06.avi
--07-nu.pogodi.07.avi
--08-nu.pogodi.08.avi
--09-nu.pogodi.09.avi
--10-nu.pogodi.10.avi
--11-nu.pogodi.11.avi
--12-nu.pogodi.12.avi
--13-nu.pogodi.13.avi
--14-nu.pogodi.14.avi
--15-nu.pogodi.15.avi
--16-nu.pogodi.16.avi
--17-nu.pogodi.17.avi
--18-nu.pogodi.18.avi
-Леопольд\
--01-leopold.progulka.kota.leopolda.avi
--02-leopold.televizor.kota.leopolda.avi
--03-leopold.poliklinika.kota.leopolda.avi
--04-leopold.leto.kota.leopolda.avi
--05-leopold.kot.leopold.vo.sne.i.nayavu.avi
--06-leopold.klad.kota.leopolda.avi
--07-leopold.avtomobil.kota.leopolda.avi
--08-leopold.den.rozhdenia.kota.leopolda.avi
--09-leopold.i.zolotaya.rybka.avi
--10-leopold.mest.kota.leopolda.avi
--11-leopold.interview.avi
-Трое из Простоквашино\
--Зима в Простоквашино.avi
--Каникулы в Простоквашино.avi
--Трое из Простоквашино.avi
-Девочка и слон .avi

Добавлено: Ср окт 12, 2011 10:56
Batya
Flasher
Не проверял твой скрипт, но, по крайней мере, BezDNaU хотел не копировать, а перемещать. Поправь.

Добавлено: Ср окт 12, 2011 11:09
Flasher
Batya
BezDNaU писал(а):переместить в них файлы из списка
Не из папок.

BezDNaU
Да, я вот только сам заметил. Тогда нужно прояснить критерий обрезания. Либо по номеру компонента в заданном пути, либо глубине вложенности. Как лучше?

Добавлено: Ср окт 12, 2011 11:18
BezDNaU
Скорее по глубине вложенности.

Добавлено: Ср окт 12, 2011 11:29
Flasher
BezDNaU
Боюсь, что с глубиной вложенности не получится, т.к. она разная:
BezDNaU писал(а):E:\VIDEO\Мульты\Советские\Советские\Трое из Простоквашино\Трое из Простоквашино.avi
E:\VIDEO\Мульты\Советские\Советские\Девочка и слон .avi
Сделаю по номеру компонента.

Добавлено: Ср окт 12, 2011 11:48
Batya
Сначала неверно понял задачу.

Сделал с перемещением с родительской папкой (глубина вложенности = 1):

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

'=====================================================================
' Создание папки по имени файла-списка и перемещение в нее файлов
' из файла-списка с родительской папкой.

' Параметры:
' {файл-список} {целевая папка}
'=====================================================================
Option Explicit
Dim FSO, FileList, TargetDir, F, FF

If WScript.Arguments.Count = 0 Then
  MsgBox "Не указаны параметры!", vbOKOnly + vbError, "Внимание!"
  Wscript.Quit
End If

FileList  = WScript.Arguments(0)
TargetDir = WScript.Arguments(1)
If Right(TargetDir, 1) <> "\" Then TargetDir = TargetDir & "\"
Set FSO   = CreateObject("Scripting.FileSystemObject")
TargetDir = TargetDir & FSO.GetBaseName(FileList) & "\"

With FSO.OpenTextFile(FileList, 1)
  Do While Not .AtEndOfStream
    F = Trim(.ReadLine)
    If F <> "" And FSO.FileExists(F) Then
      FF = TargetDir & FSO.GetFileName(FSO.GetParentFolderName(F)) & "\"
      CreateFolder FF
      FSO.MoveFile F, FF
    End If
  Loop
  .Close
End With

MsgBox "Выполнено!", vbOKOnly + vbInformation, "Результат"
Set FSO = Nothing
Wscript.Quit

Sub CreateFolder(pFolder)
  Dim lParentFolder
  If Not FSO.FolderExists(pFolder) Then
    lParentFolder = FSO.GetParentFolderName(pFolder)
    If Not FSO.FolderExists(lParentFolder) Then CreateFolder(lParentFolder)
    FSO.CreateFolder(pFolder)
  End If
End Sub