Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Создание каталога соответственно имени внутреннего каталога

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
eldo



Joined: 19 Mar 2010
Posts: 1

Post (Separately) Posted: Fri Mar 19, 2010 03:17    Post subject: Создание каталога соответственно имени внутреннего каталога Reply with quote

Народ, подскажите как автоматизировать сей процесс
Имеется н-ное количество папок , все в одном каталоге. надо чтобы каждая папка оказалась в другой папке (уровнем ниже проще говря) с тем же именем папки что основная.
т.е. было
папкакорень ->подпапка X-> фалы
надо
папкакорень ->подпапка X->подпапка X-> фалы

Есть ли какая нибудь возможность не делать этого ручками ?
Заранее Благодарю.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4815
Location: Ростов-Дон

Post (Separately) Posted: Fri Mar 19, 2010 07:32    Post subject: Reply with quote

Создай BAT-файл в папке, в которой нужно обработать подпапки, и запусти его из этой же папки:
Code:
@echo off
if not -%1==- goto go
for /d %%d in (*) do call %0 %%d
goto exit

:go
move %1 ~~%1~~
md %1
move ~~%1~~ %1\%1

:exit
cls

Скрипт обрабатывает папки последовательно, вначале временно приписывая к имени текущей папки ~~, а потом создавая новую папку с исходным именем и перемещая исходную папку внутрь вновь созданной, переименовывая ее обратно. Работает очень быстро, т.к. данные при этом не перемещаются, только элементы каталогов.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2224
Location: Москва, Россия

Post (Separately) Posted: Sat Mar 20, 2010 22:36    Post subject: Reply with quote

eldo
vbs-скрипт:
Code:
'=====================================================================
' Создание папки по имени родительской папки и перемещение в нее файла
' Может быть выделено несколько файлов

' Для создания папок в текущей панели
'   в параметрах вызова из TC должно быть прописано:
' %L

' Для создания папок в противоположной панели
'   в параметрах вызова из TC должно быть прописано:
' %L "%T"
'=====================================================================

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

Dim TempFile, FSO, SelFile
Set FSO      = CreateObject("Scripting.FileSystemObject")
Set TempFile = FSO.OpenTextFile(WScript.Arguments(0), 1)

Dim FileName, FilePath, DashInName, NewFilePath
Do While Not TempFile.AtEndOfStream
  Set SelFile = FSO.GetFile(TempFile.ReadLine)
  FileName    = FSO.GetBaseName(SelFile)
  FilePath    = SelFile.ParentFolder
  If WScript.Arguments.Count > 1 Then
    NewFilePath = WScript.Arguments(1) & FSO.GetBaseName(FilePath)
  Else
    NewFilePath = FilePath & "\" & FSO.GetBaseName(FilePath)
  End If
  If Not FSO.FolderExists(NewFilePath) Then
    FSO.CreateFolder(NewFilePath)
  End If
  If Not FSO.FileExists(NewFilePath & "\" & FileName) Then
    FSO.MoveFile SelFile, NewFilePath & "\"
  Else
    MsgBox "Уже существует файл " & FileName & " в папке " & NewFilePath, vbOKOnly + vbExclamation, "Внимание!"
  End If
Loop
Set TempFile = Nothing
Set FSO      = Nothing
Set SelFile  = Nothing
Wscript.Quit

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
DemoZluk



Joined: 02 Jul 2011
Posts: 7

Post (Separately) Posted: Mon Aug 15, 2011 16:38    Post subject: Reply with quote

А что нужно изменить в этом скрипте, чтобы все выделенные файлы поместились в одну папку с именем файла под курсором?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2224
Location: Москва, Россия

Post (Separately) Posted: Wed Aug 17, 2011 15:10    Post subject: Reply with quote

DemoZluk
Новый скрипт:
Code:
'=====================================================================
' Создание папки по имени текущего файла с перемещением в неё
' выделенных файлов и папок

' Параметры:
' {файл-список} {файл, по которому формируется имя создаваемой папки}

' Примеры параметров при вызове из TC:
' %L %P%N
' %L %T%N
' %L %P%M
' %L %T%M
'=====================================================================

Option Explicit
Dim FSO, FL, FF, F, NewPath, FullPath, Flag
With WScript
  If .Arguments.Count = 0 Then
    MsgBox "Не заданы параметры!"     , vbOKOnly + vbCritical, "Внимание!"
    .Quit
  End If
  If .Arguments.Count < 2 Then
    MsgBox "Указаны не все параметры!", vbOKOnly + vbCritical, "Внимание!"
    .Quit
  End If
  FL = .Arguments(0)
  FF = .Arguments(1)
End With

Set FSO = CreateObject("Scripting.FileSystemObject")
NewPath = FSO.GetParentFolderName(FF) & "\" & FSO.GetBaseName(FF) & "\"
If Not FSO.FolderExists(NewPath) Then FSO.CreateFolder(NewPath)

With FSO.OpenTextFile(FL, 1)
  Do While Not .AtEndOfStream
    F = Trim(.ReadLine)
    If F <> "" Then
      If FSO.FolderExists(F) Then
        If Right(F, 1) = "\" Then F = Mid(F, 1, Len(F) - 1)
        Flag     = vbYes
        FullPath = NewPath & FSO.GetFileName(F)
        If FSO.FolderExists(FullPath) Then
          Flag = MsgBox("Папка """ & FullPath & """ уже существует! Заменить?", vbYesNoCancel + vbExclamation, "Внимание!")
          If Flag = vbCancel Then Wscript.Quit
          If Flag = vbYes    Then FSO.DeleteFolder(FullPath)
        End If
        If Flag = vbYes Then FSO.MoveFolder F, NewPath
      End If
      If FSO.FileExists(F) Then
        Flag     = vbYes
        FullPath = NewPath & FSO.GetFileName(F)
        If FSO.FileExists(FullPath) Then
          Flag = MsgBox("Файл """ & FullPath & """ уже существует! Заменить?", vbYesNoCancel + vbExclamation, "Внимание!")
          If Flag = vbCancel Then Wscript.Quit
          If Flag = vbYes    Then FSO.DeleteFile(FullPath)
        End If
        If Flag = vbYes Then FSO.MoveFile F, NewPath
      End If
    End If
  Loop
  .Close
End With

Set FSO = Nothing
Wscript.Quit

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group