Пустой файл - это что?

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

kdn
Сообщения: 85
Зарегистрирован: Вт сен 19, 2006 06:40
Откуда: Москва, РФ

Сообщение kdn »

D1P писал(а):2Batya: Я понял (сам столкнулся с подобной задачей). Ему надо воссоздать структуру каталогов, учитывая содержащиеся в них файлы, по имеющемуся lst-файлу. "Восстановленные" файлы, само собой, должны быть пустые. "Распаковка" lst-файла пока только позволяет восстановить структуру каталогов, "файлы" игнорируются.
Практически совершенно верно Вы меня поняли.При распаковке lst-файла если установлено, что каталоги и файлы (2 галки) - он просто распакует как и любой архиватор.А меня интересует, как было верно замечено, чтобы он распаковывал эти упакованные файлы - именно в нулевом размере!
Аватара пользователя
Моторокер
Сообщения: 1517
Зарегистрирован: Пт май 06, 2005 08:22
Откуда: г. Пермь (читается Перьмь)
Контактная информация:

Сообщение Моторокер »

В паскале код на десяток строчек, дольше набирать.
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

kdn
Тогда тебе поможет следующий скрипт:

Код: Выделить всё

'=====================================================================
' Создание структуры каталогов и файлов нулевого размера в них

' В параметрах вызова из TC должно быть прописано:
' %L "%T"
'=====================================================================

Option Explicit
Dim FSO, WSH, OTF, Target, NewTar
Dim Selected
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell") 
Set OTF = FSO.OpenTextFile(WScript.Arguments(0), 1)
Target  = WScript.Arguments(1)

