Board logo

标题: 请高手帮忙看一下DOS下运行批处理问题! [打印本页]

作者: terse     时间: 2007-2-1 08:30    标题: 请高手帮忙看一下DOS下运行批处理问题!

我的U盘GHO目录里有个GHOST批处理,其中有段选择盘符后就可以搜索GHO文件的处理码,进入U盘GHO目录里手动运行GHOST批处理后在搜不到GHO文件后会自动返回选择界面,但是如果我在U盘根目录下的MENU.bat文件里 CALL 运行GHO目录的GHOST批处理的话,就会在搜索不到GHO文件的时候出来个空的文件选择,这不是我想要的,我想的就是如果没有就返回选择界面!上面图是选择界面,下面的是不应该出来的,我想要的是如果没有搜索到GHO文件就回到上面图的界面的!进GHO目录运行的话下面的图就是和上图一样!

[ Last edited by terse on 2007-2-1 at 08:37 AM ]
作者: Climbing     时间: 2007-2-1 22:31
一看就是用wbat做的菜单,你直接从上级目录call目标的批处理,有可能目标批处理生成的需要用到的临时文件不在需要的目录下,看一下对方的批处理是如何编写的吧。这绝对属于批处理编写有问题。

两种运行情况的唯一区别就是当前目录不同。
作者: terse     时间: 2007-2-2 04:54
是的  是用wbat做的菜单  至于目录问题我想也就是TEMP目录  我在U盘的根目录创建一个也不行!(用cd gho 正常的)
我贴上那段搜索码 帮看一下  总是遇见Climbing的帮助  在时空论坛的也是你吧  谢了!
:rec2
echo :d_list " 选择备份文件的所在盘 "[x]>%temp%\tmp.txt
func -a9 >>%temp%\tmp.txt
call w.bat list (+white on +blue) @%temp%\tmp.txt:d_list
if errorlevel 100 goto rec1
if "%wbat%"=="" goto rec1
set gpath=%wbat%:\

echo 正在搜索 %gpath% 备份文件 ...
echo :m_dir " 选择需要恢复的备份文件 " [x]>%temp%\tmp.txt
dir %gpath%ghost\*.gho /b /s >>%temp%\tmp.txt
call w.bat list (+white on +blue) @%temp%\tmp.txt:m_dir
if errorlevel 100 goto rec2
if "%wbat%"=="" goto rec2
set gfile=%wbat%
作者: terse     时间: 2007-2-5 02:03
寻求高手帮助 谢!
作者: llztt1     时间: 2007-2-5 12:09
func -a9 >>%temp%\tmp.txt
能得出所有盘符么??
不错的啊,可否共享一下FUNC这个程序或批处理??
作者: llztt1     时间: 2007-2-5 12:26
哦,对于这个自动搜索.GHO的批处理有些怀疑实用性。。
1、现在估计没几个人还用FAT32吧,为了实现这个批处理,得加载NTFSDOS,生成必要信息文件后再退出NTFSDOS,对于NTFSDOS对中文支持很差,如果路径中有中文。。。IFSDRV中文支持不错,不过我用了WEN老大的修改版,如果读取过NTFS区数据后就不能正常退出了。。
2、一般备份文件是隐藏属性的,DIR /S倒是可以搜索隐藏属性文件,可惜如果文件在隐藏目录中,就无法搜到了,所以这样看来实用性大打折扣。

当然如果非有人说我就用FAT32或用NTFS时就用英文路径和文件名,而且就不隐藏备份文件,那倒好了。

不好意思这里跑题了哈,呵呵,只是我现在也在计划做个启动盘,包含单机GHOST批处理、加载网卡驱动网络GHOST批处理等等,最后考虑再三放弃了全盘搜索功能。。
作者: terse     时间: 2007-2-5 13:55


  Quote:
Originally posted by llztt1 at 2007-2-5 12:09:
func -a9 >>%temp%\tmp.txt
能得出所有盘符么??
不错的啊,可否共享一下FUNC这个程序或批处理??

http://terse.ys168.com/
这里传不了  我传到那了

RE:llztt1
没别的用途  只是喜欢瞎捣鼓  我上班空的时候看看  也不帮别人整机器  有时候朋友的机器看一下  呵呵!希望你的做出后  看一下?如何呢?

[ Last edited by terse on 2007-2-5 at 02:00 PM ]
作者: llztt1     时间: 2007-2-5 14:52
回头修改一下MAXDOS的BAT,MAXDOS做的不错了,修改一下更合理些,譬如单机GHOST、PACKT网卡驱动》》生成WATTCP文件》》生成GHOST命令行》》选择GHOST版本启动GHOST,再做几个调用这些BAT的BAT,譬如实现无选择界面按默认参数运行。。
哈哈,你发的这个FUNC真如其名功能够多。。

Usage:FUNC <option>
                                       PKMASTER 2003-03-14 Email:bootcd@163.com
Option:
These functions returns errorlevel 1~26 (count) or 255 (error):
    -a<style>      style=6 or 9 ; Print Drives Letters

These functions returns errorlevel 0 (succeed) or 255 (failed):
    -e[drive]      drive=A to Z ; Eject CDROM drive (Default first CDROM)
    -l[drive]      drive=A to Z ; Load CDROM drive (Default first CDROM)
    -x[drive]      drive=A to Z ; Auto Eject/Load CDROM (Default first CDROM)
    -j             Find MENU.INI in CDROM Drives
    -v             Reset video mode to 80x25 normal text mode
    -m             Initialize mouse and set cursor in the center of screen
    -n             Initialize mouse and set cursor in the (0,0) of screen
    -r             Reboot computer
    -s             Shutdown computer

These functions returns errorlevel 0 (true) or 100 (false):
    -d<drive>      drive=A to Z ; Check whether the drive is a CDROM or not
    -i<var>        Check whether the var(MaxLen=8) is a numeric or not
    -f<var>        Check whether the var(MaxLen=8) is a correct filename or not
    -w<seconds>    seconds=0 to 9999 ; Wait some seconds. Returns keycode
    ?<string>      Print string without newline
作者: 0451lym     时间: 2007-2-6 10:54


  Quote:
Originally posted by llztt1 at 2007-2-5 12:26:
哦,对于这个自动搜索.GHO的批处理有些怀疑实用性。。
...

呵呵,为什么?
你的怀疑不是不对,不过我在3个月前动了不少的脑筋,想了不少的办法,现在早就可以全盘自动搜索,全盘自动还原(不论是什么NTFS)都可以!

不过我的代码就不放出来了,说来很简单........

1、必须自动多硬盘搜索
2、必须能转化为X:Y\ 的形式
作者: llztt1     时间: 2007-2-6 11:40
呵呵,倒是愿闻其祥,怎么不再深入说一下?
1、你的具体搜索命令用的DIR /S否??如果是,怎么解决搜索在隐藏目录下的隐藏文件的问题??还有DOS访问NTFS区用的哪个驱动命令??
2、X:Y\形式,针对什么来说的哦??呵呵,不解

从另个角度考虑,譬如我们在WINDOWS下搜索某个文件,如果硬盘数据比较多,那搜索的时间可就长了,遇见搜个10分钟很正常。。
作者: 0451lym     时间: 2007-2-6 12:00


  Quote:
Originally posted by llztt1 at 2007-2-6 11:40:
呵呵,倒是愿闻其祥,怎么不再深入说一下?
1、你的具体搜索命令用的DIR /S否??如果是,怎么解决搜索在隐藏目录下的隐藏文件的问题??还有DO ...

呵呵,第1点是用的一个外部命令DIRT,可以解决你的第1个问题
第2点是重点

把盘符变成GHOST识别的1:2或者是1:4或者是2:1的形式!
既然挂上NT驱动可以找到文件,那么就好办了!(中间不用卸掉NT驱动)
例如:
找到的是C:\A.GHO
那么可以用两一个外部命令去试探的找1.2:\A.GHO
找不到在找1.3:\A.GHO等等
找到后就可以用变量引入命令中执行即可!


第2个命令自己找找吧,老运动员都知道是什么命令的!
作者: 0451lym     时间: 2007-2-6 12:05
因为DIRT可以设置搜索目录的深度,所以时间是可以限制的,一般不会把镜像文件放到2层目录以下(不排除少数人).因此时间不是问题.而且还可以设置变量来修改搜索目录的层数,这样默认是快速搜索,这样少数人可以自己去修改自己搜索的深层目录!
啊,跟绕口令似的!呵呵
作者: 0451lym     时间: 2007-2-6 12:07
:AUTOEXEC " 我的镜像恢复系统 → 06.12.03"

※※※※※※※※※※※※※※※※※※※※※※
※                                        ※
※        [!   加 载 光 驱 驱 动 ]        ※
※                                        ※
※        [!   加 载 ^NTFS 驱 动 ]        ※
※                                        ※
※※※※※※※※※※※※※※※※※※※※※※

"TAB"键=跳转  "空格键"=选中  "Esc"键=刷新

   [Y →系统桌面←]     [N →DOS命令行←]

::
:BF_0 " 我的镜像恢复系统 → 备份 %FQ% 盘!" [x]


  [X 向导]

  第 %S1% 硬盘 → 第 %S2% 分区

  备份到

  第 [$D1,1] 硬盘 → 第 [$D2,1] 分区   


  警告:"确定立即备份"将覆盖同名镜像备份,无法恢复!
___________________________________________________________

         "TAB"键=跳转  "F1~F2"=覆盖  "←"键=删除

     [ Y →确定立即备份← ]    [? Esc→返回系统桌面← ]

::
:BF_1 " 我的镜像恢复系统 → 备份 %FQ% 盘 → 向导Ⅰ" [x]


  镜像备份到

           [ A. 第 1 硬盘 ]     [ B. 第 2 硬盘 ]

       [ 第 &1 分区 ]   [ 第 &2 分区 ]   [ 第 &3 分区 ]

       [ 第 &4 分区 ]   [ 第 &5 分区 ]   [ 第 &6 分区 ]
                                                     
  提示:镜像备份到第 %D1% 硬盘 → 第 %D2% 分区! [S. 手动设置]
___________________________________________________________

    [ F → 返回上级菜单← ]     [? Esc→返回系统桌面← ]

::
:BF_2 " 我的镜像恢复系统 → 备份 %FQ% 盘 → 向导Ⅱ" [x]


  确认 %FQ% 盘位置

           [ A. 第 1 硬盘 ]     [ B. 第 2 硬盘 ]

       [ 第 &1 分区 ]   [ 第 &2 分区 ]   [ 第 &3 分区 ]

  提示:第 %S1% 硬盘 → 第 %S2% 分区为 %FQ% 盘!
                                                     
  提示:镜像备份到第 %D1% 硬盘 → 第 %D2% 分区! [Y. 确定更改]
___________________________________________________________

    [ F → 返回上级菜单← ]     [? Esc→返回系统桌面← ]

::
:GJBF_0 " 我的镜像恢复系统 → 高级备份!" [x]

  第[$S1,1]硬盘第[$S2,1]分区

  备份到

  第 [$D1,1]硬盘第 [$D2,1]分区:\[$WJ,30,U,   ].gho  [ ※显示默认名称 ]

  若填写镜像名称须符合8.3格式,并注意镜像路径是否存在!
____________________________________________________________

  压缩: [$YS,1] 级     (低压缩速度快1↓~~↑9高压缩速度慢)

  分卷: [$FJ,4,U,] MB  ("0"表示不分卷,CD刻录镜像建议为"600"MB)

    [ ※填写密码保护 ]   密码:(%M%)   [ ※取消密码保护 ]

  警告:"确定立即备份"将覆盖同名镜像备份,无法恢复!
____________________________________________________________

            TAB键=跳转  F1~F2=覆盖  "←"键=删除

     [ Y →确定立即备份← ]     [? Esc→返回系统桌面← ]

::
:GJBF_1 " 填写密码保护"[x]

输入密码: [$MM,10,P!  ]

确认密码: [$MM1,10,P!  ]      

提示: 1. Alt+F2 = 拼音输入.
          Alt+F6 = 英文输入.

       2. 最多允许输入10个字符.
         
       3. ESC键 = 取消密码保护.
        
          [ ※确定 ]

::
:GJBF_2 " 密码错误 !"[x]

密码两次输入不一致!

       [ 确定 ]

::
:HF_0 " 我的镜像恢复系统 → 恢复 %FQ% 盘!" [x]


  我要恢复

  第 %S1% 硬盘 → 第 %S2% 分区

  [X 选择镜像]

  第 [$D1,1] 硬盘 → 第 [$D2,1] 分区:[$WJ,30,U,   ].gho


  警告:系统上若有重要数据请自行处理,镜像还原后系统将归档!
___________________________________________________________

         "TAB"键=跳转  "F1~F2"=覆盖  "←"键=删除

     [ Y →确定立即恢复← ]    [? Esc→返回系统桌面← ]

::
:HF_1 " 我的镜像恢复系统 → 恢复 %FQ% 盘 → 选择镜像" [x]


  请按序号来选择镜像
  __________________

  [ 1]%WJ1%
  [ 2]%WJ2%
  [ 3]%WJ3%
  [ 4]%WJ4%
  [ 5]%WJ5%
  [ 6]%WJ6%
  [ 7]%WJ7%
  [ 8]%WJ8%
  [ 9]%WJ9%
  [1&0]%WJ10%

  提示:加载 NTFS 驱动后,可支持 NTFS 分区搜索!
___________________________________________________________


    [ F → 返回上级菜单← ]    [? Esc→返回系统桌面← ]

::
:HF_2 " 我的镜像恢复系统 → 恢复 %FQ% 盘!" [x]


  "%WJ%"

  恢复到

  第 %S1% 硬盘 → 第 %S2% 分区


  警告:系统上若有重要数据请自行处理,镜像还原后系统将归档!
___________________________________________________________

                   "Esc"=返回系统桌面  

     [ F → 返回上级菜单← ]    [ Y →确定立即恢复← ]

::
:HF_3 " 镜像搜索结果!"[x]

没有搜索到 GHO 镜像!

      [ 确定 ]

::
作者: 0451lym     时间: 2007-2-6 12:11
这是我其中的一部分,你看看就知道了,我不是骗人的了.现写是写不出这么多的!
所以,多考虑考虑,多想一想吧.
我为什么不放出代码,是因为现在所有的GHOST恢复软件都没有这个功能,呵呵!丰收的喜悦还是留给多思考的人吧!
作者: llztt1     时间: 2007-2-6 13:56
试验了一下DIRT,比较强悍的说,能搜索中文目录,隐藏目录下的文件,加上限制搜索子目录深度功能,确实很带劲。。
楼上是喜欢动脑筋搞研究的,不知有兴趣把BART的网络启动盘整合到7.1中,BART的盘使用了他那个模板,那批处理还真是难搞,我在看MAXDOS的网刻盘,不过MAXDOS的加载网卡驱动有3个驱动限制在CONFIG.SYS里了,不带劲,BART的盘就没有这限制,自动加载网卡驱动+生成MSNET的必要文件都是在批处理中完成的。。
如果通过简单添加个集成多网卡驱动的目录和批处理,就能在纯DOS下通过这个批处理实现自动加载网卡驱动,就好了
作者: 0451lym     时间: 2007-2-6 14:14
这个问题我还没研究,但是某些驱动还是在CONFIG.SYS中加的好,否则容易起冲突!
这几天比较忙,等我过几天研究研究.
哥们,你忙吧,我先睡觉去了!
作者: terse     时间: 2007-2-7 05:27


  Quote:
Originally posted by 0451lym at 2007-2-6 12:11:
这是我其中的一部分,你看看就知道了,我不是骗人的了.现写是写不出这么多的!
所以,多考虑考虑,多想一想吧.
我为什么不放出代码,是因为现在所有的 ...

看来确实强悍  能共享一下你的喜悦就好了 当然保护知识产权也是必要的  :)
作者: 0451lym     时间: 2007-2-7 15:51


  Quote:
Originally posted by terse at 2007-2-7 05:27:

看来确实强悍  能共享一下你的喜悦就好了 当然保护知识产权也是必要的  :)

呵呵,我准备过春节在把它放出来.
刚刚又修改了一下关于搜索目录层的问题!





:HF_0 " 我的镜像恢复系统 → 恢复 %FQ% 盘!" [x]


  我要恢复

  第 %S1% 硬盘 → 第 %S2% 分区

  [X 选择镜像]

  第 [$D1,1] 硬盘 → 第 [$D2,1] 分区:[$WJ,30,U,   ].gho


  警告:系统上若有重要数据请自行处理,镜像还原后系统将归档!
___________________________________________________________

         "TAB"键=跳转  "F1~F2"=覆盖  "←"键=删除

     [ Y →确定立即恢复← ]    [? Esc→返回系统桌面← ]

::
:HF_1 " 我的镜像恢复系统 → 恢复 %FQ% 盘 → 选择镜像" [x]


  请按序号来选择镜像
  __________________

  [ 1]%WJ1%
  [ 2]%WJ2%
  [ 3]%WJ3%
  [ 4]%WJ4%
  [ 5]%WJ5%
  [ 6]%WJ6%
  [ 7]%WJ7%
  [ 8]%WJ8%
  [ 9]%WJ9%
  [1&0]%WJ10%

深度搜索层数 [$ZML,2] (注意:层数越深时间越长)    [S. 深度搜索]
___________________________________________________________

      提示:加载 NTFS 驱动后,可支持 NTFS 分区搜索!

    [ F → 返回上级菜单← ]    [? Esc→返回系统桌面← ]