Board logo

标题: [已结]为什么开始菜单启动文件无法删除? [打印本页]

作者: bd123456789     时间: 2008-10-21 10:22    标题: [已结]为什么开始菜单启动文件无法删除?

CODE:  [Copy to clipboard]
echo 清理开始程序启动项
setlocal enabledelayedexpansion
set a=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
for /f "delims= " %%i in ('reg query "%a%" ^| find "Startup"') do (

echo !str!
for /f "delims=" %%b in ('dir /b "!str!\程序\启动"') do (
  if %%b neq sina.url del "!str!\程序\启动\%%b")
)
pause
老是提示说 无法找到文件?也就是无法顺利删除
第二个问题是:
set str=%%i
set str=!str:*        =!
能否并成一句→
set str=!%%j:*        =!

另外,对注册表的查询,为什么有些电脑
reg query "%a%" ^| find "Startup"
能够完事显示键值?即不再需要添加 "\程序\启动"字符?

[ Last edited by HAT on 2008-10-22 at 19:23 ]
作者: liumangshiwo     时间: 2008-10-21 14:07
顶一下

请不要随意作无意义的回复,这本身就是新发的帖子,也不是下载需要积分的帖子(管理员注)
作者: moniuming     时间: 2008-10-21 23:38
问题一:
CODE:  [Copy to clipboard]
@echo off
set "var=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
for /f "tokens=2* delims=        " %%a in ('reg query "%var%"^|find /i "startup"') do (
   for /f "delims=" %%i in ('dir /b "%%b\*.*"') do (
      if /i not "%%i"=="sina.url" (echo del "%%i")
   )
)
pause
问题二:
不能
作者: HAT     时间: 2008-10-22 09:56


  Quote:
另外,对注册表的查询,为什么有些电脑
reg query "%a%" ^| find "Startup"
能够完事显示键值?即不再需要添加 "\程序\启动"字符?

XP SP2系统中的reg.exe有bug,当reg query遇到中文字符时可能会"吃字符",详见http://www.cn-dos.net/forum/viewthread.php?tid=22202

解决方案如下:
1. 用XP SP2以上的版本的操作系统(XP SP3/2003/Vista等)中的reg.exe来替换XP SP2的reg.exe
2. 调用VBS读注册表,并把返回结果传递给BAT
3. 用reg export把注册表项导出到一个临时文件,再搜索该文件,值得注意的是reg export导出的文件是Unicode编码格式,可以使用type命令进行处理

reg.exe of WinXP SP3 CS Pro
http://rthost.fam.cx/cndos-up/img/867.zip
作者: bd123456789     时间: 2008-10-22 18:53
多谢楼上各位

moniuming兄的简洁多了,配服配服

版主高深莫测,敬仰敬仰


我的代码,可能是启用的变量延迟

导致第二个FOR循环对!str!进行替换后不再对新的替换对象(这里是环境变量)没有再次被程序预读,也就是说DEL无法找到要删除的文件所致!

[ Last edited by bd123456789 on 2008-10-22 at 18:55 ]




欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) Powered by Discuz! 2.5