Страница 6 из 11
Добавлено: Пт окт 01, 2010 01:15
Flasher
Tol!k
mklink.exe положил в одну папку с
createlink.cmd,
masks.txt в корень(место поиска) - результата в панели-получателе нет.
Serge Yolkin писал(а):На какую сумму я могу расчитывать за такой батник?
На
такую

. Хотя, Бог его знает, может
Samwatas расщедрится

.
Добавлено: Пт окт 01, 2010 06:59
Tol!k
Попробуй прописать полный путь к mklink.exe или положить его в папку, прописанную в %path%
mklink.exe этот:
MKLINK 1.01 - (c) 2006 Christoph H. Hochstдtter and CNET Networks.
Для
Hard link maker by Killer{R}
попробуй строку
Добавлено: Пт окт 01, 2010 11:24
Flasher
Tol!k писал(а):Попробуй прописать полный путь к mklink.exe или положить его в папку, прописанную в %path%
Ага, так работает с переменной окр., %path% не подойдёт - нужна портабельность.
Строка c mlink от Killer-a не срабатывает.
Ещё бы хотелось сохранять структуру при этом.
Для ln.exe и junction.exe не получается то же самое сделать. Для
ln синтаксис отличается только параметром
-j вместо
/h у mklink. У
junction так:
junction <junction dir> <junction target dir>
либо
junction -d <junction dir>
Добавлено: Пт окт 01, 2010 11:46
MVV
А почему бы не использовать утилиту от Microsoft, которая поставляется с Windows? mklink.exe есть и для XP, и для Vista/7, но в последних она включена в стандартную поставку, а в XP - нет.
Кстати, сразу проверьте программы на поддержку Юникода.
А вообще, написать такую утилиту, которая будет вызывать API-функцию, можно максимум за полчаса.
Добавлено: Пт окт 01, 2010 12:02
Flasher
MVV писал(а):А почему бы не использовать утилиту от Microsoft, которая поставляется с Windows? mklink.exe есть и для XP, и для Vista/7, но в последних она включена в стандартную поставку, а в XP - нет.
А потому что ты невнимательный.
1 2 
Добавлено: Пт окт 01, 2010 12:19
MVV
Flasher писал(а):А потому что ты невнимательный.
1 2 
Я не понял, в чем именно я невнимателен. Ни один пост не указывает явно, что именно я написал не так. А написать подробнее ты не потрудился.
Если
Tol!k хочет именно
символические ссылки, он должен иметь ОС Vista или 7. Но в таком случае его система уже должна располагать утилитой
mklink. Если же у него XP, то о
символических ссылках можно только мечтать, так как система XP их просто не поддерживает.
Добавлено: Пт окт 01, 2010 12:23
Avada
MVV
Позволю себе напомнить, что термин "символическая ссылка" в разных операционных системах по милости MS означает разные вещи.
Добавлено: Пт окт 01, 2010 12:30
Flasher
MVV писал(а):А написать подробнее ты не потрудился.
Тружусь: ты спросил "а почему бы не использовать", я даю ссылки, где mklink от Microsoft и описывается, что в первом, что во втором случае. По-моему это понятно из постов и ссылки, ведущей на описание синтаксиса данной утилиты. Ничего не забыл?
MVV писал(а):Если Tol!k хочет именно символические ссылки, он должен иметь ОС Vista или 7. Но в таком случае его система уже должна располагать утилитой mklink. Если же у него XP, то о символических ссылках можно только мечтать, так как система XP их просто не поддерживает.
То, чего хочет
Tol'k(а правильней сказать "что ему нравится"), - это отдельный вопрос (т.е. его личное дело), и он выпадает из
обрисованной мной ситуации.
Добавлено: Пт окт 01, 2010 12:57
MVV
Flasher писал(а):Тружусь: ты спросил "а почему бы не использовать", я даю ссылки, где mklink от Microsoft и описывается, что в первом, что во втором случае. По-моему это понятно из постов и ссылки, ведущей на описание синтаксиса данной утилиты. Ничего не забыл?
Спасибо, я уловил мысль. Просто в последнем посте
Tol!kа упоминались строки
(c) 2006 Christoph H. Hochstдtter and CNET Networks и
Hard link maker by Killer{R}, которые ну никак не могут иметь отношения к утилите от Microsoft.
Avada писал(а):MVV
Позволю себе напомнить, что термин "символическая ссылка" в разных операционных системах по милости MS означает разные вещи.
Хотелось бы взглянуть на официальный источник, использующий термин "символическая ссылка" ("symbolic link") в отношении точек соединения ("junction")... Ага, нашел у Руссиновича в
описании Junction. А
тут нашел упоминание термина "symbolic link" непосредственно от Microsoft, и в этом тексте у термина еще одно значение - то, которое сейчас принадлежит термину "mount point" ("точка монтирования").
Но замечу, что ребята в рамках данной темы обсуждали использование ссылок применительно к файлам, а точки соединения, некогда неправильно названные символическими ссылками, возможны только для каталогов - то есть, они использовали правильный термин.
Добавлено: Пт окт 01, 2010 13:45
Flasher
MVV писал(а):Просто в последнем посте Tol!kа упоминались строки (c) 2006 Christoph H. Hochstдtter and CNET Networks и Hard link maker by Killer{R}, которые ну никак не могут иметь отношения к утилите от Microsoft.
Хм.. Синтаксис тот же.
Сравни со своей, пожалуйста, а то у меня сейчас негде.
Добавлено: хотя нет, это же Open Source, к Microsoft точно никакого отношения не имеет, хотя по функционалу ничуть не уступает аналогу.
Я забирал на Хабре сперва, где описание было утилиты от Microsoft, а оказалось автор не упомянул, что по ссылке утилита-двойник от немецкого прогера.
Но тут у меня другая мысль: дата создания утилиты - 2006 г., Висту начали продавать с февраля 2007-го, ссылка с оффсайта на утилиту мёртвая. Допустим ли вариант с перекупкой копирайта мелкомягкими?
Добавлено: Пт окт 01, 2010 17:35
Tol!k
MVV писал(а):А почему бы не использовать утилиту от Microsoft...
Я и хотел её использовать, да никто её не даёт.
Flasher писал(а):Для ln.exe и junction.exe не получается то же самое сделать.
Для директорий нужны другие ключи
Код: Выделить всё
MKLINK 1.01 - (c) 2006 Christoph H. Hochstдtter and CNET Networks.
...
/D Creates a symbolic link for a directory.
...
/J Creates a junction for a directory.
поэтому я отфильтровал только файлы.
Код: Выделить всё
'for /f "usebackq delims=" %%a in ^("%~1"^) do @dir /ad/b/s "%~2\%%a"'
— это будут только директории.
Добавлено: Пт окт 01, 2010 18:39
Tol!k
Flasher писал(а):Ещё бы хотелось сохранять структуру при этом.
Для файлов:
Код: Выделить всё
@echo off &chcp 1251 >nul
rem Создать в целевой папке ссылки с сохранением путей для файлов подходящих под маски
rem Параметры: маски.txt D:\где_искать\ D:\куда_складывать\
rem Пример параметров для TC: D:\маски_поиска.txt "%P" "%T"
setlocal enableextensions
set "pth=%~p2" &set "trg=%~3"
for /f "delims=" %%f in (
'for /f "usebackq delims=" %%a in ^("%~1"^) do @dir /a-d/b/s "%~2\%%a"'
) do call :p "%%f"
goto :eof
:p
set "p=%~p1"
call set "p=%%p:%pth%=%%"
if not exist "%trg%\%p%" md "%trg%\%p%"
mklink /h "%trg%\%p%%~nx1" %1
goto :eof
Добавлено: Сб окт 02, 2010 00:58
Samwatas
Serge Yolkin писал(а):На какую сумму я могу расчитывать за такой батник?
Зачем же заниматься мазохизмом с батниками? Если у меня появится похожая задача, я просто возьму более совершенный инструмент (в качестве такового у меня пока выступает АвтоИт), с помощью которого можно легко и не напрягаясь сделать всё, что мне нужно будет. Так что от меня не стоит рассчитывать даже на $1 (не говоря уж о 10).

