У меня есть ярлык для папки, и я хочу открыть его из командной строки. Я хочу, чтобы командная строка немедленно перешла в целевое расположение ярлыка. Вместо этого, если я попытаюсь выполнить ярлык в командной строке, он просто откроет папку в проводнике Windows.
Как проанализировать файл ярлыка (.LNK) из командной строки и переключиться на целевую папку ярлыка?
решение1
При запуске CMD я вижу C:\Users\dave>, но я хочу сменить каталог на C:\wamp\www, не нажимая cd ../../. Поэтому я создал ярлык папки «www» в папке «dave».
Это типичныйпроблема XY. Если вы хотите, чтобы CMD всегда открывался в определенном каталоге вместо каталога по умолчанию, все, что вам нужно сделать, это просто изменить свойства ярлыка следующим образом:
В Windows 7 ярлык командной строки обычно находится в Start Menu > All Programs > Accessories
, поэтому просто щелкните правой кнопкой мыши по ярлыку, выберите «Свойства» и отредактируйтеНачинатьполе по вашему вкусу.
Вы также можете создать пакетный файл, назвав его, например,д.batкоторый содержит одну строку cd /d c:\wamp\www
. Поместите пакетный файл где-нибудь в вашем пути, и теперь все, что вам нужно сделать, это открыть CMD и ввестигдля перехода в определенный каталог. Есть еще много подобных решений.
Если вы решительно настроены проанализировать файл ярлыка (.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"
решение2
Если кто-то, как и я, задался этим вопросом и хочет расшифровать файл .lnk, используя только командную строку, попробуйте:
type mylink.lnk|find "\"
решение3
Я думаю, проблема в том, что файл .lnk — это документ, который интерпретируется программой Explorer.exe — точно так же, как файл docx обрабатывается Word или чем-то еще. Вам придется написать какой-то скрипт для разбора файла lnk и выполнения команды cd.
Возможно, в PowerShell (в отличие от командной строки) есть возможность сделать то, что вам нужно, с помощью командлета, встроенного, стороннего или написанного вами самостоятельно, но я не знаю.
решение4
Вы можете задать сценарий запуска в своем реестре, вставив следующий элемент:
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
Autorun REG_EXPAND_SZ <some-path-with-scripts>\msdos-startup.bat
И в этом файле "msdos-startup.bat" вы помещаете такую строку, которая определяет некий псевдоним (здесь я использую скрипт, предоставленный Караном выше):
doskey l=<some-path-with-scripts>\ParseLnk.bat $*
Теперь, когда вы откроете консоль командной строки, все вышеперечисленное будет выполнено, и вам просто нужно будет ввести:
l some-shortcut.lnk