|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Как создать серию папок с папками внутри (10 входов по папкам)? |
|
Любой язык - Как создать серию папок с папками внутри (10 входов по папкам)?
|
Пользователь Сообщения: 63 |
Собственно суть задачи такова:
-создать 10 папок(например в диске "C" (в папке "test") с названием каждой "0","1","2","3","4","5","6","7","8","9"; -в каждой этой папке создать ещё 10 папок "0","1","2","3","4","5","6","7","8","9" -в свою очередь в каждой новой папке ещё по 10 папок с такими же названиями -создать до такого количества раз, чтобы в итоге можно было зайти на глубину 10 папок. Например зашёл в папку 3, далее в 5, потом 1, далее 0 и так далее 10 раз(входов) -важным критерием является контроль глубины создания папок, чтобы в скрипте можно было выставить сколько создавать. (может кому то и 3 входа достаточно будет. -если возможно так же иметь возможность контролировать количество созданных папок(не ограничиваться "девяткой" ,а использовать и меньшее количество папок с названиями, а так же продолжить использовать цифры далее цифры "9"(10,11,12 и т.д),или даже весть латинский алфавит вместо цифр(как вариант) В чём цель? Собственно - например ваша мама родилась 02.03.1965 г. , используя эти цифры, и последовательно открывая папки с соответствующими номерами мы попадём в конечную папку 5 в которой будут храниться необходимые данные связанные именно с этим человеком(мама) или датой. Ну и любые другие комбинации цифр или слов. Одним словом суть этой задачи - ХРАНИЛИЩЕ. Причём использование готовой серии папок любым даже самым простым человека без всяких паролей и шифрования. |
|
Отправлено: 11:44, 08-01-2020 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Цитата NLOLegion:
а "самый простой человек" против которого это задумывается совершенно не умеет поиском пользоваться? |
|
Отправлено: 11:55, 08-01-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать Busla, речь о скрытии данных не идёт. Плюс искать можно что-то конкретное, а не все типы файлов которые можно засунуть в одну папку.
|
Отправлено: 12:06, 08-01-2020 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать NLOLegion, это никак не объясняет необходимости создания огромного дерева каталогов.
|
Отправлено: 12:38, 08-01-2020 | #4 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Имена папок могут быть любыми, как и их количество. Насчет вложенности (здесь Set /A Nest=4) , для большого числа (вы указывали 10) предложенный код будет работать долго.
@Echo Off Set /A Nest=4 Set "BoxIn=Z:\Test" Set "@01=0" Set "@02=1" Set "@03=2" Set "@04=3" Set "@05=4" Set "@06=5" Set "@07=6" Set "@08=7" Set "@09=8" Set "@10=9" FOR /F "usebackq tokens=2 delims==" %%i IN (`2^>nul Set "@"`) Do 2>nul md "%BoxIn%\%%i" FOR /L %%n IN (2,1,%Nest%) DO ( FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxIn%" /B /S /A:D`) Do Call :NestMD "%%d" ) pause Exit /B :NestMD FOR /F "usebackq tokens=2 delims==" %%i IN (`2^>nul Set "@"`) Do 2>nul md "%~1\%%i" ||Exit /B 1 Exit /B |
|
------- Последний раз редактировалось megaloman, 08-01-2020 в 16:59. Отправлено: 13:07, 08-01-2020 | #5 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Вариант на WSH JScript: MkFoldersRecurse.js
Скрытый текст
// Папка: var targetFolder = "d:\\xxTESTxx"; // Массив создаваемых папок: var foldersList = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ]; // Глубина создаваемой структуры папок: var foldersDepth = 2; var newf = ''; var wsh = WScript.CreateObject("WScript.Shell"); var fso = new ActiveXObject("Scripting.FileSystemObject"); if (!TestWritable(targetFolder)) { msg("Ошибка записи в папку " + targetFolder); WScript.Quit(1); } if (wsh.Popup("Будет создано " + GetFoldersNumber(foldersList.length, foldersDepth) + " папок.\n\nПродолжить?", 0, "", 4) != 6 ) WScript.Quit(0); var timeStart = new Date(); CreateFolders(targetFolder, foldersList, foldersDepth); var timeFinish = new Date(); msg((timeFinish - timeStart) + " msec.") function msg(s){WScript.Echo(s);} function TestWritable(parentFolder) { var testFolderName = parentFolder + "\\" + "testFolderName"; try { fso.CreateFolder(testFolderName); } catch(error) { return false; } fso.DeleteFolder(testFolderName, true); return true } function GetFoldersNumber(n, d) { var sum = 0; for (var i = 1; i <= d ; i++) sum += Math.pow(n, i); return sum; } function CreateFolders(parentFolder, foldersList, foldersDepth){ var depth = foldersDepth == undefined ? foldersList.length : foldersDepth; if (depth == 0) return; for (var f in foldersList) { newf = parentFolder + "\\" + foldersList[f] if (!fso.FolderExists(newf)) fso.CreateFolder(newf); CreateFolders(newf, foldersList, depth - 1) } } Цитата NLOLegion:
![]() Цитата megaloman:
![]() |
||
Последний раз редактировалось iglezz, 08-01-2020 в 16:59. Отправлено: 16:52, 08-01-2020 | #6 |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать Цитата iglezz:
![]() |
|
Отправлено: 06:54, 09-01-2020 | #7 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Кто я чтобы мешать чужому счастью )))
param( $workPath = 'c:\tmp\root' ) cls $iteration = 0 function makeFolderTree { If ($iteration -eq 0) { (1..10) | ForEach-Object{ New-Item -ItemType Directory -Path (Join-Path -Path $WorkPath -ChildPath $_) | Out-Null } } foreach ($leaf in (Get-ChildItem -Directory -Recurse -Path $workPath | Where-Object {!(Get-ChildItem $_.FullName -Directory)}).FullName){ (1..10) | ForEach-Object{ New-Item -ItemType Directory -Path (Join-Path -Path $leaf -ChildPath $_) | Out-Null } } $iteration++ If ($iteration -eq 10){ break } $iteration makeFolderTree } makeFolderTree |
Отправлено: 09:54, 15-01-2020 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Как применить настройки вида папок ко всем папкам | alexa___ | Microsoft Windows Vista | 8 | 22-12-2021 18:11 | |
Разное - [решено] Как перставлять местами файлы внутри папок? | pseudoman | Microsoft Windows 7 | 10 | 28-09-2018 05:53 | |
Прочие - название папок по текстовым файлам внутри | fyodorg | Программное обеспечение Windows | 3 | 26-01-2018 09:19 | |
как лучше снять серию снимков с поворотом по оси | fufgjd | Хочу все знать | 3 | 13-11-2009 10:54 | |
Как создать сеть внутри сети? | Wanderer-1000 | Хочу все знать | 4 | 24-09-2007 19:08 |
|