View previous topic :: View next topic |
Author |
Message |
DocWeb
Joined: 10 Sep 2011 Posts: 10
|
(Separately) Posted: Sat Sep 10, 2011 19:04 Post subject: |
|
|
да. папки пустые - точно. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Sep 10, 2011 19:28 Post subject: |
|
|
Тут вот какое дело: сортировку выделенных файлов учесть можно, а вот как учесть сортировку папок на противоположной панели я не знаю, т.к. нет спецпараметра аля %L для другой панели.
Может, есть какой-то связующий синтаксис в названиях файлов и папок? |
|
Back to top |
|
|
DocWeb
Joined: 10 Sep 2011 Posts: 10
|
(Separately) Posted: Sat Sep 10, 2011 19:34 Post subject: |
|
|
связи между папками/файлами в названиях нет.
может поможет то, что есть список папок-приемников.
например в виде файла его можно иметь...
да, можно в принципе сами папки по ходу выполнения операции создавать.
может такой вариант получится?:
есть 1000 файлов.
есть список из 100 папок. проходя по списку создаем папку и перемещаем туда 10 файлов. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Sep 10, 2011 19:37 Post subject: |
|
|
DocWeb wrote: | может поможет то, что есть список папок-приемников.
например в виде файла его можно иметь... | Да, такой вариант подходит.
DocWeb wrote: | да, можно в принципе сами папки по ходу выполнения операции создавать. | Ну, если уж список заведомо известен, то можно и создавать поддиректории.
Code: | '================================================================
' Рассортировка выделенных файлов по папкам (или их подкаталогам),
' выделенным в другой панели или указанным в файле, по частям
' Необходима регистрация Script Helper ActiveX for TC
' Параметры:
' 1) %L
' 2) <путь к списку> Если "", то использовать папки неактивной панели
' 3) <имя подпапки> Если "", то перемещать в корни папок-приёмников
' 4) <делящее число> Если отсутствует, то указывается в окне
' Примеры:
' a) %L "" ""
' б) %L "" "" 5
' в) %L "" NEWS 10
' г) %L C:\FolderList.txt "Моя папка" 15
'================================================================
With WScript.Arguments
On Error Resume Next
List = .Item(0)
pList = .Item(1)
SubF = .Item(2)
If Err.Number > 0 Then WScript.Quit
NL = vbNewLine
If .Count > 3 Then Div = .Item(3) Else Count Div, NL
End With
Do While Not IsNumeric(Div) And Trim(Div) > vbNullString
W = MsgBox("Некорректный ввод данных !" & NL & NL & _
"Повторить попытку ?", 53, " Перемещение файлов по папкам")
If W = 4 Then Count Div, NL Else WScript.Quit
Loop
If Div = vbNullString Or Div = 0 Then WScript.Quit
Div = Abs(Fix(Div))
Set D = CreateObject("Scripting.Dictionary")
With CreateObject("Scripting.FileSystemObject")
If pList = "" Then
With CreateObject("TCScript.Helper")
.LockTC True
L = .GetTrgSelectedFiles(1)
.LockTC False
End With
Else L = Split(.OpenTextFile(pList).ReadAll, vbNewLine)
End If
n = 0
For Each P in L
n = n + 1
If P > vbNullString Then D.Add P, n
Next
Set TempFile = .OpenTextFile(List, 1)
Do While Not TempFile.AtEndOfStream
F = TempFile.ReadLine
If F > vbNullString Then
If .FileExists(F) Then
For Each k in D.Keys
If k <> "" And Fix((TempFile.Line-2)/Div)+1 = D.Item(k) Then
k = Trim(k)
If Right(k, 1) <> "\" Then k = k & "\"
If SubF = "" Then SF = k Else SF = k & SubF & "\"
If Not .FolderExists(k) Then .CreateFolder k
If Not .FolderExists(SF) Then .CreateFolder SF
.MoveFile F, SF
End If
Next
End If
End If
Loop
End With
WScript.Quit
Sub Count(Di, n)
Di = InputBox(n&n&n&n& "Введите число файлов," &n&_
"перемещаемых в каждую папку :",_
Space(22) & "Перемещение файлов по папкам")
End Sub |
Last edited by Flasher on Wed Sep 28, 2011 10:24; edited 5 times in total |
|
Back to top |
|
|
DocWeb
Joined: 10 Sep 2011 Posts: 10
|
(Separately) Posted: Tue Sep 13, 2011 13:45 Post subject: |
|
|
Flasher Спасибо за помощь.
Все работает.
Я насколько понимаю сложно сделать создание новых папок не в текущей директории (где файлы) а в другой - например выбранной в другой панели? или указанный путь (для создания папок) в параметры добавить? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Sep 13, 2011 17:26 Post subject: |
|
|
DocWeb
Скрипт работает с теми путями, которые указаны в файле. Никто не мешает указывать в нём любые пути. Насчёт выбора в другой панели я вроде как уже объяснял, всё утыкается в текущую сортировку. Я мог бы подвязать переход в другую панель по Tab, но, к сожалению, параметр %L не будет перечитываться. А других вариантов я вижу.
Но это касается только учёта существующих папок.
Если требуется только создание, то действуем так:
1. В файле-списке писать только имена создаваемых папок в должном порядке.
2. Code: | SubF = .Item(2)
Div = .Item(3) | заменить на Code: | Path = .Item(2)
SubF = .Item(3)
Div = .Item(4) |
заменить на 3. Параметры примут такой вид: %L <путь к списку> <путь назначения\> <имя подпапки> <делящее число>
Пример: %L C:\FolderNameList.txt "%T" NEWS 10 |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Sep 27, 2011 02:26 Post subject: |
|
|
DocWeb
Вспомнил про макрос в Хелпере для другой панели, поправил скрипт под исходные пожелания.
При этом при указании файла-списка портабельность сохраняется. |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2590
|
(Separately) Posted: Tue Sep 27, 2011 10:12 Post subject: |
|
|
Перемещение нужного к-во файлов по папкам
Давно режет глаз заголовок темы: нельзя ли “к-во” заменить на “количества”?
Поправил. CaptainFlint |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Sep 28, 2011 10:23 Post subject: |
|
|
Что-то я тут подумал, скрипт вполне подойдёт для общих целей. Расширил функционал.
Add: Можно задействовать папки противоположной панели.
Add: Можно вводить делящее число в окне.
Add: Можно перемещать в корни выбранных папок. |
|
Back to top |
|
|
dam-69
Joined: 30 Nov 2011 Posts: 13
|
(Separately) Posted: Thu Oct 18, 2012 17:25 Post subject: |
|
|
Batya
Пожалуйста, подскажите как подправить Ваш скрипт под мою задачу:
В папке находятся файлы:
1 вариант: от 01.mp3, допустим до 99.mp3
2 вариант: от 001.mp3, допустим до 999.mp3.
Нужно нажатием кнопки создать папки и переместить в них файлы
в соответствие с вариантами:
- если 1 вариант
файлы 01.mp3 ... 09.mp3 переместить в папку 01
(файлы 00.mp3 ... 09.mp3 переместить в папку 00)
файлы 10.mp3 ... 19.mp3 переместить в папку 10
..
файлы 90.mp3 ... 99.mp3 переместить в папку 90
- если 2 вариант
файлы 001.mp3 ... 009.mp3 переместить в папку 001
(файлы 000.mp3 ... 009.mp3 переместить в папку 000)
файлы 010.mp3 ... 019.mp3 переместить в папку 010
..
файлы 990.mp3 ... 999.mp3 переместить в папку 990
Заранее Вас благодарю!
(Ваш скрипт с параметрами %L "%P" 10 - работает, лишь потом приходится переименовывать папки 01, 02, 03 ... в 01, 10, 20 ... 90) |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
|
Back to top |
|
|
dam-69
Joined: 30 Nov 2011 Posts: 13
|
(Separately) Posted: Thu Oct 18, 2012 23:59 Post subject: |
|
|
del
Last edited by dam-69 on Fri Oct 19, 2012 02:53; edited 2 times in total |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Fri Oct 19, 2012 00:19 Post subject: |
|
|
забыл кавычку
припишите 0
call set "D=0%%D:~0,-%l%%%" |
|
Back to top |
|
|
dam-69
Joined: 30 Nov 2011 Posts: 13
|
(Separately) Posted: Fri Oct 19, 2012 00:31 Post subject: |
|
|
Tol!k
с параметром "%WL" 0 - перемещает все файлы в папку "0"
с параметром "%WL" 1 - перемещает файлы в папки:
001.* ... 009.* - в папку 000 (а мне хотелось бы в 001),
010.* ... 019.* - в папку 001 (а мне хотелось бы в 010), и т.д.
----!
Устраивает с параметром "%WL" 1 , вот только строку подправил для этого:
call set "D=%%D:~0,-%l%%%0"
Спасибо, Вам Тоl!к!
Last edited by dam-69 on Fri Oct 19, 2012 01:48; edited 1 time in total |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Fri Oct 19, 2012 01:08 Post subject: |
|
|
Code: | @echo off &setlocal enableextensions
:: Перемещает выделенные файлы
:: в папки с именем файла без последних X символов
:: Пример параметров: "%WL" 2 "Приставка_" "_суффикс"
:: http://forum.wincmd.ru/viewpost.php?p=96594
set /a l=2 &set /a l=%2
set "pre=%~3" &set "suf=%~4"
for /f "delims=" %%f in ('type "%~1"') do call :m "%%f"
goto :eof
:m
set "D=%~n1"
call set "D=%%D:~0,-%l%%%"
if "%D%"=="" set "D=%~n1"
call set "D=%pre%%%D%%%suf%"
if not exist "%D%" md "%D%\"
move %1 "%D%\"
goto :eof
|
|
|
Back to top |
|
|
|