Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Создание информационных файлов
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
KatMuse



Joined: 26 Jul 2014
Posts: 82

Post (Separately) Posted: Fri Dec 19, 2014 21:56    Post subject: Создание информационных файлов Reply with quote

Доброго времени суток, уважаемые форумчане!
Подскажите, пожалуйста, как реализовать следующую задумку:
есть файлы, подготовленные для записи на диск.
Диск 10 <-- папка
File1.iso <-- файл
File2.rar <-- файл
Как сделать такую папку:
Моя папка
File1.iso.txt --содержание--> см. Диск 10
File2.rar.txt --содержание--> см. Диск 10
К сожалению, мне не хватает навыков написать такой скрипт, а беспорядок на диске уже надоел Sad
Большая просьба помочь. Спасибо!

 !  Avada:
Прежний заголовок темы "Заместитель для файла" заменён на более осмысленный.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sat Dec 20, 2014 00:35    Post subject: Reply with quote

Просто уточняю задачу.

Типа, надо для каждого файла File.Ext из папки DiskName создать файл File.Ext.txt с текстом
Quote:
--содержание--> см. DiskName
?
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
KatMuse



Joined: 26 Jul 2014
Posts: 82

Post (Separately) Posted: Sat Dec 20, 2014 00:52    Post subject: Reply with quote

MVV
спасибо за ответ!
Да, всё так и есть - это такой "заместитель для файла", который указывает где хранится файл, то есть на каком диске.
Если бы можно было добавить ещё, например, размер файла, расширение и время создания, то есть сделать заместитель более информативным, то было бы вообще идеально! Но, вообще говоря, хотелось бы иметь, хотя бы ссылку на место хранения.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sat Dec 20, 2014 01:21    Post subject: Reply with quote

Можно таким батником:
Code:
@echo off
md .descr
for %%F in (*) do call :do_file "%%F"
goto :EOF

:do_file
echo %~1
for /f "delims=" %%D in ("%~dp1\.") do set foldername=%%~nxD
echo [%foldername%]>".descr\%~1.txt"
echo %~nxtza1>>".descr\%~1.txt"

Сохранить как .bat, перетащить на панель инструментов тотала и очистить поле пути запуска.
Для каждого файла из текущей папки создаст в подпапке .descr файл с описанием в виде:
Quote:
[$mltwcx]
--a--c--- 21.11.2014 11:25 55500 _z_src_09.cab

(имя папки в скобках, затем информация о файле)
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
KatMuse



Joined: 26 Jul 2014
Posts: 82

Post (Separately) Posted: Sat Dec 20, 2014 01:29    Post subject: Reply with quote

Супер! Спасибо!
MVV
Скажите, а можно, чтобы были ещё и подпапки задействованы? То есть, для всех файлов во вложенных папках?
Ещё раз большое спасибо! Кажется, наконец, будет порядок Smile
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sat Dec 20, 2014 01:30    Post subject: Reply with quote

С подпапками немного сложнее будет. Надо было сразу сказать об этом.
Code:
@echo off
for /f "delims=" %%D in ("%CD%") do set diskname=%%~nxD
call :do_dir "%CD%\" "%CD%\.descr\" ""
goto :EOF

:do_dir
echo [%diskname%\%~3]
md "%~2%~3"
for /D %%D in ("%~1%~3\*") do if not "%%~nxD" == ".descr" call :do_dir "%~1" "%~2" "%~3%%~nxD\"
for %%F in ("%~1%~3\*") do call :do_file "%%F" "%~2" "%~3"
goto :EOF

:do_file
set descrfile=%~2%~3%~nx1.txt
echo %~1 ^> %descrfile%
echo [%diskname%\%~3]>"%descrfile%"
echo %~nxtza1>>"%descrfile%"
goto :EOF


Я лично у себя использую архиваторный плагин DiskDirExtended и содержимое каждого диска упаковываю в файл-список. Потом в одну папку складываю файлы-списки от всех дисков, и можно в них входить как в каталоги и видеть файлы, их размеры, атрибуты. И поиском по этим архивам легко найти нужный файл.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
KatMuse



Joined: 26 Jul 2014
Posts: 82

Post (Separately) Posted: Sat Dec 20, 2014 02:38    Post subject: Reply with quote

Спасибо за ответ!
Quote:
С подпапками немного сложнее будет. Надо было сразу сказать об этом.

Извините...
Невероятно... мечта сбылась! Спасибо!
Скажите, а можно у Вас уточнить про совсем идеальный вариант?
То есть, чтобы размер был в мегабайтах и с приставкой Мб, а параметры файла располагались по строкам:
Quote:
Имя файла: My documet.docx
Размер: 0.5 Мб
Дата создания: 01.01.2014
Атрибуты: --a------

Извините, Вы мне очень помогли, просто я сначала постеснялся высказывать идеальный вариант...
Ещё раз Вам большое спасибо!!!!

Спасибо за плагин! Он супер!
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sat Dec 20, 2014 22:44    Post subject: Reply with quote

Это легко. Но дата указывается модификации, а не создания. По большому счёту, именно она имеет ценность. Последнюю часть файла надо модифицировать:
Code:
:do_file
set descrfile=%~2%~3%~nx1.txt
echo %~1 ^> %descrfile%
echo Location:   %diskname%\%~3>"%descrfile%"
echo Name:   %~nx1>>"%descrfile%"
set /a filesize=%~z1 / 1048576
echo Size:   %filesize% MB (%~z1 B)>>"%descrfile%"
echo Modified:   %~t1>>"%descrfile%"
echo Attributes:   %~a1>>"%descrfile%"
goto :EOF