Добавлено: Сб окт 02, 2010 01:08
Rodny
Tol!k писал(а):Я и хотел её использовать, да никто её не даёт.
Однако, команда есть, а файла
mklink.exe нигде нет

Win7 x32
Код: Выделить всё
C:\Windows\System32>mklink
Создание символической ссылки.
MKLINK [[/D] | [/H] | [/J]] Ссылка Назначение
/D Создание символической ссылки на каталог.
По умолчанию создается символическая ссылка на файл.
/H Создание жесткой связи вместо символической ссылки.
/J Создание соединения для каталога.
Ссылка Имя новой символической ссылки.
Назначение Путь (относительный или абсолютный), на который ссылается новая ссылка.
Может она куда в cmd зашита?
Добавлено: Сб окт 02, 2010 01:21
MVV
Да, в Windows 7 mklink - это команда командного интерпретатора (если просмотреть содержимое CMD.exe в Юникоде, эта строка будет найдена среди кучи строк других команд). А даже если бы был экзешник, под Windows XP он бы не запустился - импортирует функции, отсутствующие в ядре XP (как минимум, функцию CreateSymbolicLinkW из библиотеки kernel32.dll). Мне почему-то казалось, что есть ее аналог для Windows XP (создающий точки соединения и жесткие ссылки).
Под XP в официальном дополнительном наборе инструментов есть утилита linkd. Также можно использовать утилиту junction от Марка Руссиновича. Но они умеют создавать только точки соединения для папок, жесткие ссылки на файлы ими не создать.