View previous topic :: View next topic |
Author |
Message |
funduk
Joined: 16 Aug 2005 Posts: 1513 Location: Санкт-Петербург
|
(Separately) Posted: Wed May 02, 2007 13:55 Post subject: |
|
|
Volniy wrote: | Нужно перенести "%L" в поле "Параметры", а то в поле "Команда" эта переменная не расширяется в имя файла-списка. | №;%&!!! Почему все юзеры такие юзерастые юзеры? |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Wed May 02, 2007 15:31 Post subject: |
|
|
funduk wrote: | №;%&!!! Почему все юзеры такие юзерастые юзеры? |
Наверное, я бы попытался ответить на этот риторический вопрос, но только в том случае, если бы сумел разгадать его глубинный смысл... |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Thu May 03, 2007 14:26 Post subject: |
|
|
Переношу в "Автоматизацию".
funduk и Volniy - не флеймить! _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Thu May 10, 2007 18:33 Post subject: |
|
|
funduk wrote: | Кавычки на %L поставить. |
А вот это не обязательно. |
|
Back to top |
|
|
banIDit
Joined: 27 May 2007 Posts: 4
|
(Separately) Posted: Sun May 27, 2007 18:50 Post subject: |
|
|
Задача решается также и с помощью пакетных файлов.
Причем кода будет куда меньше. Буквально 4-5 строк.
Сейчас сижу на маке, потому только позже могу выложить свой вариант решения сабжа.
Если конечно кому-то еще любопытно. |
|
Back to top |
|
|
iov
Joined: 17 Mar 2005 Posts: 51
|
(Separately) Posted: Tue May 29, 2007 12:59 Post subject: |
|
|
Любопытно выкладывай |
|
Back to top |
|
|
banIDit
Joined: 27 May 2007 Posts: 4
|
(Separately) Posted: Fri Jun 01, 2007 07:34 Post subject: |
|
|
Кое-как добрался до Сети... Вот собственно. В параметрах скрипта поставить %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) |
Скрипты простейшие, нет обработки ошибок.
по такому же принципу в папки можно закидывать архивы файлов, достаточно заменить команду copy на соответствующую из набора rar.exe |
|
Back to top |
|
|
BeTeP
Joined: 31 Mar 2005 Posts: 101 Location: Санкт-Петербург
|
(Separately) Posted: Fri Jun 01, 2007 11:19 Post subject: |
|
|
banIDit, спасибо за скрипты, все работает. Но есть один нюанс.
Проверял я только на 2 скрипте, который для выделенных файлов. Если имя файла длинное или в нём есть пробелы, то имя создающейся папки получается неверное.
Например:
Файл Привет привет.txt -> Папка 4709~1
Файл R a m.txt -> Папка RAM~1
Файл ReadmeRUS.txt -> Папка README~1 |
|
Back to top |
|
|
banIDit
Joined: 27 May 2007 Posts: 4
|
(Separately) Posted: Sat Jun 02, 2007 17:14 Post subject: |
|
|
Согласен, с длинными именами все не так просто оказывается.
Вот что наковырял по этому вопросу, зацените:
Для копирования всех файлов в свою папку. Параметры — %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"
|
Для того, чтобы досовское окно постоянно не мелькало перед глазами, можно отметить галку "в свернутом виде". |
|
Back to top |
|
|
sergeylost
Joined: 01 Feb 2008 Posts: 11 Location: St.Petersburg
|
(Separately) Posted: Tue Feb 05, 2008 18:36 Post subject: |
|
|
Batya wrote: | Нечто подобное я уже делал. Теперь немного проще: |
Замечательная штучка. ))) Сегодня воспользовался. Спасибо.
Но применительно к моей работе можно ли немного изменить этот скрипт?
Задача такая:
обрабатывать 8 первых символов у файла (пробелов в названиях файлов нет), и по этим символам назначать либо находить папку, перемещая туда файл. Если следующий файл в названии будет иметь такие же одинаковые 8 символов вначале, просто перемещать в найденную-назначенную папку.
Пример:
! | CaptainFlint: | Оверквотинг удалён. | |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Tue Feb 05, 2008 20:37 Post subject: |
|
|
sergeylost
Просьба - поменьше бесполезного цитирования.
По поводу задачи - почему нельзя выделить все файлы слева и выполнить скрипт из ветки http://forum.wincmd.ru/viewtopic.php?t=11448. Переместятся все файлы, для которых найдена соотвестствующая папка. Для которых - не найдена, останутся на месте.
Я просто не понял, что значит sergeylost wrote: | Если следующий файл |
_________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
sergeylost
Joined: 01 Feb 2008 Posts: 11 Location: St.Petersburg
|
(Separately) Posted: Wed Feb 06, 2008 01:49 Post subject: |
|
|
Имеем: в лев.панели файлы у которых первые 8 символов могут совпадать. Пример: A-123-1a-2567 и A-123-1a-07896874.
Девятый символ и дальше все разные. Применить скрипт по твоей ссылке нельзя. Справа каталогов еще нет. Укладывать некуда. Применить верхний скрипт тоже нельзя, получим массу лишних и ненужных каталогов. Надо совместить два скрипта как то.
Надо:
-выделяем слева файлы
-кликаем по кнопке
-тотал образовывает справа согластно 8 первых символов файлов каталоги
-перемещает туда одноименные файлы (имеющие 8 первых символов имени равной имени каталога)
Результат:
-файлы имеющие в имени первые 8 символов одинаковые, перемещаются в одноименный созданный для них справа каталог |
|
Back to top |
|
|
sergeylost
Joined: 01 Feb 2008 Posts: 11 Location: St.Petersburg
|
(Separately) Posted: Wed Feb 06, 2008 13:44 Post subject: |
|
|
Господа, насколько реально создать такой скрипт? (описание выше) |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Thu Feb 07, 2008 11:34 Post subject: |
|
|
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 |
|
|
sergeylost
Joined: 01 Feb 2008 Posts: 11 Location: St.Petersburg
|
(Separately) Posted: Thu Feb 07, 2008 13:59 Post subject: |
|
|
Батя, извини не знаю как тебя зовут, но тебе не только от меня крепкое мужское рукопожатие, но и от нашего сисадмина.. Ты нас от такого головняка избавил!!! СПАСИБО. |
|
Back to top |
|
|
|