找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21381|回复: 5

[系统相关] 自己写的一个监视磁盘插入和拔出的批处理,求优化

[复制链接]
发表于 2012-6-10 11:00:02 | 显示全部楼层 |阅读模式
本帖最后由 cb02356828 于 2012-6-12 20:30 编辑

  1. @echo off&title 磁盘插拔监视程序 by Mr.He
  2. setlocal enabledelayedexpansion
  3. echo,
  4. echo,  监视磁盘变动情况,如有U盘、光盘、移动硬盘等连接电脑或拔出,本程序就
  5. echo,  将其盘符和卷标记录下来,通过记录可以大致了解什么人在你的电脑上插过。
  6. echo,&echo,  记录实时保存在桌面的 plugmon.log 文件,可用记事本打开。
  7. echo,&echo,   Created by Mr.He   Email: cb02356828@163.com   update: 2012-06-10
  8. echo,&echo,  以下是实时监视记录:&echo,-----------------------------

  9. rem 初始化设置
  10. :ini
  11. set lgf="%userprofile%\desktop\plugmon.log"
  12. set lg=echo^>^>%lgf%
  13. set disks=G H I J K L M N O P Q R S T U V W X Y Z
  14. set p=p
  15. set n=n
  16. set l=l

  17. rem 初始化磁盘存在与否的判断
  18. :start
  19. for %%e in (%disks%) do (
  20.   if exist "%%e:" (
  21.      rem 获取磁盘卷标
  22.      for /f "tokens=3,*delims= " %%a in ('vol %%e: 2^>nul') do (
  23.          set %%e%l%=%%b
  24.      )
  25.      set %%e%p%=1
  26.   ) else (
  27.      set %%e%p%=0
  28.   )
  29.      set %%e%p%=!%%e%p%!
  30. )

  31. rem 循环监视各磁盘存在与否,并写入变量,与之前的状态对比得出其变化状态
  32. :mon
  33. for %%i in (%disks%) do (
  34.    if exist "%%i:" (
  35.        set %%i%n%=1
  36.        if !%%i%p%! equ 0 (
  37.            for /f "tokens=3,*delims= " %%c in ('vol %%i: 2^>nul') do (
  38.                 set %%i%l%=%%d
  39.            )
  40.            echo   At %time% Loaded Drive [%%i:\^] !%%i%l%!.
  41.            %lg% At %date% %time% Loaded Drive [%%i:\^] !%%i%l%!.
  42.        )
  43.    ) else (
  44.        set %%i%n%=0
  45.        if !%%i%p%! equ 1 (
  46.            echo   At %time% Unloaded Drive [%%i:\^] !%%i%l%!.
  47.            %lg% At %date% %time% Unloaded Drive [%%i:\^] !%%i%l%!.
  48.        )
  49.    )
  50.        set %%i%p%=!%%i%n%!
  51. )
  52. timeout /t 3 >nul&goto mon

复制代码
发表于 2012-6-10 11:29:11 | 显示全部楼层
你是Win7系统?XP用户表示木有timeout命令
 楼主| 发表于 2012-6-10 11:55:50 | 显示全部楼层
XP系统可以用ping延时:
  1. timeout /t 3 >nul&goto mon
复制代码
换成
  1. ping /n 3 127.1 >nul&goto mon
复制代码
发表于 2012-6-10 13:06:14 | 显示全部楼层
发表于 2012-6-10 13:51:18 | 显示全部楼层
set disks=G H I J K L M N O P Q R S T U V W X Y Z
为什么是从G开始呢?求讲姐
 楼主| 发表于 2012-6-10 14:25:42 | 显示全部楼层
我的C、D、E、F是硬盘分区,一般不会发生变化,除非chkdsk等需要卸载的时候
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 04:56 , Processed in 0.018095 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表