中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教:如何根据文件里的字符,自动创建目录。【已基本解
作者:
标题: 请教:如何根据文件里的字符,自动创建目录。【已基本解 上一主题 | 下一主题
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『楼 主』:  请教:如何根据文件里的字符,自动创建目录。【已基本解

请教:如何根据文件里的字符,自动创建目录。
缘由:自定义路径及文件名,用ghost来自动备份系统。
1),有设置文件set.ini
里面只有这样一行内容:
1:5:\backup\sys.gho  [这行字符可自行定义]

2),有gdisk生成的硬盘分区文件 hd1.txt
里面内容如下(例):
Disk  Partitions  Cylinders  Heads  Sectors  Mbytes  Model
  1        7        14593     255      63  114473.5  ST3120026AS

Partition  Status   Type     Volume Label   Mbytes   System   Usage
C:  1        A    PRIMARY                  7538.3  NTFS/HPFS   7%
     2        H    PRIMARY                  7467.7  NTFS/HPFS   7%
     3             EXTENDED                99464.9             87%
D:  4             LOGICAL                 10001.4  NTFS/HPFS   9%
E:  5             LOGICAL                 15006.0  NTFS/HPFS  13%
F:  6             LOGICAL    APPZ         30004.2  FAT32      26%
G:  7             LOGICAL                 44453.3  NTFS/HPFS  39%

要求:
根据设置文件及hd1.txt,知道1:5就是Windows下的F盘,如果F盘不存在backup目录的话,自动建立F:\backup这个目录。 Win2k/winXP下用

不知道我的问题讲清楚没有。谢谢各位!
==============================
上面的问题,变通后,已基本自行解决。

[ Last edited by lianjiang2004 on 2006-11-20 at 08:01 AM ]



Windows 一键还原
http://www.yjhy.com
2006-11-20 05:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
0451lym
高级用户





积分 760
发帖 357
注册 2005-10-10
状态 离线
『第 2 楼』:  

终于碰到一个同样问题的哥们了,这个好象不是最佳办法!

2006-11-20 09:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
0451lym
高级用户





积分 760
发帖 357
注册 2005-10-10
状态 离线
『第 3 楼』:  

gdisk %a% > a:\DISK.TXT
del a:\1.bat
find ":  5" a:\DISK.TXT  >  a:\1.bat
a:\1.bat
if not exist backup  md backup

[ Last edited by 0451lym on 2006-11-20 at 09:49 AM ]

2006-11-20 09:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
0451lym
高级用户





积分 760
发帖 357
注册 2005-10-10
状态 离线
『第 4 楼』:  

E:  5             LOGICAL                 15006.0  NTFS/HPFS  13%

这句当批处理执行后,会自动跳转盘符.虽然是错误的使用,但是却是最直接的!
如果感觉不妥当还可以用其他的小命令来提取盘符!

2006-11-20 09:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
0451lym
高级用户





积分 760
发帖 357
注册 2005-10-10
状态 离线
『第 5 楼』:  

如果全是对于NTFS磁盘操作还可以用omnifs来完成!

omnifs   MSDIR 1.4:\backup

但是omnifs唯一遗憾的是对FAT32大分区不识别!
如果识别的话就好了,那就可以在任意分区建立目录,而不用gdisk来回调用!

2006-11-20 09:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
0451lym
高级用户





积分 760
发帖 357
注册 2005-10-10
状态 离线
『第 6 楼』:  

如果有高手把1:? 的格式弄进COMMAND就好了。
这样可以直接这样操作:MD 1:1  backup

2006-11-20 09:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 7 楼』:  

你这不是自动读取set.ini文件实现的。
很显然,我改成1:3:\sysback\winxp.gho时,你还得改批处理。
=====================
我原来set.ini里是设定成1:5:\backup\sys.gho形式,这样可以直接创建批处理,
但是遇到非根目录时,需要手动先建目录问题。不知如何解决。

没办法,我把一行分成几行,分别设定分区号,目录,文件名,把它们赋给3个变量。就成这样了下面这样。(尽管ghost -dd运行时间比较长,考虑到使用方便些,改成找GHSTSTAT.TXT里的了)
rem 完整路径:1:5:\sysback\sys.gho

rem 保存分区(如1:4)
set fenqu=1:5

rem 保存目录(如\sysback)
set mulu=\sys

rem 保存文件名(如sys.gho)
set wenjian=sys.gho

找出分区号对应的盘符,然后建目录。并行成批处理。

[ Last edited by lianjiang2004 on 2006-11-20 at 10:39 AM ]

2006-11-20 10:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
0451lym
高级用户





积分 760
发帖 357
注册 2005-10-10
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by lianjiang2004 at 2006-11-20 10:25:
你这不是自动读取set.ini文件实现的。
很显然,我改成1:3:\sysback\winxp.gho时,你还得改批处理。

晕,用变量带入呀!
set x=1
set y=2

%x%:%y%:\sysback\winxp.gho

[ Last edited by 0451lym on 2006-11-20 at 10:34 AM ]

2006-11-20 10:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
0451lym
高级用户





积分 760
发帖 357
注册 2005-10-10
状态 离线
『第 9 楼』:  

这是我刚才测试用的:
gdisk 1 > a:\DISK.TXT
if  exist a:\1.TXT  del a:\1.TXT
find ":  6" a:\DISK.TXT  >  a:\1.TXT
GetInfo.com /g:2,a:\1.TXT
%thestring%
if not exist 0451lym  md 0451lym


成功,但是如果挂起NTFS驱动就麻烦了.在DISK.TXT中所有硬盘盘符都不会显示的!
所以要结合omnifs使用!

总共用到4个小软件:
1、gdisk:不用说了都知道!
2、find:读取文本行!
3、GetInfo.com:指定读取文本行,并且设为变量。因为find写入文件很讨厌,多出一行来!(---------------- DISK.TXT)
4、omnifs:对NTFS等分区直接写入操作!


我去DOS在试试去!

[ Last edited by 0451lym on 2006-11-20 at 10:49 AM ]

2006-11-20 10:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 10 楼』:  

我设定的是在windowsxp/2k下操作(因为备份时系统肯定是好的),首先根据设定建立目录,生成批处理,把这批处理拷贝到指定位置c:,然后启动到DOS,找到后执行这个批处理进行备份或恢复。

[ Last edited by lianjiang2004 on 2006-11-20 at 10:56 AM ]

2006-11-20 10:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
0451lym
高级用户





积分 760
发帖 357
注册 2005-10-10
状态 离线
『第 11 楼』:  

呵呵,我考虑的是在DOS下引入,所以有些出入!
太晚了,先睡觉去了,改天在接着研究!哥们你也早点休息吧,看看论坛有没有高手可以解决!

[ Last edited by 0451lym on 2006-11-20 at 11:11 AM ]

2006-11-20 10:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 12 楼』:  


@echo off
setlocal ENABLEDELAYEDEXPANSION
    for /f "delims=: tokens=1-3" %%i in (set.ini) do (
        set disk=%%i
        set partition=%%j
        set "the_path=%%k"
    )
    for /f "tokens=1,2" %%i in (hd1.txt) do set "%%j=%%i !%%j!"
    for /f "tokens=%disk%" %%i in ("!%partition%!") do set drive=%%i
    echo 磁盘:        %disk%
    echo 分区:        %partition%
    echo 路径:        %the_path%
    echo 盘符:        %drive%
    md %drive%%the_path% || echo 建立目录失败!
    rd %drive%%the_path% || echo 建立目录失败!
pause
goto :eof
1.由于不知道多硬盘存在的情况下fd1.txt的格式,所以按照想象对其做出的相关处理。
2.没有2k系统,所以并未测试2k下运行的情况。

2006-11-20 13:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 13 楼』:  

谢谢版主,
多硬盘没关系,因为运行gdisk时,要先指定硬盘号来生成hd1.txt。
能不能解释一下这两行的含义?
for /f "tokens=1,2" %%i in (hd1.txt) do set "%%j=%%i !%%j!" for /f "tokens=%disk%" %%i in ("!%partition%!") do set drive=%%i

另外,就是gdisk里的6,在ghost里是1:5,(ghost里不计扩展分区的号,),这个问题能解决更好,不能解决的话,我用GHSTSTAT.TXT来确定。
-------------
要求:
根据设置文件及hd1.txt,知道1:5就是Windows下的F盘,如果F盘不存在backup目录的话,自动建立F:\backup这个目录。
----------------

[ Last edited by lianjiang2004 on 2006-11-20 at 10:31 PM ]

2006-11-20 21:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 14 楼』:  

运行gdisk是在纯DOS下进行的吗?纯DOS下FOR 是没有参数的



我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2006-11-21 00:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 15 楼』:  

不是,是在windows下进行的,目的就是根据设定,自动创建设置目录,再进行ghost备份,否则就要手动建目录,或者直接就备份在根目录下。

2006-11-21 02:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: