Forum

Пожалуйста or Регистрация для создания сообщений и тем.

Symlinker от Хачатура [Решено]

Добрый день. 

Начал я тут разбираться с новым твиком (который позволяет выбирать куда делать симлинк. Код там следующий

Спойлер

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%  , а жесткие ссылки работают только внутри одного диска. Следовательно винда как-то заранее понимает, что я пытаюсь запустить команду с другого диска и даже показывать мне её не хочет, не говоря уже про исполнение. 

В общем есть у кого идеи как сделать чтобы работало в каждом томе или тут ничего не попишешь и нужно тупо переписывать команду для каждого диска в отдельности?

Привет 🖐
В видео про символические ссылки закреплён коммент, где написано, как устроены жёсткие ссылки и чем они ограничены.

Цитата: XpucT от 16.01.2021, 22:49

Привет 🖐
В видео про символически ссылки закреплён коммент, где написано, как устроены жёсткие ссылки и чем они ограничены.

Привет, Хачатур 🖐

Да, я знаю про ограничения жестких ссылок. Однажды потратил время, чтобы разобраться как оно работает всё. Меня интересовало можно ли с учётом этих ограничений создать подобную комманду. Понятное дело, что действовать она будет только внутри одного тома и только для файлов, но хотя бы так чтобы внутри этого тома можно было выбирать место. Похоже что из-за того что cmd файл создаётся на диске С, команда работает только с диском С. Думаю, что если переписать её для другого диска, то там тоже будет работать, но это не выход. Вот если бы как то сделать в виде одной...Например если бы оно в начале определяло в каком томе запущено, а только после этого исполнялось...

Привет 🖐
А не проще закинуть папку с оригиналом, и папку, где нужно сделать жёсткую ссылку (предварительно закинуть туда файл), в Win 10 Tweaker? Он Тебе сделает жёсткие ссылки прекрасно. Файл один будет на диске, а ссылки две.
И всё, никакой головной боли.

admin и Удаленный пользователь отреагировали на эту запись.
adminУдаленный пользователь

Не вижу проблем.

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

 

Удаленный пользователь, Удаленный пользователь и ещё 2 отреагировали на эту запись.
Удаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользователь
Цитата: 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" ^& 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  
 
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

Спасибо. Заработало.

Странно. Какой-то баг. 
Я точно так же в изначальной команде просто добавлял /h и меню открывалось только в одном томе. А сейчас всё заработало нормально. Винда иногда чудит. Может надо было оболочку перезагружать, чтобы наверняка применялось. Не знаю. В любом случае ещё раз спасибо.

Цитата: Сергей от 16.01.2021, 23:13

Привет 🖐
А не проще закинуть папку с оригиналом, и папку, где нужно сделать жёсткую ссылку (предварительно закинуть туда файл), в Win 10 Tweaker? Он Тебе сделает жёсткие ссылки прекрасно. Файл один будет на диске, а ссылки две.
И всё, никакой головной боли.

Привет, Сергей. Это имеет смысл делать только когда у тебя УЖЕ дубликаты лежат на диске. А положить один файл, потом скопировать его, а потом заменить на жесткую ссылку это, во-первых, лишние действия. Во-вторых, лишняя работа для диска по записи-удалению.

Дело ни в оболочке, ни в том, что через корневой диск работает.
Дело во внимательности.

Удаленный пользователь отреагировал на эту запись.
Удаленный пользователь
Цитата: XpucT от 17.01.2021, 14:55

Дело ни в оболочке, ни в том, что через корневой диск работает.
Дело во внимательности.

Да ну брось. По сути изменена одна буква. Я сейчас повторил всё тоже самое (у меня была экспортирована та неудачная версия ветки реестра) и заработало. 
Могу только предположить, что я случайно вместо файла кликнул на папку и поэтому тот вариант в меню отсутствовал. Скорее всего так оно и было, ничем другим объяснить не получается.

Цитата: Cronos от 17.01.2021, 15:32
Цитата: XpucT от 17.01.2021, 14:55

Дело ни в оболочке, ни в том, что через корневой диск работает.
Дело во внимательности.

Да ну брось.


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

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

Удаленный пользователь, Удаленный пользователь и Удаленный пользователь отреагировали на эту запись.
Удаленный пользовательУдаленный пользовательУдаленный пользователь