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 

Автоматическое создание папок
Goto page Previous  1, 2, 3, ... 13, 14, 15  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
funduk



Joined: 16 Aug 2005
Posts: 1513
Location: Санкт-Петербург

Post (Separately) Posted: Wed May 02, 2007 13:55    Post subject: Reply with quote

Volniy wrote:
Нужно перенести "%L" в поле "Параметры", а то в поле "Команда" эта переменная не расширяется в имя файла-списка.
№;%&!!! Почему все юзеры такие юзерастые юзеры? Mr. Green Laughing
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Wed May 02, 2007 15:31    Post subject: Reply with quote

funduk wrote:
№;%&!!! Почему все юзеры такие юзерастые юзеры? Mr. Green Laughing

Наверное, я бы попытался ответить на этот риторический вопрос, но только в том случае, если бы сумел разгадать его глубинный смысл... Rolling Eyes
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Thu May 03, 2007 14:26    Post subject: Reply with quote

Переношу в "Автоматизацию".

funduk и Volniy - не флеймить!
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Thu May 10, 2007 18:33    Post subject: Reply with quote

funduk wrote:
Кавычки на %L поставить.

А вот это не обязательно.
Back to top
View user's profile Send private message
banIDit



Joined: 27 May 2007
Posts: 4

Post (Separately) Posted: Sun May 27, 2007 18:50    Post subject: Reply with quote

Задача решается также и с помощью пакетных файлов.
Причем кода будет куда меньше. Smile Буквально 4-5 строк.
Сейчас сижу на маке, потому только позже могу выложить свой вариант решения сабжа. Wink
Если конечно кому-то еще любопытно.
Back to top
View user's profile Send private message
iov



Joined: 17 Mar 2005
Posts: 51

Post (Separately) Posted: Tue May 29, 2007 12:59    Post subject: Reply with quote

Любопытно выкладывай
Back to top
View user's profile Send private message
banIDit



Joined: 27 May 2007
Posts: 4

Post (Separately) Posted: Fri Jun 01, 2007 07:34    Post subject: Reply with quote

Кое-как добрался до Сети... Вот собственно. В параметрах скрипта поставить %p %t.
Code:
rem Скрипт создает в целевом (%t) каталоге для каждого файла
rem папку и копирует туда его
@echo off
for %%i in (%1*.*) do (
md %2%%~ni
copy %%i %2%%~ni)

Вариант для выделенных файлов, в параметрах выставить %l %t
Code:
rem Скрипт создает в целевом (%t) каталоге для каждого выделенного файла
rem папку и копирует туда его
@echo off
for /F "eol=" %%i in (%1) do (
md %2%%~ni
copy %%i %2%%~ni)

Скрипты простейшие, нет обработки ошибок. Wink
по такому же принципу в папки можно закидывать архивы файлов, достаточно заменить команду copy на соответствующую из набора rar.exe
Back to top
View user's profile Send private message
BeTeP



Joined: 31 Mar 2005
Posts: 101
Location: Санкт-Петербург

Post (Separately) Posted: Fri Jun 01, 2007 11:19    Post subject: Reply with quote

banIDit, спасибо за скрипты, все работает. Но есть один нюанс.

Проверял я только на 2 скрипте, который для выделенных файлов. Если имя файла длинное или в нём есть пробелы, то имя создающейся папки получается неверное.

Например:
Файл Привет привет.txt -> Папка 4709~1
Файл R a m.txt -> Папка RAM~1
Файл ReadmeRUS.txt -> Папка README~1
Back to top
View user's profile Send private message
banIDit



Joined: 27 May 2007
Posts: 4

Post (Separately) Posted: Sat Jun 02, 2007 17:14    Post subject: Reply with quote

Согласен, с длинными именами все не так просто оказывается.
Вот что наковырял по этому вопросу, зацените:
Для копирования всех файлов в свою папку. Параметры — %P %t.
Code:
rem Скрипт создает в целевом (%t) каталоге для каждого файла
rem папку и копирует туда его
for %%i in (%1*.*) do (
md "%2%%~ni"
copy "%%i" "%2%%~ni")

