[CMD] Как применить нужную иконку на файле через CMD

Denis2707

Постоянный участник
Сообщения
102
Реакции
3
Помогите, пожалуйста!
Как через батник можна поменять иконку на ярлыке?
Пример:
на рабочом столе есть ярлык book.url - на нём нужно применить иконку которая находиться в C:\programdata\fox.ico
 
Супер! Всё работает как надо
Отлично! Рад, что проблема была успешно решена. Если у вас возникнут другие вопросы или потребуется помощь, не стесняйтесь обращаться. Удачи!
 
Для создания ярлыка (.lnk) с заданной иконкой и корректной ссылкой, вам нужно убедиться, что путь к файлу иконки и ссылке указаны правильно. Попробуйте следующий скрипт:

CMD/BATCH:
@echo off
setlocal

set shortcutPath=%USERPROFILE%\Desktop\book.lnk
set targetPath=https://www.google.com
set iconPath=C:\ProgramData\fox.ico

echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut.vbs
echo sLinkFile = "%shortcutPath%" >> CreateShortcut.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut.vbs
echo oLink.TargetPath = "%targetPath%" >> CreateShortcut.vbs
echo oLink.IconLocation = "%iconPath%" >> CreateShortcut.vbs
echo oLink.Save >> CreateShortcut.vbs

cscript CreateShortcut.vbs
del CreateShortcut.vbs

endlocal

Этот скрипт создаст ярлык "book.lnk" на рабочем столе, который будет открывать ссылку "https://www.google.com" и использовать иконку из файла "C:\ProgramData\fox.ico". Попробуйте запустить этот скрипт и проверьте, работает ли созданный ярлык корректно. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!
Подскажите ещё, после этого скрипта дальше нужно чтобы создавался ярлык на робочый стол на файл C:\programdata\frog.exe и на этот ярлык применялась иконка C:\programdata\flag.ico
 
Подскажите ещё, после этого скрипта дальше нужно чтобы создавался ярлык на робочый стол на файл C:\programdata\frog.exe и на этот ярлык применялась иконка C:\programdata\flag.ico
Для создания ещё одного ярлыка на рабочем столе, который будет ссылаться на файл "C:\ProgramData\frog.exe" и использовать иконку из файла "C:\ProgramData\flag.ico", вы можете использовать следующий скрипт:

CMD/BATCH:
@echo off
setlocal

set shortcutPath=%USERPROFILE%\Desktop\frog.lnk
set targetPath=C:\ProgramData\frog.exe
set iconPath=C:\ProgramData\flag.ico

echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut2.vbs
echo sLinkFile = "%shortcutPath%" >> CreateShortcut2.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut2.vbs
echo oLink.TargetPath = "%targetPath%" >> CreateShortcut2.vbs
echo oLink.IconLocation = "%iconPath%" >> CreateShortcut2.vbs
echo oLink.Save >> CreateShortcut2.vbs

cscript CreateShortcut2.vbs
del CreateShortcut2.vbs

endlocal

Этот скрипт создаст ярлык "frog.lnk" на рабочем столе, который будет ссылаться на файл "C:\ProgramData\frog.exe" и использовать иконку из файла "C:\ProgramData\flag.ico". Запустите этот скрипт после предыдущего, который создавал первый ярлык. Проверьте, работает ли созданный ярлык корректно. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!
 
Для создания ещё одного ярлыка на рабочем столе, который будет ссылаться на файл "C:\ProgramData\frog.exe" и использовать иконку из файла "C:\ProgramData\flag.ico", вы можете использовать следующий скрипт:

CMD/BATCH:
@echo off
setlocal

set shortcutPath=%USERPROFILE%\Desktop\frog.lnk
set targetPath=C:\ProgramData\frog.exe
set iconPath=C:\ProgramData\flag.ico

echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut2.vbs
echo sLinkFile = "%shortcutPath%" >> CreateShortcut2.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut2.vbs
echo oLink.TargetPath = "%targetPath%" >> CreateShortcut2.vbs
echo oLink.IconLocation = "%iconPath%" >> CreateShortcut2.vbs
echo oLink.Save >> CreateShortcut2.vbs

cscript CreateShortcut2.vbs
del CreateShortcut2.vbs

endlocal

