Страница 2 из 15

Добавлено: Ср май 02, 2007 13:55
funduk
Volniy писал(а):Нужно перенести "%L" в поле "Параметры", а то в поле "Команда" эта переменная не расширяется в имя файла-списка.
№;%&!!! Почему все юзеры такие юзерастые юзеры? :mrgreen: :lol:

Добавлено: Ср май 02, 2007 15:31
Volniy
funduk писал(а):№;%&!!! Почему все юзеры такие юзерастые юзеры? :mrgreen: :lol:
Наверное, я бы попытался ответить на этот риторический вопрос, но только в том случае, если бы сумел разгадать его глубинный смысл... :roll:

Добавлено: Чт май 03, 2007 14:26
CaptainFlint
Переношу в "Автоматизацию".

funduk и Volniy - не флеймить!

Добавлено: Чт май 10, 2007 18:33
Batya
funduk писал(а):Кавычки на %L поставить.
А вот это не обязательно.

Добавлено: Вс май 27, 2007 18:50
banIDit
Задача решается также и с помощью пакетных файлов.
Причем кода будет куда меньше. :) Буквально 4-5 строк.
Сейчас сижу на маке, потому только позже могу выложить свой вариант решения сабжа. ;)
Если конечно кому-то еще любопытно.

Добавлено: Вт май 29, 2007 12:59
iov
Любопытно выкладывай

Добавлено: Пт июн 01, 2007 07:34
banIDit
Кое-как добрался до Сети... Вот собственно. В параметрах скрипта поставить %p %t.

Код: Выделить всё

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

Код: Выделить всё

rem Скрипт создает в целевом (%t) каталоге для каждого выделенного файла 
rem папку и копирует туда его
@echo off
for /F "eol=" %%i in (%1) do (
md %2%%~ni
copy %%i %2%%~ni)
Скрипты простейшие, нет обработки ошибок. ;)
по такому же принципу в папки можно закидывать архивы файлов, достаточно заменить команду copy на соответствующую из набора rar.exe

Добавлено: Пт июн 01, 2007 11:19
BeTeP
banIDit, спасибо за скрипты, все работает. Но есть один нюанс.

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

Например:
Файл Привет привет.txt -> Папка 4709~1
Файл R a m.txt -> Папка RAM~1
Файл ReadmeRUS.txt -> Папка README~1

Добавлено: Сб июн 02, 2007 17:14
banIDit
Согласен, с длинными именами все не так просто оказывается.
Вот что наковырял по этому вопросу, зацените:
Для копирования всех файлов в свою папку. Параметры — %P %t.

Код: Выделить всё

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

Код: Выделить всё

@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"
Для того, чтобы досовское окно постоянно не мелькало перед глазами, можно отметить галку "в свернутом виде". ;)

Добавлено: Вт фев 05, 2008 17:36
sergeylost
Batya писал(а):Нечто подобное я уже делал. Теперь немного проще:
Замечательная штучка. ))) Сегодня воспользовался. Спасибо.

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

Пример:

Изображение

[mod="CaptainFlint"]Оверквотинг удалён.[/mod]

Добавлено: Вт фев 05, 2008 19:37
Batya
sergeylost
Просьба - поменьше бесполезного цитирования.

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

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

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

Результат:
-файлы имеющие в имени первые 8 символов одинаковые, перемещаются в одноименный созданный для них справа каталог

Добавлено: Ср фев 06, 2008 12:44
sergeylost
Господа, насколько реально создать такой скрипт? (описание выше)

Добавлено: Чт фев 07, 2008 10:34
Batya
sergeylost
Ну так бы сразу и сказал, что тебе нужно создавать папки.
Замени в указанном скрипте

Код: Выделить всё

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

Код: Выделить всё

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

Добавлено: Чт фев 07, 2008 12:59
sergeylost
Батя, извини не знаю как тебя зовут, но тебе не только от меня крепкое мужское рукопожатие, но и от нашего сисадмина.. Ты нас от такого головняка избавил!!! СПАСИБО.