Do While Not OTF.AtEndOfStream
  Selected = OTF.ReadLine
  If FSO.FileExists(Selected) Then
    WSH.Run "fsutil file createnew """ & Target & FSO.GetFile(Selected).Name & """ 0", 7, True
  End If
  If FSO.FolderExists(Selected) Then
    NewTar = Target & FSO.GetFolder(Selected).Name
    If Not FSO.FolderExists(NewTar) Then
      FSO.CreateFolder(NewTar)
    End If
    FolderProcess FSO.GetFolder(Selected), NewTar & "\"
  End If
Loop
'MsgBox("Выполнено!")
Set OTF = Nothing
Set FSO = Nothing
Set WSH = Nothing
WScript.Quit()

Function FolderProcess(Fold, Tar)
  Dim sf, f, NewF
  For Each sf in Fold.SubFolders
    NewF = Tar & sf.Name
    If Not FSO.FolderExists(NewF) Then
      FSO.CreateFolder(NewF)
    End If
    FolderProcess sf, NewF & "\"
  Next
  For Each f in Fold.Files
    WSH.Run "fsutil file createnew """ & Tar & FSO.GetFile(f).Name & """ 0", 7, True
  Next
End Function
Сохрани код в файл с расширением vbs. Повесь файл на кнопку. В параметрах кнопки укажи:
%L "%T"

Соответственно, выделяешь файлы и папки и нажимаешь кнопку. На противоположной панели будет создана структура каталогов с файлами нулевого размера.
А затем ты можешь с ними делать что угодно. Например, запаковать в любой архив.

P.S. Если возникнут вопросы, я наверное теперь не скоро смогу помочь - с понедельника я на новой работе, и не знаю, как там с интернетом, а дома я даже комп почти не включаю.
Всем удачи!
kdn
Сообщения: 85
Зарегистрирован: Вт сен 19, 2006 06:40
Откуда: Москва, РФ

Сообщение kdn »

Batya
Очень Вам признателен.Это действительно очень нужная и полезная вещь.Спасибо! :)
kdn
Сообщения: 85
Зарегистрирован: Вт сен 19, 2006 06:40
Откуда: Москва, РФ

Сообщение kdn »

Хотел бы еще спросить: а вообще говоря эти пустые файлы сколько "весят".В свойствах файла конечно 0 байт, но а на самом деле сколько?
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

kdn писал(а):а вообще говоря эти пустые файлы сколько "весят".В свойствах файла конечно 0 байт, но а на самом деле сколько?
В NTFS - на самом деле ноль. Маленькие файлы (до нескольких сотен байт) там целиком хранятся в таблице MFT и дополнительного места не занимают. Насчёт FAT уже точно не помню. Либо тоже ноль, либо один кластер.
Почему же, ё-моё, ты нигде не пишешь "ё"?
kdn
Сообщения: 85
Зарегистрирован: Вт сен 19, 2006 06:40
Откуда: Москва, РФ

Сообщение kdn »

CaptainFlint писал(а):Маленькие файлы (до нескольких сотен байт) там целиком хранятся в таблице MFT и дополнительного места не занимают. Насчёт FAT уже точно не помню. Либо тоже ноль, либо один кластер.
А вот эта таблица MFT где непосредственно находится: в ОС в какой-то папке или она не видна в ОС, а только присутствует на диске? Ее можно просмотреть (применимо к редактированию нулевых файлов, если потребуется).
Просто дело в том, что я запустил первый раз через кнопку в TC vbs тот, что Batya привел, а ОС сослалась на какое-то длинное значение индекса в строке 14 (вроде было так написано).А может это просто не та панель была включена.Второй раз - нормально все создалось, только конечно несколько медленно: например папку размером 469 Мб он создавал минут 7 и еще наблюдалась вообще потрясная картина: В ОС почему-то все вкладки на панели задач начали "перемещаться влево" еле-еле, а потом назад, прямо как каретка в печатной машинке.
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

kdn писал(а):А вот эта таблица MFT где непосредственно находится: в ОС в какой-то папке или она не видна в ОС, а только присутствует на диске?
Вообще говоря, из ОС она не видна, но особым хитрым способом до неё всё же доступиться можно (например, через плагин NTFS). Однако делать это крайне не рекомендуется, ибо очень легко таким образом навернуть файловую систему.
kdn писал(а):а ОС сослалась на какое-то длинное значение индекса в строке 14 (вроде было так написано).
Мне кажется, что ОС, как и файловая система, тут ни при чём, просто скрипт, по всей видимости, был запущен без параметров (учитывая, что 14-я строчка - это "Target = WScript.Arguments(1)"). А вообще, лучше подождать Батю... :)
Почему же, ё-моё, ты нигде не пишешь "ё"?
kdn
Сообщения: 85
Зарегистрирован: Вт сен 19, 2006 06:40
Откуда: Москва, РФ

Сообщение kdn »

Не поможете с ответом на вопрос:
Вот эти создаваемые "пустые" файлы они занимают какой-то объем на диске? Я предполагаю использовать этот скрипт так: как только я начинаю новый жесткий диск, то я переношу на него (копирую-создаю) все данные с предыдущего законченного жесткого диска.Каждому файлу на предыдущем диске я присваивал уникальный номер, поэтому после копирования структуры "пустых файлов" на новый хард, я могу сразу определить, на каком диске содержится нужная инфа.
Когда объем на новом харде закончится, я начну новый и пересу на него структуру в виде "пустых файлов" с этого диска №2, который закончился итд.
Вопрос в том, вот эти пустые файлы хоть и не занимают объема, но как мне кажется ведь сведения фиксируются в файловой таблице на диске.Не сможет ли такое повредить файловую таблицу харда, так как с каждым новым начинаемым диском пустых файлов будет все больше и больше, коль я их переношу с предыдущих хардов?

Файловая система сейчас у меня - NTFS
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

Вопрос в том, вот эти пустые файлы хоть и не занимают объема, но как мне кажется ведь сведения фиксируются в файловой таблице на диске.Не сможет ли такое повредить файловую таблицу харда, так как с каждым новым начинаемым диском пустых файлов будет все больше и больше, коль я их переношу с предыдущих хардов?
Нет. Объём в MFT записи конечно займут (если он приличный, то это даже можно будет увидеть в свойствах диска), но ни о какой порче речи и идти не может.
cojoc
Сообщения: 144
Зарегистрирован: Пт сен 04, 2009 16:53

Сообщение cojoc »

Что-то эта кнопка у меня больше не работает (раньше кажется работала)

Код: Выделить всё

TOTALCMD#BAR#DATA 
 cmd.exe /c @echo off & 
 for /f "delims=" %%i in (%F) do fsutil file createnew "%T%%i" 0 > nul 
 shell32.dll,84 



 -1
Файлы остаются как были.
Скрипт тоже только создаёт структуру каталогов, а файлов нет.
TC 8b9
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

cojoc
См. тут.
cojoc
Сообщения: 144
Зарегистрирован: Пт сен 04, 2009 16:53

Сообщение cojoc »

Flasher, спасибо :)
Заменил строки - заработало!
Отдельное спасибо за ответ в столь поздний час :)
kdn
Сообщения: 85
Зарегистрирован: Вт сен 19, 2006 06:40
Откуда: Москва, РФ

Сообщение kdn »

Хотел бы еще кое-что уточнить по скрипту создания структуры пустых файлов и папок:
Можно ли сделать так, чтобы создавалась не только структура папок и файлов, но и в создаваемых папках и файлах скрипт прописывал имеющиеся атрибуты папок и файлов.
Поясняю, для чего это: Представьте вы скачали базу данных, содержащую уйму gif-ов или отдельных мелких файликов СУБД Cronos - помещать такое в архив rar - займет массу времени да и смысла почти нет, так как, представьте, нужно будет это все распаковывать...а все эти винрары делают это черт знает сколько времени, вот и приходится на них на всех ставить скрытые атрибуты, а данный скрипт не копируют атрубуты. Синхронизация это делает, а скрипт этот нет
Вопрос: Как заставить этот скрипт прописывать атрибуты в создаваемой структуре пустых каталогов и файлов?
Ответить