Войти

Показать полную графическую версию : [решено] Сохранение структуры папок и ее воссоздание с помощью командного файла


Vadikan
20-07-2009, 13:09
Всем привет!

Имеется структура папок, начиная от корневой C:\Folder, в которую вложены другие, также имеющие вложенные папки. Глубина вложенности различается от папки к папке, и достигает навскидку 10 уровней. Необходимо воссоздать такую же структуру на другой машине. В папках имеются файлы, но их нужно проигнорировать - требуется только структура папок.

Фильтром по папк подобной темы не нашел. Буду признателен за любую помощь в этом вопросе :)
Спасибо!

Petya V4sechkin
20-07-2009, 13:30
Допустим, SaveFolderStruct.cmd с содержимым:
@Echo Off
Set Fld=C:\Folder
Dir /AD /B /S %Fld% >FolderStruct.txt

сохраняет список папок в FolderStruct.txt

RestoreFolderStruct.cmd (восстанавливает из FolderStruct.txt):
@Echo Off
SetLocal EnableExtensions
For /F "Delims=" %%I In (FolderStruct.txt) Do MD "%%~I"

Vadikan
20-07-2009, 14:36
Petya V4sechkin, спасибо, все работает! Но задача чуть усложнилась :) Есть ряд папок, которые являются скрытыми/только для чтения. Как их исключить?

Petya V4sechkin
20-07-2009, 14:41
Есть ряд папок, которые являются скрытыми/только для чтения.
Для исключения скрытых, системных и только для чтения: опция /AD-H-S-R в команде Dir.

Petya V4sechkin
20-07-2009, 15:03
опция /AD-H-S-R в команде Dir.
Хм... для вложенных папок опция работает не так, как хотелось бы.
Действительно, усложняется. SaveFolderStruct.cmd примерно такой:
@Echo Off
SetLocal EnableExtensions

Set Fld=C:\Folder
Call :ListFolders %Fld% >FolderStruct.txt
Exit /B

:ListFolders
For /F "Delims=" %%I In ('Dir /AD-H-S-R /B "%~1"') Do (
Echo %~1\%%~I
Call :ListFolders "%~1\%%~I"
)
GoTo :Eof

Vadikan
20-07-2009, 15:57
/AD-H-S-R »
Это я, конечно, попробовал сразу - базовый хелп к dir я прочел... Просто не написал об этом в лучших традициях форума :)

Спасибо, Женя, все работает!

NiOl
20-07-2009, 19:39
Если я правильно понял, то структура папок переносится с одной машины на другую посредсвом чего-то... ;)
например флешка или временно на диск и архив пустых каталогов по почте... вобщем сначала на локальном или сетевом диске создаем копию структуры каталогов... для копий у нас есть хорошая команда xcopy.... ;)

без скрытых/системных каталогов: xcopy /t /e c:\Folder d:\Prep2Export\
со скрытыми каталогами: xcopy /t /e /h c:\Folder d:\Prep2Export\
:lol:

amel27
21-07-2009, 03:14
NiOl, для поставленной задачи вариант через DIR оптимален, т.к. сохранение атрибутов/прав на подкаталоги не требуется, у XCOPY свои недостатки:
- каталог назначения не может быть подкаталогом источника (например, для сохранения структуры C:\)
- плохая транпортабельность, одним файлом проще, особенно, для большого кол-ва подкаталогов.

З.Ы. общее решение задачи реализуется в одну строчку архиватором RAR

Vadikan
22-07-2009, 01:56
NiOl, amel27, спасибо за комментарии. Честно говоря, меня вполне устроило решение выше. Насчет RAR я даже не подумал, но он и не установлен был, да и не пользуюсь я им.




© OSzone.net 2001-2012