<!--QuoteBegin-Lazy Crazy+Dec 9 2004, 23:08--><div class='quotetop'>QUOTE(Lazy Crazy @ Dec 9 2004, 23:08)</div><div class='quotemain'><!--QuoteEBegin-->2. Ну не такой уж я чайник...
Поочерёдно, конечно - правим один файл, закрываем, сохраняя, идём смотреть второй.<!--QuoteEnd--></div><!--QuoteEEnd-->
Тогда это очень и очень странно... Хотя, кажется, я понял, в чём суть. Некоторые программы сохраняют файлы очень хитрым способом: старый удаляют, а потом создают новый файл и пишут туда нужные данные. В таком случае понятно, почему не менялось место на диске: файл размером в три байта умещается целиком в MFT-таблице и лишнего места не занимает. Попробуй этот трёхметровый файл не урезать до трёх байт, а просто немного поменять, оставив размер примерно таким же, после чего сохранить. В этом случае произойдёт одно из двух: либо свободное место на диске уменьшится на три метра, либо второй файл поменяется вместе с первым.
<!--QuoteBegin-Lazy Crazy+Dec 9 2004, 23:08--><div class='quotetop'>QUOTE(Lazy Crazy @ Dec 9 2004, 23:08)</div><div class='quotemain'><!--QuoteEBegin-->3. Хорошо, поясни тогда, что обозначает столбец, озаглавленный "Значение 1" в таблице из справки. Ты пишешь "Когда ты делаешь символическую ссылку на папку, никаких жёстких ссылок при этом не возникает!". Но в столбце после _синей_ SubDir2 стоит _зелёный_ text.txt - т.е. в символической ссылке на папку SubDir2 находится жёсткая ссылка на файл text.txt ???
В любом случае, ни одной жёсткой ссылки мне создать не удалось, лишь символические на папки.<!--QuoteEnd--></div><!--QuoteEEnd-->
В упомянутой тобой таблице внизу есть список обозначений, и там чётко сказано, что каким цветом обозначено. Вот исходные данные:
|-file.dat
|-do.cmd
\-
MyDir\ |-
SubDir1\ |-
SubDir2\ | |-
DeepDir\ | \-smth.dat
\-text.txt
Если мы выделим всё, что видим в приведённом примере (т.е. два файла - file.dat и do.cmd, - и каталог MyDir\; всё остальное мы просто не видим, остальные файлы и подкаталоги находятся внутри каталога MyDir\), а в качестве глубины рекурсии укажем значение 1, то получим следующий результат:
|-<span style='color:green'>file.dat</span>
|-<span style='color:green'>do.cmd</span>
\-
MyDir\ |-<span style='color:blue'>SubDir1\</span>
|-<span style='color:blue'>SubDir2\</span>
\-<span style='color:green'>text.txt</span>
Цитата из справки:
"
Полужирным шрифтом выделены обычные каталоги, <span style='color:green'>
зелёным</span> цветом указаны жёсткие ссылки, <span style='color:blue'>
синим</span> - символические ссылки."
Таким образом получаем, что у нас создаются следующие данные:
1. Жёсткая ссылка на файл file.dat
2. Жёсткая ссылка на файл do.cmd
3.
КАТАЛОГ MyDir (не символическая ссылка, а каталог!!)
4. В этом каталоге (!) создана жёсткая ссылка на файл MyDir\text.txt
5. В этом же каталоге созданы символические ссылки на каталоги MyDir\SubDir1\ и MyDir\SubDir2\.
И всё. MyDir - самый обычный каталог, поэтому мы можем дополнительно создавать внутри него какие-то файлы, подкаталоги, а также жёсткие и символические ссылки. А вот SubDir1 - это уже символическая ссылка, поэтому внутри неё ничего не создаётся - она уже ссылается на весь
оригинальный подкаталог SubDir1, она уже дублирует его, так зачем же ещё создавать внутри какие-то жёсткие ссылки? То же самое относится, естественно, и к SubDir2.
Для более чёткого понимания приведу тут несколько упрощённый алгоритм работы программы (длинновато получается, но, надеюсь, прояснит ситуацию):
1. Во-первых, назовём корневым тот каталог, в котором мы выделили файлы и каталоги в Тотале (пусть на правой панели). Корневым каталогом назначения - каталог в противоположной (соответственно, левой) панели, где мы собираемся создавать ссылки.
2. Идём по списку выделенных файлов и каталогов. Если наткнулись на файл, то без раздумий создаём на него жёсткую ссылку в левой панели. Если на каталог - то см. следующий пункт.
3. Итак, у нас каталог. Смотрим на значение глубины рекурсии. Если 0, то не паримся, и просто создаём символическую ссылку в левой панели, и всё. А вот если у нас какое-то ненулевое значение, то см. пункт 4.
4. В левой панели создаём ПОДКАТАЛОГ с нужным именем (НЕ ССЫЛКУ, а именно подкаталог!). Теперь мысленно заходим на этой левой панели внутрь только что созданного подкаталога, а на правой панели - внутрь того каталога, который мы сейчас обрабатываем. Теперь мысленно выделяем всё, что есть на правой панели (все файлы и каталоги), и вызываем (тоже мысленно) саму себя - программу NTFS Links, для тех файлов и каталогов, которые мы только что мысленно выделили; а значение глубины рекурсии указываем на 1 меньшее, чем у нас сейчас (если оно -1, то так и оставляем). И всё, ждём, пока эта мысленная программа отработает по указанному алгоритму, а потом возвращаемся обратно в корневой каталог, и продолжаем обрабатывать следующий элемент списка.
В нашем примере выше (со значением 1) первые три пункта, надеюсь, понятны, а четвёртый разъясню чуть подробнее (на всякий случай; не все же знают, что такое рекурсия). Итак, прошли файлы file.dat и do.cmd, создали на них жёсткие ссылки, и дошли до каталога MyDir. Создаём в каталоге назначения (в левой панели) подкаталог с таким же именем - MyDir, и заходим внутрь него на обеих панелях. На левой панели пусто, на правой - два подкаталога SubDir1 и SubDir2, и файл text.txt. Мысленно выделяем их все, и запускаем (опять-таки, мысленно) программу NTFS Links, но значение глубины рекурсии теперь задаём на 1 меньше - у нас было 1, теперь стало 0. И смотрим, что происходит: программа пробегает эти три выделенных элемента - SubDir1, SubDir2, text.txt - первый из них каталог, значение глубины рекурсии 0, значит создаём в левой панели (а в этой панели открыт сейчас подкаталог MyDir!) символическую ссылку на SubDir1; для SubDir2 то же самое; text.txt - файл, для него создаём жёсткую ссылку. Всё, список закончился, эта наша "мысленная вторая программа NTFS Links" завершила свою работу. Теперь мы вспоминаем, что мы находимся в подкаталогах MyDir на обеих панелях. Поскольку вся работа внутри этого подкаталога завершена, мы можем возвращаться обратно в корневые каталоги и продолжать работу по обработке списка изначально выделенных файлов и каталогов. Но их больше нет, было всего три - file.dat, do.cmd, MyDir - и все три мы уже обработали. И в корневом каталоге назначения получили в точности ту структуру каталогов и ссылок, что я привёл выше. Всё, весь список обработан, программа завершает свою работу.
Надеюсь, стало хоть немного понятнее...
<!--QuoteBegin-Lazy Crazy+Dec 9 2004, 23:08--><div class='quotetop'>QUOTE(Lazy Crazy @ Dec 9 2004, 23:08)</div><div class='quotemain'><!--QuoteEBegin-->6. Я пользуюсь вторым вариантом, Tweak UI 2.10.0.0<!--QuoteEnd--></div><!--QuoteEEnd-->
Попробуй первый: <a href='http://download.microsoft.com/download/winme/Install/1.0/WinMe/EN-US/Tweakui.exe' target='_blank'>TweakUI 1.33</a>. Он подходит для Windows 95/98/ME/NT/2000, я пользуюсь им. Просто по привычке; не знал, что есть обновлённая версия, недавно наткнулся только. <!--emo&:)-->[img]style_emoticons/<#EMO_DIR#>/smile.gif[/img]<!--endemo--> Возможно, это глюк новой версии, а возможно и нет...
<!--QuoteBegin-Lazy Crazy+Dec 9 2004, 23:08--><div class='quotetop'>QUOTE(Lazy Crazy @ Dec 9 2004, 23:08)</div><div class='quotemain'><!--QuoteEBegin-->0. и 5. Если давать другие имена, то весь смысл теряется. Попробую аналогию: есть папки CD1, CD2, CD3... В каждой одинаковые подпапки - например, Архиваторы, Антивирусы, Редакторы и т.д. Но в разных папках в одних и тех же подпапках лежат разные файлы (например, в CD1\Архиваторы лежит WinRAR 3.40, а в CD2\Архиваторы - WinRAR 3.41). Мечталось, что зайдя в CDx (в котором собраны все ссылки) можно в одной папке Архиваторы найти там и WinRAR 3.40, и WinRAR 3.41. В моём случае и папок побольше, и структура их посложнее. Но это всё не важно, просто по ходу подумалось...<!--QuoteEnd--></div><!--QuoteEEnd-->
А-а, теперь понял, что тебе нужно... Тогда нужно иметь гарантию, что каталоги не пересекаются, т.е. что в CD1\Архиваторы и в CD2\Архиваторы нет ни одного повторяющегося файла или каталога. Более глубоко - пускай повторяются. Иначе говоря, ситуация
"CD1\Архиваторы\Winrar340\wrar.exe + CD2\Архиваторы\Winrar341\wrar.exe"
допустима, а ситуация, скажем,
"CD1\Архиваторы\Winrar340\wrar340.exe + CD2\Архиваторы\Winrar340\wrar341.exe"
недопустима. Если у тебя недопустимая ситуация, то единственный путь - это создать всё исключительно в виде жёстких ссылок (т.е. с параметром глубины рекурсии "-1"), но тогда их может быть многовато.
Ну а если всё нормально, то делаешь следующее:
1. Создаёшь "сборный" каталог (пусть, "CDx").
2. Заходишь на правой панели в CD1, на левой - в CDx. На правой всё выделяешь и вызываешь программу со значением глубины рекурсии 1.
3. На левой панели остаёшься в CDx, на правой заходишь в CD2. Повторяешь процедуру. И так для всех нужных каталогов. Разумеется, всё вышесказанное насчёт совпадения относится ко всем каталогам, которые ты объединяешь, а не только к CD1 и CD2.
Во, вроде, на всё ответил...