中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 分享:自动导出光盘目录并汇总至指定文件
作者:
标题: 分享:自动导出光盘目录并汇总至指定文件 上一主题 | 下一主题
muddle
初级用户





积分 22
发帖 8
注册 2006-11-24
状态 离线
『楼 主』:  分享:自动导出光盘目录并汇总至指定文件

在各位版主和联盟精华贴的帮助下
终于完成自动导出光盘目录并汇总的P处理。

功能:
1.判断光盘编号是否为数字
2.生成完后编号自动加1
3.判断汇总文件是否存在
4.光盘读盘错误判断
5.自动去掉 DIR 所列内容前后的盘符信息

无法发附件,只好贴代码了。
代码如下:

@echo off
color e

:setp1
  cls
  set dpath=d:\零碎
  set fname=客人资料
  set ppath=f:
  set tmp1=%random%

:chkinput
  set /p num1=请输入当前的光盘编号:
  echo %num1%|findstr "^[0-9]*$"||goto num1error

:backup
  cls
  if exist %dpath%\%fname%.txt (copy %dpath%\%fname%.txt %dpath%\%fname%.bak /y) else goto fileerror

:setp2
  cls
  echo =================================
  echo 当前光盘编号为  %num1%  
  echo =================================
  echo .
  set /p num2=按 Y 开始生成文件,按 N 退出,其它键重新输入。
  if /i "%num2%"=="n" goto exit
  if /i "%num2%"=="y" (goto chk) else goto chkinput

:chk
  dir %ppath%|findstr "^[0-9]" >%temp%\%tmp1%.txt

:setp3
  for %%i in (%temp%\%tmp1%.txt) do set tmp2=%%~zi
  if %tmp2%==0 goto sizeerror
  echo. >> %dpath%\%fname%.txt
  echo. >> %dpath%\%fname%.txt
  echo. >> %dpath%\%fname%.txt
  echo %num1% >> %dpath%\%fname%.txt
  echo. >> %dpath%\%fname%.txt
  type %temp%\%tmp1%.txt >> %dpath%\%fname%.txt
  cls
  echo ================================================
  echo 当前光盘 %num1% 已成功输入 %dpath%\%fname%.txt
  echo ================================================
  echo .

:setp4
  set /p num3=按 Y 编号+1并开始生成,按 N 退出。
  if /i "%num3%"=="n" goto exit
  if /i "%num3%"=="y" (goto setp5) else goto inputerror


:setp5
  set /a num1=%num1%+1
  goto setp2

:exit
  color 7
  if exist %temp%\%tmp1%.txt (del %temp%\%tmp1%.txt)
  cls
  echo ===========================
  echo ...Bye...   Powered by Fly
  echo ===========================
  goto:eof

:fileerror
  color 7
  cls
  echo ====================================
  echo %dpath% 目录下不存在  %fname%.txt  
  echo          本程序退出
  echo ====================================
  goto:eof

:inputerror
  cls
  echo ====================
  echo 输入有误,请重新输入
  echo ====================
  goto setp4

:sizeerror
  cls
  set /p num4=所导出的文本文件档长度为0。按 Y 重新读盘,其它键退出。
  if /i "%num4%"=="y" goto chk
  goto exit

:num1error
  cls
  echo ==============================
  echo 输入编号不是全数字,请重新输入
  echo ==============================
  goto chkinput

2007-11-24 14:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
muddle
初级用户





积分 22
发帖 8
注册 2006-11-24
状态 离线
『第 2 楼』:  

坐沙发先。申请加分。
另,怎么发不了附件呢?

2007-11-24 14:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zerocq
中级用户




积分 458
发帖 196
注册 2006-10-5
状态 离线
『第 3 楼』:  

tree命令也很方便哦

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





积分 22
发帖 8
注册 2006-11-24
状态 离线
『第 4 楼』:  

tree 只显示名字,显示不了日期的

2007-11-24 15:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 5 楼』:  

利用WMIC判断非空CDROM盘符
@echo off
for /f "tokens=3* delims=," %%i in ('WMIC Path Win32_LogicalDisk Get DeviceID^,FileSystem^,Description /format:csv^|find /i "CD-ROM"^|find "CDFS"') do echo %%i
pause
全部CDROM盘符
@echo off
for /f "tokens=3* delims=," %%i in ('WMIC Path Win32_LogicalDisk Get DeviceID^,FileSystem^,Description /format:csv^|find /i "CD-ROM"') do call set CDROM=%%CDROM%% %%i
echo %CDROM:~1%
pause




第一高手    第二高手

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





积分 22
发帖 8
注册 2006-11-24
状态 离线
『第 6 楼』:  

多谢fastslz指点
我只判断了读盘错误,却忘了判断是不是空盘了

2007-11-24 16:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: