Symlinker от Хачатура [Решено]
Цитата: Удаленный пользователь от 16.01.2021, 22:41Добрый день.
Начал я тут разбираться с новым твиком (который позволяет выбирать куда делать симлинк. Код там следующий [spoiler]
cmd /c echo @echo off>>%%windir%%\Symlinker.cmd & echo set IS_MINIMIZED=1>>%%windir%%\Symlinker.cmd & echo set "myCommand="(new-object -COM 'Shell.Application')^^.BrowseForFolder(0,'',0).self.path"">> %%windir%%\Symlinker.cmd & echo for /f "usebackq delims=" %%%%I in (`powershell %%myCommand%%`) do set "dir=%%%%I">>%%windir%%\Symlinker.cmd & echo setlocal enabledelayedexpansion>>%%windir%%\Symlinker.cmd & echo mklink "!dir!\%%~nx1" %%1 ^& del /f /q %%windir%%\Symlinker.cmd>>%%windir%%\Symlinker.cmd & start /min Symlinker.cmd "%1" ^& exit[/spoiler]
Быстро сообразив, что я вообще не фига не понимаю как оно работает, решил зайти с другой стороны. Вообще-то мне стало интересно смогу ли я заставить его генерироватьЖесткиессылки. В коде я нашёл знакомую мне командуmklinkи решил к ней просто дописать параметр/h. Моему удивлению не было предела, когда получилось. Но я рано обрадовался. Всё это работает только на диске С:\ , а при открытии меню на других дисках нужная строчка пропадает 🙁
К сожалению, всю логику команды я не понимаю, но предположил что это как-то связано с тем, что изначальная директория задана как%windir%, а жесткие ссылки работают только внутри одного диска. Следовательно винда как-то заранее понимает, что я пытаюсь запустить команду с другого диска и даже показывать мне её не хочет, не говоря уже про исполнение.В общем есть у кого идеи как сделать чтобы работало в каждом томе или тут ничего не попишешь и нужно тупо переписывать команду для каждого диска в отдельности?
Добрый день.
Начал я тут разбираться с новым твиком (который позволяет выбирать куда делать симлинк. Код там следующий
cmd /c echo @echo off>>%%windir%%\Symlinker.cmd & echo set IS_MINIMIZED=1>>%%windir%%\Symlinker.cmd & echo set "myCommand="(new-object -COM 'Shell.Application')^^.BrowseForFolder(0,'',0).self.path"">> %%windir%%\Symlinker.cmd & echo for /f "usebackq delims=" %%%%I in (`powershell %%myCommand%%`) do set "dir=%%%%I">>%%windir%%\Symlinker.cmd & echo setlocal enabledelayedexpansion>>%%windir%%\Symlinker.cmd & echo mklink "!dir!\%%~nx1" %%1 ^& del /f /q %%windir%%\Symlinker.cmd>>%%windir%%\Symlinker.cmd & start /min Symlinker.cmd "%1" ^& exit
Быстро сообразив, что я вообще не фига не понимаю как оно работает, решил зайти с другой стороны. Вообще-то мне стало интересно смогу ли я заставить его генерировать
СкопированоЖесткие ссылки. В коде я нашёл знакомую мне команду Скопированоmklink и решил к ней просто дописать параметр Скопировано/h. Моему удивлению не было предела, когда получилось. Но я рано обрадовался. Всё это работает только на диске С:\ , а при открытии меню на других дисках нужная строчка пропадает 🙁 К сожалению, всю логику команды я не понимаю, но предположил что это как-то связано с тем, что изначальная директория задана как
Скопировано%windir% , а жесткие ссылки работают только внутри одного диска. Следовательно винда как-то заранее понимает, что я пытаюсь запустить команду с другого диска и даже показывать мне её не хочет, не говоря уже про исполнение.
В общем есть у кого идеи как сделать чтобы работало в каждом томе или тут ничего не попишешь и нужно тупо переписывать команду для каждого диска в отдельности?
Цитата: admin от 16.01.2021, 22:49Привет 🖐
В видео про символические ссылки закреплён коммент, где написано, как устроены жёсткие ссылки и чем они ограничены.
Привет 🖐
В видео про символические ссылки закреплён коммент, где написано, как устроены жёсткие ссылки и чем они ограничены.
Цитата: Удаленный пользователь от 16.01.2021, 23:04Цитата: XpucT от 16.01.2021, 22:49Привет
В видео про символически ссылки закреплён коммент, где написано, как устроены жёсткие ссылки и чем они ограничены.Привет, Хачатур 🖐
Да, я знаю про ограничения жестких ссылок. Однажды потратил время, чтобы разобраться как оно работает всё. Меня интересовало можно ли с учётом этих ограничений создать подобную комманду. Понятное дело, что действовать она будет только внутри одного тома и только для файлов, но хотя бы так чтобы внутри этого тома можно было выбирать место. Похоже что из-за того что cmd файл создаётся на диске С, команда работает только с диском С. Думаю, что если переписать её для другого диска, то там тоже будет работать, но это не выход. Вот если бы как то сделать в виде одной...Например если бы оно в начале определяло в каком томе запущено, а только после этого исполнялось...
Цитата: XpucT от 16.01.2021, 22:49Привет
В видео про символически ссылки закреплён коммент, где написано, как устроены жёсткие ссылки и чем они ограничены.
Привет, Хачатур 🖐
Да, я знаю про ограничения жестких ссылок. Однажды потратил время, чтобы разобраться как оно работает всё. Меня интересовало можно ли с учётом этих ограничений создать подобную комманду. Понятное дело, что действовать она будет только внутри одного тома и только для файлов, но хотя бы так чтобы внутри этого тома можно было выбирать место. Похоже что из-за того что cmd файл создаётся на диске С, команда работает только с диском С. Думаю, что если переписать её для другого диска, то там тоже будет работать, но это не выход. Вот если бы как то сделать в виде одной...Например если бы оно в начале определяло в каком томе запущено, а только после этого исполнялось...
Цитата: Удаленный пользователь от 16.01.2021, 23:13Привет 🖐
А не проще закинуть папку с оригиналом, и папку, где нужно сделать жёсткую ссылку (предварительно закинуть туда файл), в Win 10 Tweaker? Он Тебе сделает жёсткие ссылки прекрасно. Файл один будет на диске, а ссылки две.
И всё, никакой головной боли.
Привет 🖐
А не проще закинуть папку с оригиналом, и папку, где нужно сделать жёсткую ссылку (предварительно закинуть туда файл), в Win 10 Tweaker? Он Тебе сделает жёсткие ссылки прекрасно. Файл один будет на диске, а ссылки две.
И всё, никакой головной боли.
Цитата: admin от 16.01.2021, 23:28Не вижу проблем.
cmd /c echo @echo off>>%%windir%%\Hardlinker.cmd & echo set IS_MINIMIZED=1>>%%windir%%\Hardlinker.cmd & echo set "myCommand="(new-object -COM 'Shell.Application')^^.BrowseForFolder(0,'',0).self.path"">> %%windir%%\Hardlinker.cmd & echo for /f "usebackq delims=" %%%%I in (`powershell %%myCommand%%`) do set "dir=%%%%I">>%%windir%%\Hardlinker.cmd & echo setlocal enabledelayedexpansion>>%%windir%%\Hardlinker.cmd & echo mklink /h "!dir!\%%~nx1" %%1 ^& del /f /q %%windir%%\Hardlinker.cmd>>%%windir%%\Hardlinker.cmd & start /min Hardlinker.cmd "%1" ^& exit
Не вижу проблем.
cmd /c echo @echo off>>%%windir%%\Hardlinker.cmd & echo set IS_MINIMIZED=1>>%%windir%%\Hardlinker.cmd & echo set "myCommand="(new-object -COM 'Shell.Application')^^.BrowseForFolder(0,'',0).self.path"">> %%windir%%\Hardlinker.cmd & echo for /f "usebackq delims=" %%%%I in (`powershell %%myCommand%%`) do set "dir=%%%%I">>%%windir%%\Hardlinker.cmd & echo setlocal enabledelayedexpansion>>%%windir%%\Hardlinker.cmd & echo mklink /h "!dir!\%%~nx1" %%1 ^& del /f /q %%windir%%\Hardlinker.cmd>>%%windir%%\Hardlinker.cmd & start /min Hardlinker.cmd "%1" ^& exit
Цитата: Удаленный пользователь от 17.01.2021, 14:04Цитата: XpucT от 16.01.2021, 23:28Не вижу проблем.
[spoiler]cmd /c echo @echo off>>%%windir%%\Hardlinker.cmd & echo set IS_MINIMIZED=1>>%%windir%%\Hardlinker.cmd & echo set "myCommand="(new-object -COM 'Shell.Application')^^.BrowseForFolder(0,'',0).self.path"">> %%windir%%\Hardlinker.cmd & echo for /f "usebackq delims=" %%%%I in (`powershell %%myCommand%%`) do set "dir=%%%%I">>%%windir%%\Hardlinker.cmd & echo setlocal enabledelayedexpansion>>%%windir%%\Hardlinker.cmd & echo mklink /h "!dir!\%%~nx1" %%1 ^& del /f /q %%windir%%\Hardlinker.cmd>>%%windir%%\Hardlinker.cmd & start /min Hardlinker.cmd "%1" ^& exitcmd /c echo @echo off>>%%windir%%\Hardlinker.cmd & echo set IS_MINIMIZED=1>>%%windir%%\Hardlinker.cmd & echo set "myCommand="(new-object -COM 'Shell.Application')^^.BrowseForFolder(0,'',0).self.path"">> %%windir%%\Hardlinker.cmd & echo for /f "usebackq delims=" %%%%I in (`powershell %%myCommand%%`) do set "dir=%%%%I">>%%windir%%\Hardlinker.cmd & echo setlocal enabledelayedexpansion>>%%windir%%\Hardlinker.cmd & echo mklink /h "!dir!\%%~nx1" %%1 ^& del /f /q %%windir%%\Hardlinker.cmd>>%%windir%%\Hardlinker.cmd & start /min Hardlinker.cmd "%1" ^& exitcmd /c echo @echo off>>%%windir%%\Hardlinker.cmd & echo set IS_MINIMIZED=1>>%%windir%%\Hardlinker.cmd & echo set "myCommand="(new-object -COM 'Shell.Application')^^.BrowseForFolder(0,'',0).self.path"">> %%windir%%\Hardlinker.cmd & echo for /f "usebackq delims=" %%%%I in (`powershell %%myCommand%%`) do set "dir=%%%%I">>%%windir%%\Hardlinker.cmd & echo setlocal enabledelayedexpansion>>%%windir%%\Hardlinker.cmd & echo mklink /h "!dir!\%%~nx1" %%1 ^& del /f /q %%windir%%\Hardlinker.cmd>>%%windir%%\Hardlinker.cmd & start /min Hardlinker.cmd "%1" ^& exit[/spoiler]
Спасибо. Заработало.
Странно. Какой-то баг.
Я точно так же в изначальной команде просто добавлял /h и меню открывалось только в одном томе. А сейчас всё заработало нормально. Винда иногда чудит. Может надо было оболочку перезагружать, чтобы наверняка применялось. Не знаю. В любом случае ещё раз спасибо.
Цитата: XpucT от 16.01.2021, 23:28Не вижу проблем.
Спойлерcmd /c echo @echo off>>%%windir%%\Hardlinker.cmd & echo set IS_MINIMIZED=1>>%%windir%%\Hardlinker.cmd & echo set "myCommand="(new-object -COM 'Shell.Application')^^.BrowseForFolder(0,'',0).self.path"">> %%windir%%\Hardlinker.cmd & echo for /f "usebackq delims=" %%%%I in (`powershell %%myCommand%%`) do set "dir=%%%%I">>%%windir%%\Hardlinker.cmd & echo setlocal enabledelayedexpansion>>%%windir%%\Hardlinker.cmd & echo mklink /h "!dir!\%%~nx1" %%1 ^& del /f /q %%windir%%\Hardlinker.cmd>>%%windir%%\Hardlinker.cmd & start /min Hardlinker.cmd "%1" ^& exitcmd /c echo @echo off>>%%windir%%\Hardlinker.cmd & echo set IS_MINIMIZED=1>>%%windir%%\Hardlinker.cmd & echo set "myCommand="(new-object -COM 'Shell.Application')^^.BrowseForFolder(0,'',0).self.path"">> %%windir%%\Hardlinker.cmd & echo for /f "usebackq delims=" %%%%I in (`powershell %%myCommand%%`) do set "dir=%%%%I">>%%windir%%\Hardlinker.cmd & echo setlocal enabledelayedexpansion>>%%windir%%\Hardlinker.cmd & echo mklink /h "!dir!\%%~nx1" %%1 ^& del /f /q %%windir%%\Hardlinker.cmd>>%%windir%%\Hardlinker.cmd & start /min Hardlinker.cmd "%1" ^& exitcmd /c echo @echo off>>%%windir%%\Hardlinker.cmd & echo set IS_MINIMIZED=1>>%%windir%%\Hardlinker.cmd & echo set "myCommand="(new-object -COM 'Shell.Application')^^.BrowseForFolder(0,'',0).self.path"">> %%windir%%\Hardlinker.cmd & echo for /f "usebackq delims=" %%%%I in (`powershell %%myCommand%%`) do set "dir=%%%%I">>%%windir%%\Hardlinker.cmd & echo setlocal enabledelayedexpansion>>%%windir%%\Hardlinker.cmd & echo mklink /h "!dir!\%%~nx1" %%1 ^& del /f /q %%windir%%\Hardlinker.cmd>>%%windir%%\Hardlinker.cmd & start /min Hardlinker.cmd "%1" ^& exit
Спасибо. Заработало.
Странно. Какой-то баг.
Я точно так же в изначальной команде просто добавлял /h и меню открывалось только в одном томе. А сейчас всё заработало нормально. Винда иногда чудит. Может надо было оболочку перезагружать, чтобы наверняка применялось. Не знаю. В любом случае ещё раз спасибо.
Цитата: Удаленный пользователь от 17.01.2021, 14:07Цитата: Сергей от 16.01.2021, 23:13Привет
А не проще закинуть папку с оригиналом, и папку, где нужно сделать жёсткую ссылку (предварительно закинуть туда файл), в Win 10 Tweaker? Он Тебе сделает жёсткие ссылки прекрасно. Файл один будет на диске, а ссылки две.
И всё, никакой головной боли.Привет, Сергей. Это имеет смысл делать только когда у тебя УЖЕ дубликаты лежат на диске. А положить один файл, потом скопировать его, а потом заменить на жесткую ссылку это, во-первых, лишние действия. Во-вторых, лишняя работа для диска по записи-удалению.
Цитата: Сергей от 16.01.2021, 23:13Привет
А не проще закинуть папку с оригиналом, и папку, где нужно сделать жёсткую ссылку (предварительно закинуть туда файл), в Win 10 Tweaker? Он Тебе сделает жёсткие ссылки прекрасно. Файл один будет на диске, а ссылки две.
И всё, никакой головной боли.
Привет, Сергей. Это имеет смысл делать только когда у тебя УЖЕ дубликаты лежат на диске. А положить один файл, потом скопировать его, а потом заменить на жесткую ссылку это, во-первых, лишние действия. Во-вторых, лишняя работа для диска по записи-удалению.
Цитата: admin от 17.01.2021, 14:55Дело ни в оболочке, ни в том, что через корневой диск работает.
Дело во внимательности.
Дело ни в оболочке, ни в том, что через корневой диск работает.
Дело во внимательности.
Цитата: Удаленный пользователь от 17.01.2021, 15:32Цитата: XpucT от 17.01.2021, 14:55Дело ни в оболочке, ни в том, что через корневой диск работает.
Дело во внимательности.Да ну брось. По сути изменена одна буква. Я сейчас повторил всё тоже самое (у меня была экспортирована та неудачная версия ветки реестра) и заработало.
Могу только предположить, что я случайно вместо файла кликнул на папку и поэтому тот вариант в меню отсутствовал. Скорее всего так оно и было, ничем другим объяснить не получается.
Цитата: XpucT от 17.01.2021, 14:55Дело ни в оболочке, ни в том, что через корневой диск работает.
Дело во внимательности.
Да ну брось. По сути изменена одна буква. Я сейчас повторил всё тоже самое (у меня была экспортирована та неудачная версия ветки реестра) и заработало.
Могу только предположить, что я случайно вместо файла кликнул на папку и поэтому тот вариант в меню отсутствовал. Скорее всего так оно и было, ничем другим объяснить не получается.
Цитата: admin от 17.01.2021, 16:27Цитата: Cronos от 17.01.2021, 15:32Цитата: XpucT от 17.01.2021, 14:55Дело ни в оболочке, ни в том, что через корневой диск работает.
Дело во внимательности.Да ну брось.
Я где-то не прав? =))
Я-то брошу. Жди в следующий раз ответ.
Тебе сказали, что проблема во внимательности, а не том, что Ты уже несколько раз предположил.Не нужно дерзить, если Тебе сказали, что проблема во внимательности.
Тебе слова плохого не сказали. Тебе сказали, где ошибка, потому что привязался к тому, что виноваты расположение батника / винда.
Цитата: Cronos от 17.01.2021, 15:32Цитата: XpucT от 17.01.2021, 14:55Дело ни в оболочке, ни в том, что через корневой диск работает.
Дело во внимательности.Да ну брось.

Я где-то не прав? =))
Я-то брошу. Жди в следующий раз ответ.
Тебе сказали, что проблема во внимательности, а не том, что Ты уже несколько раз предположил.
Не нужно дерзить, если Тебе сказали, что проблема во внимательности.
Тебе слова плохого не сказали. Тебе сказали, где ошибка, потому что привязался к тому, что виноваты расположение батника / винда.