№;%&!!! Почему все юзеры такие юзерастые юзеры?Volniy писал(а):Нужно перенести "%L" в поле "Параметры", а то в поле "Команда" эта переменная не расширяется в имя файла-списка.
Автоматическое создание папок
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
- CaptainFlint
- Сообщения: 6239
- Зарегистрирован: Вт дек 14, 2004 22:34
- Контактная информация:
Кое-как добрался до Сети... Вот собственно. В параметрах скрипта поставить %p %t.
Вариант для выделенных файлов, в параметрах выставить %l %t
Скрипты простейшие, нет обработки ошибок. 
по такому же принципу в папки можно закидывать архивы файлов, достаточно заменить команду copy на соответствующую из набора rar.exe
Код: Выделить всё
rem Скрипт создает в целевом (%t) каталоге для каждого файла
rem папку и копирует туда его
@echo off
for %%i in (%1*.*) do (
md %2%%~ni
copy %%i %2%%~ni)Код: Выделить всё
rem Скрипт создает в целевом (%t) каталоге для каждого выделенного файла
rem папку и копирует туда его
@echo off
for /F "eol=" %%i in (%1) do (
md %2%%~ni
copy %%i %2%%~ni)по такому же принципу в папки можно закидывать архивы файлов, достаточно заменить команду copy на соответствующую из набора rar.exe
banIDit, спасибо за скрипты, все работает. Но есть один нюанс.
Проверял я только на 2 скрипте, который для выделенных файлов. Если имя файла длинное или в нём есть пробелы, то имя создающейся папки получается неверное.
Например:
Файл Привет привет.txt -> Папка 4709~1
Файл R a m.txt -> Папка RAM~1
Файл ReadmeRUS.txt -> Папка README~1
Проверял я только на 2 скрипте, который для выделенных файлов. Если имя файла длинное или в нём есть пробелы, то имя создающейся папки получается неверное.
Например:
Файл Привет привет.txt -> Папка 4709~1
Файл R a m.txt -> Папка RAM~1
Файл ReadmeRUS.txt -> Папка README~1
«The Truth Is Out There»
Согласен, с длинными именами все не так просто оказывается.
Вот что наковырял по этому вопросу, зацените:
Для копирования всех файлов в свою папку. Параметры — %P %t.
Для копирования всех выделенных файлов в свою папку. Параметры — %l %t.
Для того, чтобы досовское окно постоянно не мелькало перед глазами, можно отметить галку "в свернутом виде". 
Вот что наковырял по этому вопросу, зацените:
Для копирования всех файлов в свою папку. Параметры — %P %t.
Код: Выделить всё
rem Скрипт создает в целевом (%t) каталоге для каждого файла
rem папку и копирует туда его
for %%i in (%1*.*) do (
md "%2%%~ni"
copy "%%i" "%2%%~ni")Код: Выделить всё
@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"
- sergeylost
- Сообщения: 11
- Зарегистрирован: Пт фев 01, 2008 15:28
- Откуда: St.Petersburg
Замечательная штучка. ))) Сегодня воспользовался. Спасибо.Batya писал(а):Нечто подобное я уже делал. Теперь немного проще:
Но применительно к моей работе можно ли немного изменить этот скрипт?
Задача такая:
обрабатывать 8 первых символов у файла (пробелов в названиях файлов нет), и по этим символам назначать либо находить папку, перемещая туда файл. Если следующий файл в названии будет иметь такие же одинаковые 8 символов вначале, просто перемещать в найденную-назначенную папку.
Пример:

[mod="CaptainFlint"]Оверквотинг удалён.[/mod]
sergeylost
Просьба - поменьше бесполезного цитирования.
По поводу задачи - почему нельзя выделить все файлы слева и выполнить скрипт из ветки http://forum.wincmd.ru/viewtopic.php?t=11448. Переместятся все файлы, для которых найдена соотвестствующая папка. Для которых - не найдена, останутся на месте.
Я просто не понял, что значит
Просьба - поменьше бесполезного цитирования.
По поводу задачи - почему нельзя выделить все файлы слева и выполнить скрипт из ветки http://forum.wincmd.ru/viewtopic.php?t=11448. Переместятся все файлы, для которых найдена соотвестствующая папка. Для которых - не найдена, останутся на месте.
Я просто не понял, что значит
sergeylost писал(а):Если следующий файл
Нет, я не сплю. Я просто медленно моргаю.
- sergeylost
- Сообщения: 11
- Зарегистрирован: Пт фев 01, 2008 15:28
- Откуда: St.Petersburg
Имеем: в лев.панели файлы у которых первые 8 символов могут совпадать. Пример: A-123-1a-2567 и A-123-1a-07896874.
Девятый символ и дальше все разные. Применить скрипт по твоей ссылке нельзя. Справа каталогов еще нет. Укладывать некуда. Применить верхний скрипт тоже нельзя, получим массу лишних и ненужных каталогов. Надо совместить два скрипта как то.
Надо:
-выделяем слева файлы
-кликаем по кнопке
-тотал образовывает справа согластно 8 первых символов файлов каталоги
-перемещает туда одноименные файлы (имеющие 8 первых символов имени равной имени каталога)
Результат:
-файлы имеющие в имени первые 8 символов одинаковые, перемещаются в одноименный созданный для них справа каталог
Девятый символ и дальше все разные. Применить скрипт по твоей ссылке нельзя. Справа каталогов еще нет. Укладывать некуда. Применить верхний скрипт тоже нельзя, получим массу лишних и ненужных каталогов. Надо совместить два скрипта как то.
Надо:
-выделяем слева файлы
-кликаем по кнопке
-тотал образовывает справа согластно 8 первых символов файлов каталоги
-перемещает туда одноименные файлы (имеющие 8 первых символов имени равной имени каталога)
Результат:
-файлы имеющие в имени первые 8 символов одинаковые, перемещаются в одноименный созданный для них справа каталог
- sergeylost
- Сообщения: 11
- Зарегистрирован: Пт фев 01, 2008 15:28
- Откуда: St.Petersburg
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
Нет, я не сплю. Я просто медленно моргаю.
- sergeylost
- Сообщения: 11
- Зарегистрирован: Пт фев 01, 2008 15:28
- Откуда: St.Petersburg