Показать полную графическую версию : [решено] Создание ярлыков с ссылкой на привод когда имя диска не определено
Имеется Windows PE который запускается с диска на нем есть файл имя_диска:\PePrograms\WMount.cmd содержащий строки
cls
cd /d "%~dp0"
For %%i in (*.wim) Do call :_Mount "%%~dpnxi"
Echo rd /s /q "b:\PePrograms">>"%Temp%\UnMount.cmd"
If not exist "b:\Programs" md "b:\Programs"
GoTo :Eof
:_Mount
Set /a Count=0
:_1
md "b:\PePrograms\%~n1"
imagex.exe /mountrw "%~1" 1 "b:\PePrograms\%~n1"
if %errorlevel% LEQ 0 GoTo _2
imagex.exe /mount "%~1" 1 "b:\PePrograms\%~n1"
if %errorlevel% LEQ 0 GoTo _2
Set /a Count+=1
if %Count% GEQ 50 GoTo _3
GoTo _1
:_2
echo imagex /unmount "b:\PePrograms\%~n1">>"%Temp%\UnMount.cmd"
:_3
GoTo :Eof
в этой же папке (на диске) имя_диска:\PePrograms\ есть каталоги с программами:
имя_диска:\PePrograms\Everest\everest.exe
имя_диска:\PePrograms\Totalcmd\TOTALCMD.EXE
имя_диска:\PePrograms\WinRAR\WinRAR.exe
имя_диска:\PePrograms\firefox3.exe
какие строки нужно написать в WMount.cmd чтобы создать ярлыки для этих программ на рабочем столе? Принимая во внимание то что имя диска (привода) может меняться (нужна как то задействовать переменную %CDROM% что ли?) а WindowsPE создается всегда на диске "B:\"
timon45,
Стандартными средствами CMD создать ярлыки невозможно, Вам нужно либо обратиться к WSH, либо поискать утилиту с поддержкой командной строки (как-то натыкался...) и разместить её на Вашем диске... Хотя Вы можете попробовать разместить ярлыки прямо на Вашем диске и просто скопировать их на рабочей стол при запуске диска, используя, например, команду "copy" (сам так делал...)
Тогда другой вопрос, какую ссылку нужно создать для ярлыка чтобы он обращался к приводу. Я Пытался прописать в строке
Объект: "%cdrom%\PePrograms\WinRAR\WinRAR.exe"
Рабочая папка: "%cdrom%\PePrograms\WinRAR\"
но он не соглашался на сохранение.
Или ещё вариант: прописать команду открыть папку имя_диска:\PePrograms\ в файле WMount.cmd?
timon45,
честно говоря я уже не помню, что прописывал... попробуйте прописать %CD%, а для того, чтобы переменная %CDROM% отрабатывалась, Вам нужно зарегистрировать её в системе, т.е. внести в реестр в раздел Enveroment. Да, Вы обрабатываете свой "диск" каким-образом? Надеюсь не простым распаковыванием? Иначе ничего не получится....
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\WIN51 set CDROM=%%i:
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v cdrom /d %CDROM% /f
Всё!!! Ура наконец то получилось пошел со всем по другому пути а именно:
Создал вместо ярлыков на рабочем столе *cmd который содержит строки:
@echo off
FOR %%d IN (c d e f g h i j k l m n o p q r s t u v w x y z) DO IF EXIST %%d:\WIN51 SET CDROM=%%d:
start %CDROM%\PePrograms\firefox3.exe
EXIT
Про первую строку прочел в учебнике по автоматической установки Windows!
timon45,
предлагаю Вам другое решение, т.к. утилиту для создания ярлыков я не нашел (пока...), то не побрезгуйте воспользоваться моей придумкой, которую при желании можно компилировать в *.exe:
Option Explicit
Dim Args1, Args2
Args1 = ""
Args2 = ""
On Error Resume Next
Args1 = Wscript.Arguments.Item(0)
Args2 = Wscript.Arguments.Item(1)
Dim objWshShell, objWshShortcut, objFSO
Dim strDesktop, ShortcutName, ShortcutExt, ShortcutPath
Set objWshShell = WScript.CreateObject("WScript.Shell")
strDesktop = objWshShell.SpecialFolders("Desktop")
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
ShortcutName = objFSO.GetBaseName(Args1)
ShortcutExt = objFSO.GetExtensionName(Args1)
ShortcutPath = objFSO.GetParentFolderName(Args1)
If Len(Args2)=0 Then Args2=ShortcutName
Set objWshShortcut = objWshShell.CreateShortcut _
(strDesktop &"\"& Args2 &".lnk")
With objWshShortcut
.WorkingDirectory = ShortcutPath
.TargetPath = ShortcutName &"."& ShortcutExt
.IconLocation = Args1 &", 0"
.Save
End with
Сохраните этот код в текстовом файле как MKLink.vbs (например...) на своем диске с WinPE и обращайтесь к нему через командную строку, используя Ваш батник:
wscript.exe "MKLink.vbs" "файл_с_полным_путем" "имя_ярлыка"
например
wscript.exe "MKLink.vbs" "%~d0\PePrograms\WinRAR\WinRAR.exe" "WinRAR"
PS: в скрипт внесено следующее изменение - если не указано имя ярлыка, сценарий автоматом присвоит ему имя (без расширения) файла, на который тот (ярлык) ссылается.
Все это конечно занятно и сложно для моего понимания, но я уже получил то что хотел и мой способ меня вполне удовлетворяет. Спасибо всем за внимание.
Devils0411
23-08-2010, 18:21
Есть еще один вариант... Качаете утилитку Shortcut.exe (http://depositfiles.com/ru/files/lxysppgg0). Создаете пакетный файл там же, где и утилита, и вставляете туда примерно такой код:
Shortcut.exe /f:"%USERPROFILE%\Рабочий стол\my app.lnk" /a:c /t:"D:\directory\my app.exe"
Думаю смысл кода понятен, и объяснять не надо.
утилиту для создания ярлыков я не нашел (пока...) »
ну эт вы зря... ;) ...добавлю к списку:
NirCmd (http://www.nirsoft.net/utils/nircmd.html) by NirSoft
shortcut "~folder.nircmd\TotalCMD\TOTALCMD.EXE" "~$folder.desktop$" "Total Commander"
XLN (http://alter.org.ua/ru/soft/win/nt_xln/) by Alter
xln -w "%~dp0TotalCMD\ToralCMD.exe" "%UserProfile%\Рабочий стол\Total Commander.lnk"
XXMKLINK (http://www.xxcopy.com/xxcopy38.htm) by Pixelab
xxmklink "%UserProfile%\Рабочий стол\Total Commander.lnk" "%~dp0TotalCMD\TotalCMD.exe"
amel27,
Вы знаете, я как-то особо и не старался найти подобную утилиту, просто в силу того, что такие задачи можно элементарно решать средствами Windows. Если уж на то пошло, можно обратиться к AutoIT или AHK и опять сделать всё своми руками, при этом добавив какой-нибудь функционал для собственных нужд...
deepred, о вкусах не спорят ))
встречал PE-окружения, где не работал ни WSH, ни AutoIT т.к. COM еще не был инициализирован
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.