Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Сохранение структуры папок и ее воссоздание с помощью командного файла (http://forum.oszone.net/showthread.php?t=145644)

Vadikan 20-07-2009 13:09 1172670

Сохранение структуры папок и ее воссоздание с помощью командного файла
 
Всем привет!

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

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

Petya V4sechkin 20-07-2009 13:30 1172689

Допустим, 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 1172767

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

Petya V4sechkin 20-07-2009 14:41 1172771

Цитата:

Цитата Vadikan
Есть ряд папок, которые являются скрытыми/только для чтения.

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

Petya V4sechkin 20-07-2009 15:03 1172789

Цитата:

Цитата Petya V4sechkin
опция /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 1172829

Цитата:

Цитата Petya V4sechkin
/AD-H-S-R »

Это я, конечно, попробовал сразу - базовый хелп к dir я прочел... Просто не написал об этом в лучших традициях форума :)

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

NiOl 20-07-2009 19:39 1173017

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

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

amel27 21-07-2009 03:14 1173282

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

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

Vadikan 22-07-2009 01:56 1174222

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


Время: 04:32.

Время: 04:32.
© OSzone.net 2001-