| 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: 2709
 
 
 | 
			
				|  (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 |  | 
	
		|  | 
	
		|  |