
У меня есть два пакетных файла ниже, которые я хочу преобразовать в Powershell.
У меня bat1.bat связан с расширением файла, поэтому, когда я дважды щелкаю по этому расширению, выполняется bat1.bat, а первым параметром является имя файла, по которому был выполнен двойной щелчок.
Зачем использовать 2 bat-файла? Ну, если я просто использую bat2, то открываю командное окно и вижу его до тех пор, пока не закроется финальная программа. Используя 2 bat-файла выше, я получаю только значок на панели задач (от которого я хочу избавиться). Что приводит меня к тому, почему я хочу перейти на Powershell. Я хочу иметь возможность дважды щелкнуть по одному из файлов и заставить PS открыть программу Access, не имея значка или какой-либо визуальной индикации вообще. Таким образом, похоже, что моя программа Access — это программа, которая обрабатывает файлы с этим расширением.
Bat1.bat
@echo off
@START /MIN c:\temp\bat2.bat %1
exit
Bat2.bat
@echo off
"c:\temp\Test.accdb" /cmd %1
exit
решение1
Я сейчас не за компьютером, чтобы это проверить, но не могли бы вы просто связать расширение файла с bat-файлом, который запускает следующее?
@start "Access wrapper" "c:\temp\Test.accdb" /cmd %1
Я полностью за переход на PowerShell, но изначально ваш пакетный файл будет работать быстрее, и если я правильно помню, вы можете передать известный тип файла (например, файл accdb) команде "start", и она сама определит, чем его открыть (например, Access), а затем перейдет к следующей строке в скрипте (если только вы не передадите "/wait"). Поскольку в скрипте не будет следующей строки, скрипт и его окно просто исчезнут.
Думаю, можно было бы полностью удалить всю эту партию, внеся некоторые творческие изменения в реестр, но сейчас я не за компьютером, чтобы это проверить, и не хочу, чтобы кто-то ковырялся в реестре, основываясь только на непроверенных отрывках из моей памяти.