С Новым годом! Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 29.01.2014
Сообщений: 30

Автоматизация создания ярлыка через BAT

22.11.2023, 10:51. Показов 1840. Ответов 16

Студворк — интернет-сервис помощи студентам
Привет. На работе мы каждый день создаем чеклист и запонлняем его, у файла меняется только дата в названии в конце на текущее число. Предположим файл уже создали утром и мне нужно его открыть, открывать папку и потом файл - ну да... как бы 5 секунд Но лень все же, что называется, двигатель прогресса, да и есть над чем голову поломать. Короче хотелось бы созлать батник, котрый по щелчку создаст рядом с собой же на раб столе ярлык к файлу чеклиста (тем более, что в течении дня требуется открывать его снова и снова, удобнее с раб стола, а через комбинацию клавиш - вообще шик).
Решение в принципе есть в интернете, но фишка в том, что нужно каким то образом указывать относительное название файла, то есть типа: "...чеклист_202311*.xlsx". То есть текущая дата, но чтобы каждый раз не переписывать батник естественно. Возможно ли такое?

Вот примерный код, который я нашел. Через бат вызывается временный vbs и потом он удаляется.

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
cd c:\MyApp
echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut.vbs
echo sLinkFile = "%userprofile%\Desktop\MyApp.lnk" >> CreateShortcut.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut.vbs
echo oLink.TargetPath = "C:\MyApp\MyApp.bat" >> CreateShortcut.vbs
echo oLink.WorkingDirectory = "C:\MyApp" >> CreateShortcut.vbs
echo oLink.Description = "My Application" >> CreateShortcut.vbs
echo oLink.IconLocation = "C:\MyApp\MyApp48.bmp" >> CreateShortcut.vbs
echo oLink.Save >> CreateShortcut.vbs
cscript CreateShortcut.vbs
del CreateShortcut.vbs
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.11.2023, 10:51
Ответы с готовыми решениями:

Автоматизация задачи через bat или подобное
Привет, знатокам своего дела. У меня такая вот просьба: Есть dll файл, содержащий буквы, цифры и NUL (не знаю, что это такое, но возможно...

Рабочая папка ярлыка в bat файлах
Есть файл в некоторой папке. Допустим D:\Новая папка\example.exe В другой папке создан ярлык на этот файл. D:\Новая папка2\File.lnk Мне...

CMD/BAT: Узнать параметры ярлыка
Приветствую! Нужно узнать параметр (т.е. зачастую это "C:\LOLKEK\app.exe -browser") ярлыков на рабочем столе (всех). Т.е. просто...

16
6969 / 2863 / 1100
Регистрация: 06.06.2017
Сообщений: 9,715
22.11.2023, 11:20
Цитата Сообщение от michaelmich Посмотреть сообщение
нужно каким то образом указывать относительное название файла
Зачем, если путь к рабочему столу и так можно получить?
Цитата Сообщение от michaelmich Посмотреть сообщение
...чеклист_202311*.xlsx"
Конкретнее. Что там спереди? Формат у даты yyyyMMdd или yyyyMd?
Цитата Сообщение от michaelmich Посмотреть сообщение
Через бат вызывается временный vbs и потом он удаляется.
И зачем же такая глупость, если можно сразу использовать vbs?
0
0 / 0 / 0
Регистрация: 29.01.2014
Сообщений: 30
22.11.2023, 11:24  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
И зачем же такая глупость, если можно сразу использовать vbs?
Без понятия, нашел в интернете
Цитата Сообщение от FlasherX Посмотреть сообщение
Зачем, если путь к рабочему столу и так можно получить?
Так не к рабочему столу, а файлу. Принцип в том, что нужно создать ярлык к файлу, название которого неизвестно (точнее известно частично и плюс известно точное его расширение)
Цитата Сообщение от FlasherX Посмотреть сообщение
yyyyMMdd
Оно
0
6969 / 2863 / 1100
Регистрация: 06.06.2017
Сообщений: 9,715
22.11.2023, 11:45
Цитата Сообщение от michaelmich Посмотреть сообщение
Так не к рабочему столу, а файлу.
Путь к файлу — это путь рабочего стола. Зачем тут относительный путь, который никак не касается имени файла?
Цитата Сообщение от michaelmich Посмотреть сообщение
точнее известно частично
Т. е. <любые символы>чеклист<yyyyMMdd>.xlsx?
0
524 / 345 / 143
Регистрация: 21.09.2016
Сообщений: 1,318
22.11.2023, 11:58

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
cd c:\MyApp
echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut.vbs
echo sLinkFile = "%userprofile%\Desktop\MyApp.lnk" >> CreateShortcut.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut.vbs
echo oLink.TargetPath = "C:\MyApp\MyApp%Date:~6,4%%Date:~3,2%%Date:~0,2%.bat" >> CreateShortcut.vbs
echo oLink.WorkingDirectory = "C:\MyApp" >> CreateShortcut.vbs
echo oLink.Description = "My Application" >> CreateShortcut.vbs
echo oLink.IconLocation = "C:\MyApp\MyApp48.bmp" >> CreateShortcut.vbs
echo oLink.Save >> CreateShortcut.vbs
cscript CreateShortcut.vbs
del CreateShortcut.vbs
0
0 / 0 / 0
Регистрация: 29.01.2014
Сообщений: 30
22.11.2023, 12:12  [ТС]
FlasherX, ну если говорить о путе ярляка, то да, - он должен быть создан на рабочем столе, а вот имя файла (именно имя, не путь) известно частично.
Цитата Сообщение от FlasherX Посмотреть сообщение
Т. е. <любые символы>чеклист<yyyyMMdd>.xlsx?
Известна папка и начало имени, а дата в имени меняется, правильно
0
6969 / 2863 / 1100
Регистрация: 06.06.2017
Сообщений: 9,715
22.11.2023, 12:25
Цитата Сообщение от michaelmich Посмотреть сообщение
Известна папка и начало имени
Тогда троеточие там лишнее. Забудьте про батник. Checklist.vbs:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Const LeftName = "Чеклист", LNK = "Чеклист.lnk"
'——————————————————————————————————————————————
Set oDesk  = CreateObject("Shell.Application").NameSpace(0)
Set oItems = oDesk.Items: oItems.Filter 73920, LeftName & Year(Date) &_
Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2) & ".xlsx"
If oItems.Count = 0 Then MsgBox "Сегодняшний чеклист пока отсутствует!", 262192: WSH.Quit
CreateObject("Scripting.FileSystemObject").CreateTextFile oDesk.Self.Path & "\" & LNK, 1
With oDesk.ParseName(LNK).GetLink
   .Path = oItems.Item(0).Path: .Save