Для копирования всех выделенных файлов в свою папку. Параметры — %l %t.
Code:
@echo off
rem Скрипт создает в целевом (%t) каталоге для каждого выделенного файла
rem папку и копирует туда его
rem Так как дос не читает из файла-списка (%1) юникодные имена, создаем папку-темп (%2battemp)
rem и копируем туда с короткими именами все выделенные файлы
md "%2battemp"
for /F "eol=" %%i in (%1) do (
copy %%i "%2battemp")
rem Теперь из папки-темп берем имена всех файлов, создаем для каждого каталог
rem и перемещаем туда его, удаляем папку-темп
for %%i in ("%2battemp"\*.*) do (
md "%2%%~ni"
move "%%i" "%2%%~ni")
rd "%2battemp"

Для того, чтобы досовское окно постоянно не мелькало перед глазами, можно отметить галку "в свернутом виде". Wink
Back to top
View user's profile Send private message
sergeylost



Joined: 01 Feb 2008
Posts: 11
Location: St.Petersburg

Post (Separately) Posted: Tue Feb 05, 2008 18:36    Post subject: Reply with quote

Batya wrote:
Нечто подобное я уже делал. Теперь немного проще:

Замечательная штучка. ))) Сегодня воспользовался. Спасибо.

Но применительно к моей работе можно ли немного изменить этот скрипт?
Задача такая:
обрабатывать 8 первых символов у файла (пробелов в названиях файлов нет), и по этим символам назначать либо находить папку, перемещая туда файл. Если следующий файл в названии будет иметь такие же одинаковые 8 символов вначале, просто перемещать в найденную-назначенную папку.

Пример:



 !  CaptainFlint:
Оверквотинг удалён.
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Tue Feb 05, 2008 20:37    Post subject: Reply with quote

sergeylost
Просьба - поменьше бесполезного цитирования.

По поводу задачи - почему нельзя выделить все файлы слева и выполнить скрипт из ветки http://forum.wincmd.ru/viewtopic.php?t=11448. Переместятся все файлы, для которых найдена соотвестствующая папка. Для которых - не найдена, останутся на месте.
Я просто не понял, что значит
sergeylost wrote:
Если следующий файл

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



Joined: 01 Feb 2008
Posts: 11
Location: St.Petersburg

Post (Separately) Posted: Wed Feb 06, 2008 01:49    Post subject: Reply with quote

Имеем: в лев.панели файлы у которых первые 8 символов могут совпадать. Пример: A-123-1a-2567 и A-123-1a-07896874.
Девятый символ и дальше все разные. Применить скрипт по твоей ссылке нельзя. Справа каталогов еще нет. Укладывать некуда. Применить верхний скрипт тоже нельзя, получим массу лишних и ненужных каталогов. Надо совместить два скрипта как то.

Надо:
-выделяем слева файлы
-кликаем по кнопке
-тотал образовывает справа согластно 8 первых символов файлов каталоги
-перемещает туда одноименные файлы (имеющие 8 первых символов имени равной имени каталога)

Результат:
-файлы имеющие в имени первые 8 символов одинаковые, перемещаются в одноименный созданный для них справа каталог
Back to top
View user's profile Send private message
sergeylost



Joined: 01 Feb 2008
Posts: 11
Location: St.Petersburg

Post (Separately) Posted: Wed Feb 06, 2008 13:44    Post subject: Reply with quote

Господа, насколько реально создать такой скрипт? (описание выше)
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Thu Feb 07, 2008 11:34    Post subject: Reply with quote

sergeylost
Ну так бы сразу и сказал, что тебе нужно создавать папки.
Замени в указанном скрипте
Code:
  If WScript.Arguments.Count > 1 Then
    NewFilePath = WScript.Arguments(1) & FileName
  Else
    NewFilePath = FilePath & "\" & FileName
  End If

на
Code:
  If WScript.Arguments.Count > 1 Then
    NewFilePath = WScript.Arguments(1) & Left(FileName, 8)
  Else
    NewFilePath = FilePath & "\" & Left(FileName, 8)
  End If

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



Joined: 01 Feb 2008
Posts: 11
Location: St.Petersburg

Post (Separately) Posted: Thu Feb 07, 2008 13:59    Post subject: Reply with quote

Батя, извини не знаю как тебя зовут, но тебе не только от меня крепкое мужское рукопожатие, но и от нашего сисадмина.. Ты нас от такого головняка избавил!!! СПАСИБО.
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
Goto page Previous  1, 2, 3, ... 13, 14, 15  Next
Page 2 of 15

 
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