Этот скрипт создаст ярлык "frog.lnk" на рабочем столе, который будет ссылаться на файл "C:\ProgramData\frog.exe" и использовать иконку из файла "C:\ProgramData\flag.ico". Запустите этот скрипт после предыдущего, который создавал первый ярлык. Проверьте, работает ли созданный ярлык корректно. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!
Работает.
У меня перед этим скриптом стоит команда:
move "C:\ProgramData\box.exe" "%USERPROFILE%\Desktop\" Но файл на робочем столе появляється только после того как нажму "обновить" через ПКМ. Почему так?
 
Работает.
У меня перед этим скриптом стоит команда:
move "C:\ProgramData\box.exe" "%USERPROFILE%\Desktop\" Но файл на робочем столе появляється только после того как нажму "обновить" через ПКМ. Почему так?
Если файл на рабочем столе появляется только после обновления рабочего стола (например, через правый клик мыши и выбор "Обновить"), это может быть связано с тем, что операционная система не успевает обновить содержимое рабочего стола сразу после перемещения файла.

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

CMD/BATCH:
@echo off
setlocal

move "C:\ProgramData\box.exe" "%USERPROFILE%\Desktop\"

rem Добавляем задержку на 1 секунду
timeout /t 1 /nobreak >nul

set shortcutPath=%USERPROFILE%\Desktop\frog.lnk
set targetPath=C:\ProgramData\frog.exe
set iconPath=C:\ProgramData\flag.ico

echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut2.vbs
echo sLinkFile = "%shortcutPath%" >> CreateShortcut2.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut2.vbs
echo oLink.TargetPath = "%targetPath%" >> CreateShortcut2.vbs
echo oLink.IconLocation = "%iconPath%" >> CreateShortcut2.vbs
echo oLink.Save >> CreateShortcut2.vbs

cscript CreateShortcut2.vbs
del CreateShortcut2.vbs

endlocal

Добавив команду timeout /t 1 /nobreak >nul, вы создадите задержку в 1 секунду после перемещения файла на рабочий стол, что даст операционной системе время обновить содержимое рабочего стола перед созданием ярлыка. Попробуйте использовать этот скрипт и проверьте, помогает ли это решить проблему. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!
 
Если файл на рабочем столе появляется только после обновления рабочего стола (например, через правый клик мыши и выбор "Обновить"), это может быть связано с тем, что операционная система не успевает обновить содержимое рабочего стола сразу после перемещения файла.

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

CMD/BATCH:
@echo off
setlocal

move "C:\ProgramData\box.exe" "%USERPROFILE%\Desktop\"

rem Добавляем задержку на 1 секунду
timeout /t 1 /nobreak >nul

set shortcutPath=%USERPROFILE%\Desktop\frog.lnk
set targetPath=C:\ProgramData\frog.exe
set iconPath=C:\ProgramData\flag.ico

echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut2.vbs
echo sLinkFile = "%shortcutPath%" >> CreateShortcut2.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut2.vbs
echo oLink.TargetPath = "%targetPath%" >> CreateShortcut2.vbs
echo oLink.IconLocation = "%iconPath%" >> CreateShortcut2.vbs
echo oLink.Save >> CreateShortcut2.vbs

cscript CreateShortcut2.vbs
del CreateShortcut2.vbs

endlocal

Добавив команду timeout /t 1 /nobreak >nul, вы создадите задержку в 1 секунду после перемещения файла на рабочий стол, что даст операционной системе время обновить содержимое рабочего стола перед созданием ярлыка. Попробуйте использовать этот скрипт и проверьте, помогает ли это решить проблему. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!
👍помогло 1,5 секунди
 
👍помогло 1,5 секунди
Отлично! Рад, что добавление небольшой задержки помогло решить проблему. Если у вас возникнут ещё вопросы или потребуется помощь, не стесняйтесь обращаться. Удачи!
 
Для создания ещё одного ярлыка на рабочем столе, который будет ссылаться на файл "C:\ProgramData\frog.exe" и использовать иконку из файла "C:\ProgramData\flag.ico", вы можете использовать следующий скрипт:

CMD/BATCH:
@echo off
setlocal

set shortcutPath=%USERPROFILE%\Desktop\frog.lnk
set targetPath=C:\ProgramData\frog.exe
set iconPath=C:\ProgramData\flag.ico

echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut2.vbs
echo sLinkFile = "%shortcutPath%" >> CreateShortcut2.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut2.vbs
echo oLink.TargetPath = "%targetPath%" >> CreateShortcut2.vbs
echo oLink.IconLocation = "%iconPath%" >> CreateShortcut2.vbs
echo oLink.Save >> CreateShortcut2.vbs

cscript CreateShortcut2.vbs
del CreateShortcut2.vbs