End With
Set oItems = Nothing: Set oDesk = Nothing
0
2802 / 500 / 120
Регистрация: 26.09.2020
Сообщений: 944
Записей в блоге: 5
22.11.2023, 13:11
А если с PowerShell…
Создать ярлык и в поле объект — команду:
Code
1
powershell.exe -c start """К:\Файлу путь\чеклист_$(Get-Date -Format "yyyyMMdd").xlsx"""
0
6969 / 2863 / 1100
Регистрация: 06.06.2017
Сообщений: 9,715
22.11.2023, 13:16
Цитата Сообщение от iNNOKENTIY21 Посмотреть сообщение
А если с PowerShell
Дык с первыми тормозами это ещё хуже.
0
2802 / 500 / 120
Регистрация: 26.09.2020
Сообщений: 944
Записей в блоге: 5
22.11.2023, 13:34
Цитата Сообщение от FlasherX Посмотреть сообщение
Дык с первыми тормозами это ещё хуже.
Вы все ещё на 7 (ОС, Поколение ЦПУ, hdd…)?
А так, без лишнего создания файлов, ресурс ssd экономим

Добавлено через 9 минут
FlasherX, честно говоря, я думал Вы не пойдете на поводу у ТС и сделаете один скрипт лаунчер, рядом с файлом, подставляющий дату в путь и ярлык вызывающий этот лаунчер, один раз создать и пользоваться.
Хотел сделать, но пошик милее, а vbs надо осиливать, так не помню
0
6969 / 2863 / 1100
Регистрация: 06.06.2017
Сообщений: 9,715
22.11.2023, 13:51
iNNOKENTIY21, а что, на 8/10/11 powershell потерял консоль и тормоза при первых петухах?

Цитата Сообщение от iNNOKENTIY21 Посмотреть сообщение
один раз создать и пользоваться
Согласен, но меня смутило это:
Цитата Сообщение от iNNOKENTIY21 Посмотреть сообщение
и ярлык вызывающий этот лаунчер
Т. е. надо ещё иконку искать и т. д. Себе бы я и по-вашему не делал, потому что рабочий стол у меня — только картинка для любования и ланчбар. Раньше были модные x-виджеты, но потом и они мне надоели.
0
2802 / 500 / 120
Регистрация: 26.09.2020
Сообщений: 944
Записей в блоге: 5
22.11.2023, 13:53
Цитата Сообщение от FlasherX Посмотреть сообщение
только картинка для любования и ланчбар
аналогично, иконы вааще не показываются.