Надписи можно исправить. Единственный момент: всё сохраняется в кодировке 866, поэтому и русский текст тоже надо в ней писать.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
KatMuse



Joined: 26 Jul 2014
Posts: 82

Post (Separately) Posted: Sat Dec 20, 2014 23:31    Post subject: Reply with quote

MVV
спасибо Вам огромное!!!!
Это просто предел мечтаний!!!
Если можно, то могли бы Вы прокомментировать, что здесь что, очень хочется разобраться, но не хватает навыков... do_file это ведь процедура правильно?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sun Dec 21, 2014 01:39    Post subject: Reply with quote

Вообще, :do_file - это просто метка, но да, переход на неё выполняется в виде вызова процедуры. Ей передаются 3 параметра: путь к исходному файлу, путь к папке .descr и относительный путь к папке файла относительно корня диска. %~2 - путь к папке .descr без кавычек (модификатор ~), %~nx1 - имя и расширение без кавычек (модификатор ~nx) исходного файла, %~a1 - атрибуты (все возможные модификаторы можно посмотреть в консоли по команде call /?). Знак > означает вывод в новый файл, знак >> - дозапись в файл. При этом ^> просто печатает символ >. Путь к файлу предварительно помещается в переменную окружения и строится из пути к папке .descr, относительного пути к текущей папке, имени и расширения текущего файла и добавочного расширения .txt.

Для обработки каталога определена метка :do_dir, принимает три параметра: путь к корню диска, путь к папке .descr и относительный путь к текущей папке относительно базовых. Процедура сначала вызывает себя для вложенных папок (при этом к относительному пути добавляется имя очередной папки, которое извлекается модификатором ~nx, как и в :do_file), затем для каждого файла в папке вызывает :do_file. В команде for можно выбрать любую букву для подстановки пути к очередному элементу, я взял %F для файлов и %D для папок. Символ процента в команде for надо удваивать, если она пишется в батнике, а не напрямую в консоли.

Ну а в начале файла просто вызывается :do_dir для исходной папки с пустым относительным путём.Вообще, :do_file - это просто метка, но да, переход на неё выполняется в виде вызова процедуры. Ей передаются 3 параметра: путь к исходному файлу, путь к папке .descr и относительный путь к папке файла относительно папки диска. %~2 - путь к папке .descr без кавычек (модификатор ~), %~nx1 - имя и расширение без кавычек (модификатор ~nx) исходного файла, %~a1 - атрибуты (все возможные модификаторы можно посмотреть в консоли по команде call /?). Знак [i]
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
KatMuse



Joined: 26 Jul 2014
Posts: 82

Post (Separately) Posted: Tue Dec 23, 2014 13:31    Post subject: Reply with quote

MVV
спасибо за объяснение!
Благодаря Вам искать файлы на компьютере стало на много легче!
Спасибо, что подробно объяснили!
Была бы возможность, наставил бы Вам море плюсиков Smile
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Tue Dec 23, 2014 14:51    Post subject: Reply with quote

Рад был помочь.

Но советую всё-таки присмотреться к плагину DiskDirExtended, о котором я выше писал. Wink Он позволяет не только видеть в своих архивах список и атрибуты файлов на диске, но может также представлять архивы в виде папок, т.е. в таком каталоге будут видны файлы внутри RAR, ISO и других файлов на диске.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
KatMuse



Joined: 26 Jul 2014
Posts: 82

Post (Separately) Posted: Wed Dec 24, 2014 20:30    Post subject: Reply with quote

MVV
Уже присмотрелся - это восхитительно!!!!!!!
Спасибо!
У меня теперь осталась последняя идея фикс Smile
Создать текстовый файл на основании двух переданных параметров - путь и имя файла.
То есть mybat.bat "C:\temp" "test.jpg" и получаем файл с именем "! test.txt" в каталоге temp.
Описания для файлов, которые лежат на диске (я их не планирую никуда записывать, просто они хранятся на диске). По ctrl-z не удобно, так как при переименовании (опечатку допустил или по-сути не точно) всё стирается. Не ли у Вас плагина для этого Smile
Написал код, но он не работает...
SetLocal EnableDelayedExpansion
Set folder=%2
Echo(>"%1.txt"
Start ""%2"\"%1.txt""
Подскажите, пожалуйста, что нужно исправить?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Dec 24, 2014 21:01    Post subject: Reply with quote

KatMuse
У нас тут не принято в одной теме запрашивать функционал, отходящий от сути сабжа, который, кстати, легко находится самостоятельно. Только один из примеров. Читаем низ памятки.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
KatMuse



Joined: 26 Jul 2014
Posts: 82

Post (Separately) Posted: Wed Dec 24, 2014 21:34    Post subject: Reply with quote

Flasher,
Прошу прощения, но я не понял Ваш комментарий...
Речь идёт о всё том же заместителе, но только для одного файла.
Указанную ссылку я находил, но там предлагается использовать notepad "%O.txt" , а это, к сожалению, не совсем то.
Неужели новую тему создавать?
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3  Next
Page 1 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group