中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]批处理列出所有开机启动项
作者:
标题: [求助]批处理列出所有开机启动项 上一主题 | 下一主题
fjcyz
初级用户





积分 68
发帖 36
注册 2006-12-20
状态 离线
『楼 主』:  [求助]批处理列出所有开机启动项

如题:


或者列出注册表相关键值

2007-11-1 20:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『第 2 楼』:  

下面是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



逍遥@浪子@反病毒
2007-11-1 20:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 3 楼』:  


@ECHO OFF
SET RQ=REG QUERY
SET CU=HKEY_CURRENT_USER
SET LM=HKEY_LOCAL_MACHINE
SET FS=FINDSTR /V /B "! HKEY_"^|FINDSTR "."
SET WS=\Software\Microsoft\Windows\CurrentVersion\
SET WT=\Software\Microsoft\Windows NT\CurrentVersion\
SET CK=\SYSTEM\CurrentControlSet\Control\Session Manager
SET RT=LoadUserinitWindowsWinlogonShellRunOnceExPolicies\Explorer\RunBootExecute
SET RP=ECHO -------------------------------------------------------------------------------

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

FOR /F "tokens=1-8 delims=: " %%A IN ('FINDSTR /B "::" "%~nx0"') DO (
    CALL :REGQUERY 1 %%A %%B %%C %%D %%E %%F %%G ">NUL"
    )
SET /A 1/%~1 2>NUL&&GOTO :EOF
SET /p CONU=导出为文本文档?(Y/N):
ECHO %CONU%|FIND /I "N" 1>NUL 2<&1&&GOTO :EOF
CALL %~nx0 1 >%~n0%.txt
ECHO file list:%~dpn0%.txt
PAUSE>NUL&"%~dpn0%.txt"
GOTO :EOF
::CU WT 12  7 V  0  4
::LM WT 19  8 V  4  8
::LM WT 19  8 V 27  5
::CU WS 32  3 S  0  0
::LM WS 32  3 S  0  0
::CU WS 32  7 S  0  0
::LM WS 32  7 S  0  0
::CU WS 32  9 S  0  0
::LM WS 32  9 S  0  0
::CU WS 41 21 S  0  0
::LM WS 41 21 S  0  0
::LM CK  0  0 V 62 11
:REGQUERY
CALL SET PR=%%%~2%%%%%~3%%%%rt:~%~4,%~5%%&CALL SET PZ=%%rt:~%~7,%~8%%
ECHO [%PR%] %~9&%RQ% "%PR%" /%6 %PZ% 2>NUL|%FS% %~9&&%RP%&&SET/A 1/%1 2>NUL&&CALL %0 0 %2 %3 %4 %5 %6 %7 %8
GOTO :EOF


   此帖被 +10 点积分     点击查看详情   
评分人:【 lxmxn 分数: +8  时间:2007-11-2 12:20
评分人:【 fjcyz 分数: +2  时间:2007-11-2 15:22


2007-11-2 10:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 4 楼』:  

everest79兄的代码很有特色,已经形成自己的风格了哈,暂一个。

2007-11-2 12:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fjcyz
初级用户





积分 68
发帖 36
注册 2006-12-20
状态 离线
『第 5 楼』:  

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 ]

2007-11-2 13:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fjcyz
初级用户





积分 68
发帖 36
注册 2006-12-20
状态 离线
『第 6 楼』:  

麻烦3楼解释一下各条批处理的作用,看的头都晕了.

2007-11-2 15:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fjcyz
初级用户





积分 68
发帖 36
注册 2006-12-20
状态 离线
『第 7 楼』:  

@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 ]

2007-11-2 18:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by lxmxn at 2007-11-2 12:22 PM:
everest79兄的代码很有特色,已经形成自己的风格了哈,暂一个。

原来写的呀,哈哈,一直找不到借口贴上来

2007-11-2 19:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by fjcyz at 2007-11-2 03:21 PM:
麻烦3楼解释一下各条批处理的作用,看的头都晕了.

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

你上一个问题解释起来太费脑筋,论坛有相关贴子 主题应是 call 变量 延迟

2007-11-2 20:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: