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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Как создать серию папок с папками внутри (10 входов по папкам)?

Ответить
Настройки темы
Любой язык - Как создать серию папок с папками внутри (10 входов по папкам)?

Пользователь


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

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


Собственно суть задачи такова:
-создать 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
Благодарности: 824

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


Цитата NLOLegion:
02.03.1965 »
LOL, это, типа, пароль что ли получится для доступа к данным?

а "самый простой человек" против которого это задумывается совершенно не умеет поиском пользоваться?

Отправлено: 11:55, 08-01-2020 | #2



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

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


Пользователь


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

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


Busla, речь о скрытии данных не идёт. Плюс искать можно что-то конкретное, а не все типы файлов которые можно засунуть в одну папку.

Отправлено: 12:06, 08-01-2020 | #3


Ветеран


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

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


NLOLegion, это никак не объясняет необходимости создания огромного дерева каталогов.

Отправлено: 12:38, 08-01-2020 | #4


Ветеран


Contributor


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

Профиль | Отправить 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
Пример произвольных имен
Код: Выделить весь код
	Set "@01=ku ku" 
	Set "@02=la la"
	Set "@03=ой ё"

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 08-01-2020 в 16:59.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:07, 08-01-2020 | #5


Старожил


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

Профиль | Отправить 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:
-создать 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 папок. Н »
Жалко компа, он же сдохнуть может от такой нагрузки

Цитата megaloman:
10 миллиардов папок - занадта! »
NTFS вроде как лимит в 4,294,967,295 (2^32-1) имеет

Последний раз редактировалось iglezz, 08-01-2020 в 16:59.


Отправлено: 16:52, 08-01-2020 | #6


Пользователь


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

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


Цитата iglezz:
Жалко компа, он же сдохнуть может от такой нагрузки »
да, можно использовать осознанно и с этой целью

Отправлено: 06:54, 09-01-2020 | #7


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


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

Профиль | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Как создать серию папок с папками внутри (10 входов по папкам)?

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как применить настройки вида папок ко всем папкам 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




 
Переход