
bat ファイルまたは vbs ファイルは引数 (exe ファイルへのパス) を受け取り、そのファイルへのショートカットを作成してスタートアップ フォルダーに配置するか、レジストリ エントリを追加して Windows の起動時にその exe を実行できますか。
しかし、同じスクリプトを使用してスタートアップ エントリも削除できるようにしたいと考えています (すべての OS バージョンで)。
したがって、スクリプトには 2 つのパラメータ/引数を送信する必要があると思います: 1 - 起動時に実行するファイル/exe 2 - 起動時にエントリを追加するか削除するか
これは可能ですか?
答え1
まず、Vista より古いオペレーティング システムについては、レジストリ内の実行キーの場所を再確認することをお勧めします。これらのオペレーティング システムで作業してからかなり時間が経っているため、覚えていない違いがある可能性があります。
あなたの質問を正しく理解していれば、このバッチ スクリプトはあなたが望むことを実行するはずです。実行キー (スタートアップ) からプログラムを追加または削除するための簡単なメニューが提供され、プログラム名と実行可能ファイルへのパスを入力できます。
:begin
cls
@echo off
echo Program startup Utility
echo.
echo 1. Add Program to Startup
echo 2. Remove Program From Startup
echo x. Exit
set /p choice= Choose A Service:
if not '%choice%'== set %choice%=choice:~0,1%
if '%choice%'=='1' goto :addstartup
if '%choice%'=='2' goto :delstartup
if '%choice%'=='x' goto :exit
:addstartup
cls
echo/
echo/
echo Add Program to Startup
echo or type back to go to main menu
echo/
set /p keyname= Please State Program Name:
if '%keyname%'=='back' goto :begin
set /p expath= Please Enter Path to Executible:
if '%expath%'=='back' goto :begin
reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ /v %keyname% /t REG_SZ /d "%expath%"
timeout /t 3 >nul
goto begin
:delstartup
cls
echo/
echo Remove Program From Startup
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ /s
echo/
set /p keyname= Please Enter Program Name:
reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ /v "%keyname%" /f
timeout /t 3 >nul
goto begin
あるいは、同じプログラムを追加または削除するだけでよく、複数のプログラム名や exe パスを入力する必要がない場合は、次のようにスクリプトを変更し、%keyname% をプログラム名に、%expath% を実行可能ファイルへのパス (% なし) に置き換えて保存します。追加と削除の両方でキー名が同じであることを確認してください。
選択したアクションの後にスクリプトを終了するだけの場合は、「goto begin」行を「exit」行に置き換えることもできます。
:begin
cls
@echo off
echo Program startup Utility
echo.
echo 1. Add Program to Startup
echo 2. Remove Program From Startup
echo x. Exit
set /p choice= Choose A Service:
if not '%choice%'== set %choice%=choice:~0,1%
if '%choice%'=='1' goto :addstartup
if '%choice%'=='2' goto :delstartup
if '%choice%'=='x' goto :exit
:addstartup
cls
reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ /v %keyname% /t REG_SZ /d "%expath%"
timeout /t 2 >nul
goto begin
:delstartup
cls
reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ /v "%keyname%" /f
timeout /t 2 >nul
goto begin