Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Разложить файлы из кучи по каталогам согласно образцу

Ответить
Настройки темы
CMD/BAT - Разложить файлы из кучи по каталогам согласно образцу

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Помогите, пожалуйста, решить следующую задачу: нужно из общей свалки файлов разложить их по каталогам, согласно образцу.

Поясню на примере:

1. Есть каталог-образец. Он содержит следующие файлы
D:/страны_образец/Европа/Германия.txt
D:/страны_образец/Европа/Франция.txt
D:/страны_образец/Европа/Россия.txt
D:/страны_образец/Африка/Египет.txt
D:/страны_образец/Африка/Кения.txt
2. Есть исходный каталог, с которым надо работать. Он содержит следующие файлы:
D:/страны_разрбрать/Германия.txt
D:/страны_разрбрать/Россия.txt
D:/страны_разрбрать/Кения.txt
3. Нужно получить 3-ий каталог со следующей структурой (берем файл и переносим его в каталожную структуру согласно образцу):
D:/страны_разобраны/Европа/Германия.txt
D:/страны_разобраны/Европа/Россия.txt
D:/страны_разобраны/Африка/Кения.txt
Важное замечание: В каталоге Страны_Разобрать не могуть быть файлы, отсутствующие в каталоге страны_образец.

Отправлено: 00:26, 11-03-2011

 

Старожил


Сообщения: 175
Благодарности: 119

Профиль | Отправить PM | Цитировать


Цитата Maartimus:
В реальной задаче каталогов больше. Увеличил, чтобы потом не забыть. Это ведь влияет на глубину просмотра, но не на логику, так что из-за этого дополнительных проблем быть не должно. »
Проблемы будут, если не будет точного совпадения по глубине. Чем этот мой скрипт и плох. Он не универсален. Но в последней редакции берется именно последний по глубине каталог - и здесь уже проблем не должно возникать (я надеюсь ).
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:51, 12-03-2011 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата SendMessage:
Проблемы будут, если не будет точного совпадения по глубине. Чем этот мой скрипт и плох. Он не универсален. Но в последней редакции берется именно последний по глубине каталог - и здесь уже проблем не должно возникать (я надеюсь ). »
Тогда понятно почему у меня не заработало .
Правильная поговорка есть "работает -- не трогай", но я её не послушал.
Зато теперь есть вторая редакция скрипта. Сейчас протестирую. Отпишу о результатах.

Все работает как нужно.

Спасибо!

Отправлено: 12:17, 12-03-2011 | #12


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ещё вопрос.
А как сохранить структуру вложенности каталогов?

Например.

Каталог-образец:
D:\страны_образец\eвропа\россия\московская_область\балашиха.txt
D:\страны_образец\eвропа\россия.txt
Исходный каталог:
D:\страны_разрбрать\балашиха.txt
D:\страны_разрбрать\россия.txt
Последний вариант скрипта возвращает:
D:\страны_образец\московская_область\балашиха.txt
D:\страны_образец\eвропа\россия.txt
То есть отсутствует часть каталога, выделенного жирным в каталоге-образце.
Подскажите изменения, для сохранения полного пути?

Отправлено: 11:12, 14-03-2011 | #13


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Может кто-нибудь помочь с кодом?

Отправлено: 11:30, 16-03-2011 | #14


Ветеран


Сообщения: 2204
Благодарности: 729

Профиль | Отправить PM | Цитировать


Необходимо разложить файлы по 10 штук в папку. Папки создавать по потребности. Скрипт написал, но почему-то количество файлов в папках не равняется 10. Подскажите, где ошибка?
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
set maxfiles=10
set dr="c:\перевалка"
set m=1
md "%~dp0name%m%"
for /f "delims=" %%a in ('dir "%dr%" /b/a-d') do (
   if not exist "%~dp0name!m!" md "%~dp0name!m!"
   set /a n +=1
   if "!n!"=="%maxfiles%" (set n=&set /a m +=1) else (copy "%dr%\%%a" "%~dp0name!m!")
)
pause

Отправлено: 11:26, 14-07-2012 | #15


Старожил


Сообщения: 352
Благодарности: 119

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
set maxfiles=10
set dr="z:\perevalka"
set m=1
set n=0
for /f "delims=" %%a in ('dir "%dr%" /b/a-d') do (
   if "!n!"=="%maxfiles%" (set n=0 &set /a m+=1)
   if not exist "%~dp0name!m!" md "%~dp0name!m!"
   copy "%dr%\%%a" "%~dp0name!m!"
   set /a n+=1
)
pause
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:32, 14-07-2012 | #16


Ветеран


Сообщения: 2204
Благодарности: 729

Профиль | Отправить PM | Цитировать


kiripanda, всё равно в папках не по 10 файлов.

Отправлено: 12:52, 14-07-2012 | #17


Старожил


Сообщения: 352
Благодарности: 119

Профиль | Отправить PM | Цитировать


у меня по 10

Отправлено: 13:11, 14-07-2012 | #18


Ветеран


Сообщения: 2204
Благодарности: 729

Профиль | Отправить PM | Цитировать


kiripanda, разобрался, были скрытые файлы

Отправлено: 13:37, 14-07-2012 | #19



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Разложить файлы из кучи по каталогам согласно образцу

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] переместить файлы по папкам согласно списку shadowbat Скриптовые языки администрирования Windows 9 17-11-2023 14:51
[решено] Поиск и запуск приложения согласно условию If... semiono AutoIt 19 18-02-2010 00:24
Прочее - Нужна помощь в настройке VMware согласно схеме. axsi Сетевые технологии 4 27-03-2009 15:05
Рейтинг обращений к каталогам ValVlaGen Программное обеспечение Windows 0 24-04-2008 08:41
Удаление пользователя из группы в АД согласно расписанию Local.admin Microsoft Windows NT/2000/2003 5 09-11-2007 12:48




 
Переход