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

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

Закрытая тема
Настройки темы
CMD/BAT - [решено] Сохранение структуры папок и ее воссоздание с текстовыми файлами вместо файлов

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


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

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


Есть папка с названием "Структура1" в ней много файлов и подпапок. Файлы и подпапки которые находятся в ней содержат имена из: знаков, русских, английских букв. Есть еще вторая пустая папка с названием "Структура2". Нужно скопировать структуру всех подпапок, которые находятся в папке "Структура1" в папку "Структура2" но без файлов которые в ней находятся, а вместо файлов в ту же папку "Структура2" создать пустые txt-файлы с их именами и плюс с датой когда был создан тот или иной файл.

До батника вид такой:

Структура1: Документ.doc, Фото.jpg ; Подпапка2: Программа.exe, Текст.txt ; Подпапка3: MP3.mp3, MP4.mp4, AVI.avi

Структура2:


После выполнения батника должен вид такой быть:

Структура1: Документ.doc, Фото.jpg ; Подпапка2: Программа.exe, Текст.txt ; Подпапка3: MP3.mp3, MP4.mp4, AVI.avi

Структура2: Документ - 02.04.2020-12.05.34.txt, Фото - 14.03.2020-17.14.45.txt ; Подпапка2: Программа - 21.05.2020-12.05.34.txt, Текст - 02.02.2020-15.05.43.txt ; Подпапка3: MP3 - 02.06.2020-12.05.34.txt, MP4 - 02.06.2020-12.05.34.txt, AVI - 02.06.2020-12.05.34.txt


Все что получилось у меня это создать батник который сохраняет структуру подпапок в текстовый файл, а потом запуском еще вторым батником из ранее сохраненного текста структуры подпапок восстанавливать структуру т.е. таким карявым методом как бы создавать копию структуры подпапок, правда для это мне приходится менять внешний жесткий диск, так как все скопированные пути на восстановление в тестовом файле начинаются с него (папка "Структура1" для примера находится на внешнем жестком диске). И после этого я уже с внешнего жесткого диска копирую структуру подпапок в нужную мне папку, но это уж совсем неудобно. Переписать пути с помощью батника так, чтобы подпапки восстановились в конкретную папку т.е. в папку "Структура2" не знаю как.

На втором шаге, я нашел в интернете: "создание пустых txt-файлов с именами содержимого папки с помощью батника", но батник создает текстовые файлы с именами файлов из одной папки в которой запустился, а в подпапках нет. Тут нужно еще чтобы текстовые файлы создавались не в той папке откуда берутся имена ("Структура1"), а чтобы текстовые файлы создавались в папке "Структура2" после того как туда скопируется структура пустых подпапок.

Я совсем запутался в кодах батника. Помогите пожалуйста! Народ, кто в этом разбирается?! как это можно реализовать в батнике?

Отправлено: 13:10, 02-06-2020

 

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


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

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


Да, именно в Akelpad я и сделал, все как нужно! Всем огромное спасибо за помощь! megaloman, твой код сотворил чудо! СПАСИБО!!!

Тему уже я конечно закрыл, так как все работает так как надо, но дабы еще одну похожую тему не создавать у меня еще вопрос. А как можно еще сделать в этом же батнике чтобы были в конце и секунды? например так: Фото.jpg-06.10.2016-23.50.29 ?

Отправлено: 19:32, 02-06-2020 | #11



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

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


Ветеран


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

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


Цитата Serezha373737:
Апельсин.jpg - 02.06.2020-14.03.01 »
Лучше так:
Код: Выделить весь код
Апельсин - 2020.06.02-14.03.01.jpg

Отправлено: 19:52, 02-06-2020 | #12


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


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

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


можно и так, главное чтобы было!

ну так как там добавить секунды еще в конце?)

Отправлено: 20:02, 02-06-2020 | #13


Ветеран


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

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


Serezha373737, Вы про чей код?

Отправлено: 00:11, 03-06-2020 | #14


Ветеран


Contributor


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

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


Serezha373737, Это эстетствующий каприз? За секунды в CMD придётся заплатить долгим временем выполнения. Разве кто из спецов PowerShell заинтересуется. И, опять же, возможны пропуски файлов с необрабатываемыми в CMD символами в именах.
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=D:\Мой контент"
	Set "BoxOut=Z:\Box_Out"

	If Not "%BoxIn:~-1%"=="\" Set "BoxIn=%BoxIn%\"
	If Not "%BoxOut:~-1%"=="\" Set "BoxOut=%BoxOut%\"

	FOR /F "tokens=1* delims=:" %%i IN ("%BoxIn%") DO Set "Drive=%%i:" &Set "PathLike=%%j" &Call Set "PathLike=%%PathLike:\=\\%%" 

	>"%Tmp%\%~nx0.tmp" wmic datafile Where "Drive='%Drive%' And Path Like '%PathLike%%%'" get 'Last Modified', Name /Format:CSV
	Xcopy "%BoxIn%*.*" "%BoxOut%" /T /E
	FOR /F "usebackq tokens=2* delims=," %%i IN (`More "%Tmp%\%~nx0.tmp"`) DO Call :MyFile "%%i" "%%j"
	Del "%Tmp%\%~nx0.tmp"