Цитата Сообщение от FlasherX Посмотреть сообщение
на 8/10/11 powershell потерял консоль и тормоза при первых петухах?
Нет конечно, куда он без консоли, хотя на 11 оно теперь в терминал по умолчанию.
На ней же, 11, скорости прибавил первый старт, но все равно медленнее cmd в том же терминале, хотя уже не успевашеь раздражение поймать, только заметить
0
6969 / 2863 / 1100
Регистрация: 06.06.2017
Сообщений: 9,715
22.11.2023, 14:05
Цитата Сообщение от iNNOKENTIY21 Посмотреть сообщение
но все равно медленнее cmd в том же терминале, хотя уже не успевашеь раздражение поймать, только заметить
.NET по определению никак не может быть быстрее или таким же, но в новых версиях они могут при старте подгружать нужные модули для ускорения, что скажется на скорости загрузки ОС. А рездражение всё равно от мелькания чёрного окна никуда не денется. Какая же тут милость? ) По этой совокупности wscript для быстрых задачек и выбираем.
0
0 / 0 / 0
Регистрация: 29.01.2014
Сообщений: 30
27.11.2023, 00:07  [ТС]
Цитата Сообщение от Garic73 Посмотреть сообщение
Windows Batch file
Спасибо, это решение покащалось оптимальным. Во первых старый добрый бат, а во вторых именно в этом и была вся загвоздка -
Цитата Сообщение от Garic73 Посмотреть сообщение
%Date:~6,4%%Date:~3,2%%Date:~0,2%
Вообще понять бы, что это и с чем это едят. Где можно подробнее узнать про этот метод?
0
6969 / 2863 / 1100
Регистрация: 06.06.2017
Сообщений: 9,715
27.11.2023, 05:31
Цитата Сообщение от michaelmich Посмотреть сообщение
это решение покащалось оптимальным
Не знаю, что там могло покащзаться, но оптимальным оно не является.
В старом добром vbs не нужно: создавать запускать и удалять другой скрипт, писать путь к рабочему столу, который можно изменить программно или через свойства, менять/указывать путь к рабочей и целевой папкам, менять/писать путь к иконке, потому что xlsx-файл уже имеет свою ассоциированную.

Цитата Сообщение от michaelmich Посмотреть сообщение
Вообще понять бы, что это и с чем это едят.
А это последнее, почему про оптимальность тут речь не идёт. Идём в региональные настройки, меняем краткий формат даты, например на dd/MM/yy, и всё накрывается медным тазом.
0
524 / 345 / 143
Регистрация: 21.09.2016
Сообщений: 1,318
27.11.2023, 09:11
Цитата Сообщение от michaelmich Посмотреть сообщение
Где можно подробнее узнать про этот метод?
жмете в окне cmd set /? затем пробел и читаете. Но в данном вопросе, я по прислушался к советам FlasherX,
0
 Аватар для CopBuroJLoBa
150 / 132 / 53
Регистрация: 03.01.2017
Сообщений: 472
27.11.2023, 09:49
Цитата Сообщение от michaelmich Посмотреть сообщение
что это
GPT: Эта команда используется для получения текущей даты в формате ГГГГММДД в командной строке Windows (cmd/bat).

Команда состоит из трех частей: %Date:~6,4%, %Date:~3,2% и %Date:~0,2%.

%Date% - это переменная окружения, которая содержит текущую дату в формате, заданном в настройках операционной системы.

:~6,4 - это синтаксис для извлечения подстроки из переменной окружения. Здесь мы указываем, что нужно взять подстроку, начиная с 6-го символа и длиной 4 символа. В результате получаем год (ГГГГ).

:~3,2 - аналогично, здесь мы указываем, что нужно взять подстроку, начиная с 3-го символа и длиной 2 символа. В результате получаем месяц (ММ).

:~0,2 - здесь мы указываем, что нужно взять подстроку, начиная с 0-го символа и длиной 2 символа. В результате получаем день (ДД).

Таким образом, команда %Date:~6,4%%Date:~3,2%%Date:~0,2% возвращает текущую дату в формате ГГГГММДД.

Bash
1
2
3
4
5
%Date%
"27.11.2023"
 
%Date:~6,4%%Date:~3,2%%Date:~0,2%
"20231127"
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.11.2023, 09:49
Помогаю со студенческими работами здесь

Создание bat файла для создания не пустых текстовых файлов в папке, указанной пользователем через цикл for
Нужно сделать так, чтобы пользователь вводил название папки, а в этой папке создавалось несколько НЕ ПУСТЫХ текстовых файлов через цикл...

Как экранировать кавычки в bat файле или же создать .bat для создания ярлыков?
Нужно размножить ярлыки с разными параметрами запуска(профиля для chrome) у меня не получается кавычки экранировать в бат файле Вот...

Переименование имени ярлыка (shortcut) программно, посредством bat файла
Я пробывл использовать команду ren, но она работает только для файлов и папок. Подскажите, пожалуйста, как программно, например, имя...

Скрипт создания ярлыка
необходимо написать скрипт для создания ярлыка, проблема возникла с oShellLink.TargetPath. Не принимается имя. Просьба помочь создать ярлык...

Функция для создания ярлыка
Нарыл на просторах киберфорума вот такой код: #include &lt;iostream&gt; #include &lt;shlobj.h&gt; #include &lt;ObjIdl.h&gt; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru