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

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

3 ответа3

4

Когда я запускаю 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

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

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

0

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

type mylink.lnk|find "\"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .