Создание информационных файлов
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2, 3  Next  :| |:
Total Commander -> Автоматизация Total Commander

#1: Создание информационных файлов Author: KatMuse PostPosted: Fri Dec 19, 2014 21:56
    —
Доброго времени суток, уважаемые форумчане!
Подскажите, пожалуйста, как реализовать следующую задумку:
есть файлы, подготовленные для записи на диск.
Диск 10 <-- папка
File1.iso <-- файл
File2.rar <-- файл
Как сделать такую папку:
Моя папка
File1.iso.txt --содержание--> см. Диск 10
File2.rar.txt --содержание--> см. Диск 10
К сожалению, мне не хватает навыков написать такой скрипт, а беспорядок на диске уже надоел Sad
Большая просьба помочь. Спасибо!

 !  Avada:
Прежний заголовок темы "Заместитель для файла" заменён на более осмысленный.

#2:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Dec 20, 2014 00:35
    —
Просто уточняю задачу.

Типа, надо для каждого файла File.Ext из папки DiskName создать файл File.Ext.txt с текстом
Quote:
--содержание--> см. DiskName
?

#3:  Author: KatMuse PostPosted: Sat Dec 20, 2014 00:52
    —
MVV
спасибо за ответ!
Да, всё так и есть - это такой "заместитель для файла", который указывает где хранится файл, то есть на каком диске.
Если бы можно было добавить ещё, например, размер файла, расширение и время создания, то есть сделать заместитель более информативным, то было бы вообще идеально! Но, вообще говоря, хотелось бы иметь, хотя бы ссылку на место хранения.

#4:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Dec 20, 2014 01:21
    —
Можно таким батником:
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

(имя папки в скобках, затем информация о файле)

#5:  Author: KatMuse PostPosted: Sat Dec 20, 2014 01:29
    —
Супер! Спасибо!
MVV
Скажите, а можно, чтобы были ещё и подпапки задействованы? То есть, для всех файлов во вложенных папках?
Ещё раз большое спасибо! Кажется, наконец, будет порядок Smile

#6:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Dec 20, 2014 01:30
    —
С подпапками немного сложнее будет. Надо было сразу сказать об этом.
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 и содержимое каждого диска упаковываю в файл-список. Потом в одну папку складываю файлы-списки от всех дисков, и можно в них входить как в каталоги и видеть файлы, их размеры, атрибуты. И поиском по этим архивам легко найти нужный файл.

#7:  Author: KatMuse PostPosted: Sat Dec 20, 2014 02:38
    —
Спасибо за ответ!
Quote:
С подпапками немного сложнее будет. Надо было сразу сказать об этом.

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

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

Спасибо за плагин! Он супер!

#8:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Dec 20, 2014 22:44
    —
Это легко. Но дата указывается модификации, а не создания. По большому счёту, именно она имеет ценность. Последнюю часть файла надо модифицировать:
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, поэтому и русский текст тоже надо в ней писать.

#9:  Author: KatMuse PostPosted: Sat Dec 20, 2014 23:31
    —
MVV
спасибо Вам огромное!!!!
Это просто предел мечтаний!!!
Если можно, то могли бы Вы прокомментировать, что здесь что, очень хочется разобраться, но не хватает навыков... do_file это ведь процедура правильно?

#10:  Author: MVVLocation: Ростов-Дон PostPosted: Sun Dec 21, 2014 01:39
    —
Вообще, :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]

#11:  Author: KatMuse PostPosted: Tue Dec 23, 2014 13:31
    —
MVV
спасибо за объяснение!
Благодаря Вам искать файлы на компьютере стало на много легче!
Спасибо, что подробно объяснили!
Была бы возможность, наставил бы Вам море плюсиков Smile

#12:  Author: MVVLocation: Ростов-Дон PostPosted: Tue Dec 23, 2014 14:51
    —
Рад был помочь.

Но советую всё-таки присмотреться к плагину DiskDirExtended, о котором я выше писал. Wink Он позволяет не только видеть в своих архивах список и атрибуты файлов на диске, но может также представлять архивы в виде папок, т.е. в таком каталоге будут видны файлы внутри RAR, ISO и других файлов на диске.

#13:  Author: KatMuse PostPosted: Wed Dec 24, 2014 20:30
    —
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""
Подскажите, пожалуйста, что нужно исправить?

#14:  Author: FlasherLocation: Москва PostPosted: Wed Dec 24, 2014 21:01
    —
KatMuse
У нас тут не принято в одной теме запрашивать функционал, отходящий от сути сабжа, который, кстати, легко находится самостоятельно. Только один из примеров. Читаем низ памятки.

#15:  Author: KatMuse PostPosted: Wed Dec 24, 2014 21:34
    —
Flasher,
Прошу прощения, но я не понял Ваш комментарий...
Речь идёт о всё том же заместителе, но только для одного файла.
Указанную ссылку я находил, но там предлагается использовать notepad "%O.txt" , а это, к сожалению, не совсем то.
Неужели новую тему создавать?



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2, 3  Next  :| |:
Page 1 of 3

Powered by phpBB © 2001, 2005 phpBB Group