Страница 2 из 2
Добавлено: Чт окт 05, 2006 20:34
kdn
D1P писал(а):2Batya: Я понял (сам столкнулся с подобной задачей). Ему надо воссоздать структуру каталогов, учитывая содержащиеся в них файлы, по имеющемуся lst-файлу. "Восстановленные" файлы, само собой, должны быть пустые. "Распаковка" lst-файла пока только позволяет восстановить структуру каталогов, "файлы" игнорируются.
Практически совершенно верно Вы меня поняли.При распаковке lst-файла если установлено, что каталоги и файлы (2 галки) - он просто распакует как и любой архиватор.А меня интересует, как было верно замечено, чтобы он распаковывал эти упакованные файлы - именно в
нулевом размере!
Добавлено: Пт окт 06, 2006 07:10
Моторокер
В паскале код на десяток строчек, дольше набирать.
Добавлено: Пт окт 06, 2006 19:59
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. Если возникнут вопросы, я наверное теперь не скоро смогу помочь - с понедельника я на новой работе, и не знаю, как там с интернетом, а дома я даже комп почти не включаю.
Всем удачи!
Добавлено: Пт окт 06, 2006 21:16
kdn
Batya
Очень Вам признателен.Это действительно очень нужная и полезная вещь.Спасибо!

Добавлено: Пн окт 09, 2006 17:26
kdn
Хотел бы еще спросить: а вообще говоря эти пустые файлы сколько "весят".В свойствах файла конечно 0 байт, но а на самом деле сколько?
Добавлено: Пн окт 09, 2006 17:28
CaptainFlint
kdn писал(а):а вообще говоря эти пустые файлы сколько "весят".В свойствах файла конечно 0 байт, но а на самом деле сколько?
В NTFS - на самом деле ноль. Маленькие файлы (до нескольких сотен байт) там целиком хранятся в таблице MFT и дополнительного места не занимают. Насчёт FAT уже точно не помню. Либо тоже ноль, либо один кластер.
Добавлено: Пн окт 09, 2006 17:39
kdn
CaptainFlint писал(а):Маленькие файлы (до нескольких сотен байт) там целиком хранятся в таблице MFT и дополнительного места не занимают. Насчёт FAT уже точно не помню. Либо тоже ноль, либо один кластер.
А вот эта таблица MFT где непосредственно находится: в ОС в какой-то папке или она не видна в ОС, а только присутствует на диске? Ее можно просмотреть (применимо к редактированию нулевых файлов, если потребуется).
Просто дело в том, что я запустил первый раз через кнопку в TC vbs тот, что
Batya привел, а ОС сослалась на какое-то длинное значение индекса в строке 14 (вроде было так написано).А может это просто не та панель была включена.Второй раз - нормально все создалось, только конечно несколько медленно: например папку размером 469 Мб он создавал минут 7 и еще наблюдалась вообще потрясная картина: В ОС почему-то все вкладки на панели задач начали "перемещаться влево" еле-еле, а потом назад, прямо как каретка в печатной машинке.
Добавлено: Пн окт 09, 2006 17:57
CaptainFlint
kdn писал(а):А вот эта таблица MFT где непосредственно находится: в ОС в какой-то папке или она не видна в ОС, а только присутствует на диске?
Вообще говоря, из ОС она не видна, но особым хитрым способом до неё всё же доступиться можно (например, через плагин NTFS). Однако делать это крайне не рекомендуется, ибо очень легко таким образом навернуть файловую систему.
kdn писал(а):а ОС сослалась на какое-то длинное значение индекса в строке 14 (вроде было так написано).
Мне кажется, что ОС, как и файловая система, тут ни при чём, просто скрипт, по всей видимости, был запущен без параметров (учитывая, что 14-я строчка - это "Target = WScript.Arguments(1)"). А вообще, лучше подождать Батю...

Добавлено: Пт июн 29, 2007 10:04
kdn
Не поможете с ответом на вопрос:
Вот эти создаваемые "пустые" файлы они занимают какой-то объем на диске? Я предполагаю использовать этот скрипт так: как только я начинаю новый жесткий диск, то я переношу на него (копирую-создаю) все данные с предыдущего законченного жесткого диска.Каждому файлу на предыдущем диске я присваивал уникальный номер, поэтому после копирования структуры "пустых файлов" на новый хард, я могу сразу определить, на каком диске содержится нужная инфа.
Когда объем на новом харде закончится, я начну новый и пересу на него структуру в виде "пустых файлов" с этого диска №2, который закончился итд.
Вопрос в том, вот эти пустые файлы хоть и не занимают объема, но как мне кажется ведь сведения фиксируются в файловой таблице на диске.Не сможет ли такое повредить файловую таблицу харда, так как с каждым новым начинаемым диском пустых файлов будет все больше и больше, коль я их переношу с предыдущих хардов?
Файловая система сейчас у меня - NTFS
Добавлено: Пт июн 29, 2007 12:03
D1P
Вопрос в том, вот эти пустые файлы хоть и не занимают объема, но как мне кажется ведь сведения фиксируются в файловой таблице на диске.Не сможет ли такое повредить файловую таблицу харда, так как с каждым новым начинаемым диском пустых файлов будет все больше и больше, коль я их переношу с предыдущих хардов?
Нет. Объём в MFT записи конечно займут (если он приличный, то это даже можно будет увидеть в свойствах диска), но ни о какой порче речи и идти не может.
Добавлено: Пн ноя 14, 2011 02:48
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
Добавлено: Пн ноя 14, 2011 02:52
Flasher
Добавлено: Пн ноя 14, 2011 03:05
cojoc
Flasher, спасибо

Заменил строки - заработало!
Отдельное спасибо за ответ в столь поздний час

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