pause
Exit /B 

:MyFile
	If Not Exist %2 Exit /B 1
	Set "FileIn=%~2"
	Set "D=%~1"
	Set "D=%D:~6,2%.%D:~4,2%.%D:~0,4%_%D:~8,2%.%D:~10,2%.%D:~12,2%.txt
	Call Set "FileOut=%%FileIn:%BoxIn%=%BoxOut%%%-%D%"
	>"%FileOut%" cd.
Exit /B

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

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

Отправлено: 11:24, 03-06-2020 | #15


Аватара для Fors1k

Старожил


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

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


Цитата megaloman:
Разве кто из спецов PowerShell заинтересуется. »


Код: Выделить весь код
Param(
    $pathIn  = "C:\test\Структура1",
    $pathOut = "C:\test\Структура2"
)cls

gci $pathin -rec -file|%{$null>((ni $_.DirectoryName.Replace($pathIn,$pathOut) -I d -F).FullName+'\'+
$_.BaseName+(date $_.LastWriteTime -Format " — dd.MM.yyyy-HH.mm.ss") + $_.Extension )};start $pathOut

Последний раз редактировалось Fors1k, 03-06-2020 в 18:51.

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

Отправлено: 15:01, 03-06-2020 | #16


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


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

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


Iska, Вы про чей код?

Iska, почитайте ВНИМАТЕЛЬНЕЕ мои последние сообщения. Первый код был Powershell, а второй код bat. Или вы не знаете что такое "БАТНИК" ?! Слова: " megaloman, твой код сотворил чудо!" "А как можно еще сделать В ЭТОМ ЖЕ БАТНИКЕ чтобы были в конце и секунды?" ...тут речь идет о bat. На данный момент Iska, код bat только один - от megaloman!
...............................................................................

megaloman, Спасибо за код! Теперь уже с секундами! И Да! Есть каприз небольшой То, что касается долгим временем выполнения - это не критично! А вот то, что возможны пропуски файлов с не обрабатываемыми в CMD символами в именах, нужно найти вариант это как то исправить...каприз заключается как раз и в этом, что я пытался все реализовать в bat-нике, при этом не используя PowerShell. PowerShell - этот вариант подходит если уж совсем в батнике никак не сделать! DJ Mogarych, Вам тоже спасибо за помощь!

Отправлено: 15:10, 03-06-2020 | #17


Аватара для Fors1k

Старожил


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

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


Цитата Serezha373737:
PowerShell - этот вариант подходит если уж совсем в батнике никак не сделать! »
В чем логика, если вы получаете желаемый результат без проблем со спец символами?

Последний раз редактировалось Fors1k, 04-06-2020 в 03:18.


Отправлено: 15:17, 03-06-2020 | #18


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


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

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


Fors1k_m, Желаемый результат я НЕ получил! Ваш код Не работает! При выполнении, показывает черное окно и ничего не происходит! Долгое время ждал когда выполнит, но опять ничего.
..................................

Fors1k_m, логика в том что я делаю программу, которая будет выполняется в загрузочной операционной системе т.е. в оперативной памяти. В загрузочной операционной системе я вырезаю некоторые НЕКРИТИЧНЫЕ программы, службы и утилиты, чтобы освободилось больше оперативной памяти для разных операций, так как вся операционная система находится полностью в оперативной памяти. И поэтому я не вижу смысла только для этого загружать powershell и другие программы, чтобы они там висели в памяти и потребляли ресурсы ОЗУ.

Отправлено: 15:42, 03-06-2020 | #19


Ветеран


Contributor


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

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


Serezha373737, с cmd с символами будут проблемы. Как вариант, можно подумать о vbs или js, если Вас такое устроит.

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

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

Отправлено: 15:49, 03-06-2020 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - Перенос файлов и папок с сохранением структуры Kenwood Скриптовые языки администрирования Windows 3 20-09-2019 14:54
VBS/WSH/JS - Скрипт для забора файлов и папок (с сохр. структуры) из неск. сетевых папок в одну л. DjBoBo Скриптовые языки администрирования Windows 0 19-07-2016 16:30
CMD/BAT - [решено] работа с текстовыми файлами YuKar Скриптовые языки администрирования Windows 4 19-07-2012 17:10
CMD/BAT - работа с 2 текстовыми файлами, именами файлов и всё в цикле Тишина Скриптовые языки администрирования Windows 4 15-07-2012 20:26
CMD/BAT - [решено] Сохранение структуры папок и ее воссоздание с помощью командного файла Vadikan Скриптовые языки администрирования Windows 8 22-07-2009 01:56




 
Переход