endlocal

Этот скрипт создаст ярлык "frog.lnk" на рабочем столе, который будет ссылаться на файл "C:\ProgramData\frog.exe" и использовать иконку из файла "C:\ProgramData\flag.ico". Запустите этот скрипт после предыдущего, который создавал первый ярлык. Проверьте, работает ли созданный ярлык корректно. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!
@AssistGPT Как добавить в свойствах ярлыка, а именно в поле РАБОЧАЯ ПАПКА (Start In) заданый путь - C:\ProgramData ?
 
@AssistGPT Как добавить в свойствах ярлыка, а именно в поле РАБОЧАЯ ПАПКА (Start In:) заданый путь - C:\ProgramData ?
Для добавления заданного пути в свойствах ярлыка в поле "Рабочая папка (Start In:)", вам нужно внести изменения в скрипт создания ярлыка. Вот как это можно сделать:

CMD/BATCH:
@echo off
setlocal

set shortcutPath=%USERPROFILE%\Desktop\frog.lnk
set targetPath=C:\ProgramData\frog.exe
set iconPath=C:\ProgramData\flag.ico
set startInPath=C:\ProgramData

echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut2.vbs
echo sLinkFile = "%shortcutPath%" >> CreateShortcut2.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut2.vbs
echo oLink.TargetPath = "%targetPath%" >> CreateShortcut2.vbs
echo oLink.IconLocation = "%iconPath%" >> CreateShortcut2.vbs
echo oLink.WorkingDirectory = "%startInPath%" >> CreateShortcut2.vbs
echo oLink.Save >> CreateShortcut2.vbs

cscript CreateShortcut2.vbs
del CreateShortcut2.vbs

endlocal

В этом скрипте добавлена строка echo oLink.WorkingDirectory = "%startInPath%" >> CreateShortcut2.vbs, которая устанавливает заданный путь в поле "Рабочая папка (Start In:)" для создаваемого ярлыка. Путь C:\ProgramData будет установлен как рабочая папка для ярлыка "frog.lnk". Попробуйте запустить этот скрипт и проверьте, что заданный путь корректно устанавливается в свойствах ярлыка. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!
 
Для добавления заданного пути в свойствах ярлыка в поле "Рабочая папка (Start In:)", вам нужно внести изменения в скрипт создания ярлыка. Вот как это можно сделать:

CMD/BATCH:
@echo off
setlocal

set shortcutPath=%USERPROFILE%\Desktop\frog.lnk
set targetPath=C:\ProgramData\frog.exe
set iconPath=C:\ProgramData\flag.ico
set startInPath=C:\ProgramData

echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut2.vbs
echo sLinkFile = "%shortcutPath%" >> CreateShortcut2.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut2.vbs
echo oLink.TargetPath = "%targetPath%" >> CreateShortcut2.vbs
echo oLink.IconLocation = "%iconPath%" >> CreateShortcut2.vbs
echo oLink.WorkingDirectory = "%startInPath%" >> CreateShortcut2.vbs
echo oLink.Save >> CreateShortcut2.vbs

cscript CreateShortcut2.vbs
del CreateShortcut2.vbs

endlocal

В этом скрипте добавлена строка echo oLink.WorkingDirectory = "%startInPath%" >> CreateShortcut2.vbs, которая устанавливает заданный путь в поле "Рабочая папка (Start In:)" для создаваемого ярлыка. Путь C:\ProgramData будет установлен как рабочая папка для ярлыка "frog.lnk". Попробуйте запустить этот скрипт и проверьте, что заданный путь корректно устанавливается в свойствах ярлыка. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!
@AssistGPT Как сделать чтобы создавало на рабочий стол ярлык с названием кириллицы, например лягушка.lnk ?
 
@AssistGPT Как сделать чтобы создавало на рабочий стол ярлык с названием кириллицы, например лягушка.lnk ?
Для создания ярлыка с названием кириллицей на рабочем столе, вам нужно убедиться, что используете правильную кодировку при создании скрипта. Вот пример скрипта, который создаст ярлык с названием "лягушка.lnk":

CMD/BATCH:
@echo off
chcp 1251 > nul

setlocal

set shortcutPath=%USERPROFILE%\Desktop\лягушка.lnk
set targetPath=C:\ProgramData\frog.exe
set iconPath=C:\ProgramData\flag.ico
set startInPath=C:\ProgramData

echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut3.vbs
echo sLinkFile = "%shortcutPath%" >> CreateShortcut3.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut3.vbs
echo oLink.TargetPath = "%targetPath%" >> CreateShortcut3.vbs
echo oLink.IconLocation = "%iconPath%" >> CreateShortcut3.vbs
echo oLink.WorkingDirectory = "%startInPath%" >> CreateShortcut3.vbs
echo oLink.Save >> CreateShortcut3.vbs

cscript //nologo CreateShortcut3.vbs
del CreateShortcut3.vbs

endlocal

В этом скрипте добавлена строка chcp 1251 > nul, которая устанавливает кодировку консоли на Windows-1251 (кириллица). После этого скрипт создаст ярлык с названием "лягушка.lnk" на рабочем столе. Попробуйте запустить этот скрипт и проверьте, что ярлык создается с кириллическим названием. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!
 
Для создания ярлыка с названием кириллицей на рабочем столе, вам нужно убедиться, что используете правильную кодировку при создании скрипта. Вот пример скрипта, который создаст ярлык с названием "лягушка.lnk":

CMD/BATCH:
@echo off
chcp 1251 > nul

setlocal

set shortcutPath=%USERPROFILE%\Desktop\лягушка.lnk
set targetPath=C:\ProgramData\frog.exe
set iconPath=C:\ProgramData\flag.ico
set startInPath=C:\ProgramData

echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut3.vbs
echo sLinkFile = "%shortcutPath%" >> CreateShortcut3.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut3.vbs
echo oLink.TargetPath = "%targetPath%" >> CreateShortcut3.vbs
echo oLink.IconLocation = "%iconPath%" >> CreateShortcut3.vbs
echo oLink.WorkingDirectory = "%startInPath%" >> CreateShortcut3.vbs
echo oLink.Save >> CreateShortcut3.vbs

cscript //nologo CreateShortcut3.vbs
del CreateShortcut3.vbs

endlocal

В этом скрипте добавлена строка chcp 1251 > nul, которая устанавливает кодировку консоли на Windows-1251 (кириллица). После этого скрипт создаст ярлык с названием "лягушка.lnk" на рабочем столе. Попробуйте запустить этот скрипт и проверьте, что ярлык создается с кириллическим названием. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!
 
Для создания ярлыка с названием кириллицей на рабочем столе, вам нужно убедиться, что используете правильную кодировку при создании скрипта. Вот пример скрипта, который создаст ярлык с названием "лягушка.lnk":

CMD/BATCH:
@echo off
chcp 1251 > nul

setlocal

set shortcutPath=%USERPROFILE%\Desktop\лягушка.lnk
set targetPath=C:\ProgramData\frog.exe
set iconPath=C:\ProgramData\flag.ico
set startInPath=C:\ProgramData

echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut3.vbs
echo sLinkFile = "%shortcutPath%" >> CreateShortcut3.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut3.vbs
echo oLink.TargetPath = "%targetPath%" >> CreateShortcut3.vbs
echo oLink.IconLocation = "%iconPath%" >> CreateShortcut3.vbs
echo oLink.WorkingDirectory = "%startInPath%" >> CreateShortcut3.vbs
echo oLink.Save >> CreateShortcut3.vbs

cscript //nologo CreateShortcut3.vbs
del CreateShortcut3.vbs

endlocal

В этом скрипте добавлена строка chcp 1251 > nul, которая устанавливает кодировку консоли на Windows-1251 (кириллица). После этого скрипт создаст ярлык с названием "лягушка.lnk" на рабочем столе. Попробуйте запустить этот скрипт и проверьте, что ярлык создается с кириллическим названием. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!
не работет
 
Понял, давайте попробуем другой подход. Вместо использования кириллических символов в самом скрипте, мы можем создать ярлык с кириллическим названием напрямую через PowerShell. Вот пример скрипта на PowerShell, который создаст ярлык с кириллическим названием "лягушка.lnk" на рабочем столе:

PowerShell:
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$env:USERPROFILE\Desktop\лягушка.lnk")
$Shortcut.TargetPath = "C:\ProgramData\frog.exe"
$Shortcut.IconLocation = "C:\ProgramData\flag.ico"
$Shortcut.WorkingDirectory = "C:\ProgramData"
$Shortcut.Save()

Сохраните этот скрипт как, например, "create_shortcut.ps1" и запустите его через PowerShell. Он должен создать ярлык "лягушка.lnk" на рабочем столе. Пожалуйста, попробуйте этот подход и сообщите, работает ли он для вас. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!
 
Назад
Сверху Снизу