中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-06 08:14
48,039 主题排行 / 350,124 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]批处理列出所有开机启动项
可打印版本  1,275 / 8
第1楼 fjcyz 发表于 2007-11-01 20:00
初级用户 发帖 36 积分 68
[求助]批处理列出所有开机启动项
如题:


或者列出注册表相关键值
第2楼 luckboy45 发表于 2007-11-01 20:35
中级用户 发帖 212 积分 487
下面是JM写的代码,可能对你有用!~

@echo off
:: 考虑到程序并非都安装在系统盘下,所以还要用!str:~-1!来截取盘符
:: 如果路径中含有N个中文字符的话,此路径的最后N个字符将不显示(一个中文字符占两个字符位)
:: code by jm 2006-7-27
setlocal enabledelayedexpansion
echo.
echo 开机自启动的程序有:
echo.
for /f "skip=4 tokens=1* delims=:" %%i in ('reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run') do (
set str=%%i
set var=%%j
set "var=!var:"=!"
if not "!var:~-1!"=="=" echo !str:~-1!:!var!
)
pause>nul
第3楼 everest79 发表于 2007-11-02 10:44
金牌会员 发帖 1,127 积分 2,564
第4楼 lxmxn 发表于 2007-11-02 12:22
版主 发帖 4,938 积分 11,386
everest79兄的代码很有特色,已经形成自己的风格了哈,暂一个。
第5楼 fjcyz 发表于 2007-11-02 13:54
初级用户 发帖 36 积分 68
FOR %%i IN (ALLUSERSPROFILE;USERPROFILE) DO CALL DIR /B /S "%%%%i%%\「开始」菜单\程序\启动"

这句 CALL 跟 %%%%i%% 的作用是什么?


我改成这样子就不行了

FOR %%i IN (ALLUSERSPROFILE;USERPROFILE) DO ( DIR /B /S "%%%%i%%\「开始」菜单\程序\启动" )

[ Last edited by fjcyz on 2007-11-2 at 01:56 PM ]
第6楼 fjcyz 发表于 2007-11-02 15:21
初级用户 发帖 36 积分 68
麻烦3楼解释一下各条批处理的作用,看的头都晕了.
第7楼 fjcyz 发表于 2007-11-02 18:47
初级用户 发帖 36 积分 68
@ECHO OFF

ECHO 用户启动项 >%TEMP%\a.txt
dir /b /s "%USERPROFILE%\「开始」菜单\程序\启动" >>%TEMP%\a.txt
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run | findstr /v /C:"! REG.EXE VERSION" /C:"HKEY_CURRENT_USER" >>%TEMP%\a.txt
reg query HKCU\Software\Microsoft\Windows" "NT\CurrentVersion\Windows /v load | findstr /v /C:"! REG.EXE VERSION" /C:"HKEY_CURRENT_USER" >>%TEMP%\a.txt
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce | findstr /v /C:"! REG.EXE VERSION" /C:"HKEY_CURRENT_USER" >>%TEMP%\a.txt
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run | findstr /v /C:"! REG.EXE VERSION" /C:"HKEY_CURRENT_USER" >>%TEMP%\a.txt

reg query HKCU\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce | findstr /v /C:"! REG.EXE VERSION" /C:"HKEY_CURRENT_USER" >>%TEMP%\a.txt
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\RunServices | findstr /v /C:"! REG.EXE VERSION" /C:"HKEY_CURRENT_USER" >>%TEMP%\a.txt
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup | findstr /v /C:"! REG.EXE VERSION" /C:"HKEY_CURRENT_USER" >>%TEMP%\a.txt
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnceEx | findstr /v /C:"! REG.EXE VERSION" /C:"HKEY_CURRENT_USER" >>%TEMP%\a.txt

ECHO 全局启动项 >>%TEMP%\a.txt
DIR /B /S "%ALLUSERSPROFILE%\「开始」菜单\程序\启动" >>%TEMP%\a.txt
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run | findstr /v /C:"! REG.EXE VERSION" /c:"HKEY_LOCAL_MACHINE" >>%TEMP%\a.txt
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce | findstr /v /C:"! REG.EXE VERSION" /c:"HKEY_LOCAL_MACHINE" >>%TEMP%\a.txt
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run | findstr /v /C:"! REG.EXE VERSION" /c:"HKEY_LOCAL_MACHINE" >>%TEMP%\a.txt
reg query HKLM\SOFTWARE\Microsoft\Windows" "NT\CurrentVersion\Winlogon /v Shell | findstr /v /C:"! REG.EXE VERSION" /c:"HKEY_LOCAL_MACHINE" >>%TEMP%\a.txt
reg query HKLM\SOFTWARE\Microsoft\Windows" "NT\CurrentVersion\Winlogon /v Userinit | findstr /v /C:"! REG.EXE VERSION" /c:"HKEY_LOCAL_MACHINE" >>%TEMP%\a.txt

reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce | findstr /v /C:"! REG.EXE VERSION" /c:"HKEY_LOCAL_MACHINE" >>%TEMP%\a.txt
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices | findstr /v /C:"! REG.EXE VERSION" /c:"HKEY_LOCAL_MACHINE" >>%TEMP%\a.txt
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\Setup | findstr /v /C:"! REG.EXE VERSION" /c:"HKEY_LOCAL_MACHINE" >>%TEMP%\a.txt
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx | findstr /v /C:"! REG.EXE VERSION" /c:"HKEY_LOCAL_MACHINE" >>%TEMP%\a.txt
if exist %TEMP%\b.txt del /f %TEMP%\b.txt
for /f "delims=" %%i in (%TEMP%\a.txt) do echo %%i >>%TEMP%\b.txt
CLS
type %TEMP%\b.txt
pause >nul


本人写的开机启动项,代码还没经过优化,画面杂了一点.

[ Last edited by fjcyz on 2007-11-2 at 06:52 PM ]
第8楼 everest79 发表于 2007-11-02 19:39
金牌会员 发帖 1,127 积分 2,564
Originally posted by lxmxn at 2007-11-2 12:22 PM:
everest79兄的代码很有特色,已经形成自己的风格了哈,暂一个。

原来写的呀,哈哈,一直找不到借口贴上来
第9楼 everest79 发表于 2007-11-02 20:06
金牌会员 发帖 1,127 积分 2,564
Originally posted by fjcyz at 2007-11-2 03:21 PM:
麻烦3楼解释一下各条批处理的作用,看的头都晕了.


我用的也是通过注册表来查询,不过采用了格式化输入输出,同时用了大量的变量代替正常代码,所以看起来很复杂,你可以打开回显后观察

你上一个问题解释起来太费脑筋,论坛有相关贴子 主题应是 call 变量 延迟
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023