Как я могу разобрать ярлык .LNK из командной строки в Windows?

6383
davexpression

У меня есть ярлык для папки, и я хочу открыть ее из командной строки. Я хочу, чтобы командная строка немедленно сменила место назначения ярлыка. Вместо этого, если я пытаюсь выполнить ярлык в командной строке, он просто открывает папку в проводнике Windows.

Как можно проанализировать файл ярлыка (.LNK) из командной строки и переключиться на целевую папку ярлыка?

0
Я думаю, что вы делаете это неправильно. Пожалуйста, обратитесь к [Как я могу открыть CMD в определенной папке] (http://stackoverflow.com/questions/60904/how-can-i-open-a-cmd-window-in-a-specific-location) Тем самым `cmd / K" cd / d C: \ Folder \ Folder` откроет CMD в C: \ Folder \ Folder Darius 9 лет назад 1
Благодарю. Но я не хочу идти по этому пути. Когда я запускаю CMD, я вижу C: \ Users \ dave>, но я хочу изменить каталог на C: \ wamp \ www без необходимости нажимать cd ../../. Поэтому я создал ярлык папки «www» в папке «dave». davexpression 9 лет назад 0
@davexpression: Можете ли вы объяснить, почему предложение Дария не практично? Это правильный способ действий, поэтому при нажатии на ярлык CMD он автоматически откроется в указанном вами каталоге. Karan 9 лет назад 0
Предложение Дария практично. Иногда дело не в скорости или альтернативах, а в возможностях. Но спасибо @Darius, ссылка помогла davexpression 9 лет назад 2

3 ответа на вопрос

4
Karan

Когда я запускаю CMD, я вижу C: \ Users \ dave>, но я хочу изменить каталог на C: \ wamp \ www без необходимости нажимать cd ../../. Поэтому я создал ярлык папки «www» в папке «dave».

Это типичная проблема XY . Если вы хотите, чтобы CMD всегда открывался в определенном каталоге, а не по умолчанию, все, что вам нужно сделать, это просто изменить свойства ярлыка следующим образом:

В Windows 7 ярлык командной строки обычно находится в нем Start Menu > All Programs > Accessories, поэтому просто щелкните по нему правой кнопкой мыши, выберите «Свойства» и отредактируйте поле « Начать в» по своему вкусу.


Вы также можете создать командный файл с именем, например, d.bat, который содержит одну строку cd /d c:\wamp\www. Поместите пакетный файл где-нибудь на вашем пути, и теперь все, что вам нужно сделать, это открыть CMD и набрать d, чтобы перейти в конкретный каталог. Есть также много подобных решений.


Если вы устарели при анализе файла ярлыка (.LNK) из командной строки, сохраните следующее как ParseLnk.bat и выполните его из командной строки как ParseLnk <LNK File>:

@echo off echo set WshShell = WScript.CreateObject("WScript.Shell")>Tmp.vbs echo set Lnk = WshShell.Createshortcut(WScript.Arguments(0))>>Tmp.vbs echo WScript.Echo Lnk.TargetPath>>Tmp.vbs for /f "delims=" %%d in ('cscript //nologo Tmp.vbs "%~1"') do del Tmp.vbs & cd /d "%%d" 
1
evilspoons

Я думаю, что проблема в том, что файл .lnk - это документ, который интерпретируется программой - Explorer.exe - точно так же, как файл docx будет обрабатываться Word или чем-то еще. Вам нужно написать какой-нибудь скрипт для разбора файла lnk и выполнения команды cd.

Возможно, в PowerShell есть возможность делать то, что вы хотите (в отличие от командной строки), с помощью командлета, встроенного, стороннего или другого, который вы могли бы написать самостоятельно, но я не знаю.

0
krubo

На тот случай, если кто-нибудь ответит на этот вопрос, как я, желая расшифровать файл .lnk, используя только командную строку, попробуйте:

type mylink.lnk|find "\"