![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-02 12:51 |
共 48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请教:如何把文件里的字符和数字,输出给变量? |
| 可打印版本 1,150 / 9 |
| 第1楼 lianjiang2004 | 发表于 2006-11-27 00:06 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
请教:如何把文件里的字符和数字,输出给变量? 请教:如何把文件里的字符和数字,输出给变量?
文本文件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% 要求: 根据设定或输入的盘符(比如set drive=E:),检查hd1.txt,找到E:对应的分区号是5,但是要求type为EXTENDED 后的分区号要减去1,也就是说,输入E:,要求输出4,输入G:,要求输出6。 谢谢。 [ Last edited by lianjiang2004 on 2006-11-27 at 01:30 AM ] |
|
| 第2楼 redtek | 发表于 2006-11-27 00:54 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
我在论坛 “搜索” 查询到上面这个贴子楼主这是第二次发同样问题的贴子,
而且在楼主上一次发的贴子里,1楼所提及问题都已经解决过了, 为什么楼主还要再提及同样内容第二次? 请教:如何根据文件里的字符,自动创建目录。【已基本解 http://www.cn-dos.net/forum/viewthread.php?tid=24908&fpage=1&highlight=%2Blianjiang2004 如果lianjiang2004兄是忘记了上次所发的贴子,可以再加到原贴继续讨论,这样可以跟上参与讨论的思路,且不会产生再一次讨论相同问题的时间与代码上的浪费~:) [ Last edited by redtek on 2006-11-26 at 11:57 AM ] |
|
| 第3楼 lianjiang2004 | 发表于 2006-11-27 01:07 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
上次问题只是部分解决,说基本解决是因为换成其它办法,用运行ghost -dd来完成的,但是现在碰到一个新问题,用ghost -dd,生成的分区状态文件好像不能指定位置,只能在当前目录生成。这样在光盘上就没法运行,只能在硬盘上运行。但是gdisk生成的文件,可以自己制定位置,因此又想回到用gdisk来获得盘符对应的分区号,缺点是里面的分区号与ghost里的不对应,也就是把EXTENDED也分配了分区号。
这是上次问题和代码。找出的E:对应的是5, 【但是希望type为EXTENDED 后的分区号要减去1,也就是说,输入E:,要求输出4,输入G:,要求输入6。】 ------------- 请教:如何根据文件里的字符,自动创建目录。 缘由:自定义路径及文件名,用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下用 不知道我的问题讲清楚没有。谢谢各位! ----------- @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 ------------------ [ Last edited by lianjiang2004 on 2006-11-27 at 01:38 AM ] |
|
| 第4楼 namejm | 发表于 2006-11-27 02:16 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
| 第5楼 wang6610 | 发表于 2006-11-27 02:24 |
| 银牌会员 发帖 488 积分 1,246 | |
|
楼主在要纯DOS的答案吧。
[ Last edited by wang6610 on 2006-11-27 at 02:40 AM ] |
|
| 第6楼 namejm | 发表于 2006-11-27 02:28 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
我没有纯DOS下的答案^_^
|
|
| 第7楼 lianjiang2004 | 发表于 2006-11-27 02:39 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
谢谢。怎么运行后无输出结果?
Windows下的亦可。 |
|
| 第8楼 redtek | 发表于 2006-11-27 02:48 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
是纯DOS下的答案啊?
我说怎么lianjiang2004兄居然会提出这么有意思的问题呢~:) 要是纯DOS下实现取出 hd1.txt 内容,然后找到 hd1.txt 文件内指定的 %drive% 所代表的盘符, 再得到那个盘符后的数字,再计算这个数字的减1操作,然后再赋值给别一个变量,以供其它代码调用, 这一系列的纯DOS下实现……还是运行在光盘上…… (不能向只读光盘写入内容——以至实现上面操作所需的产生临时文件来间接求值的方法也不能使用了) (不能写盘操作,好象只能 DEBUG 直接写汇编可以得到上面一系列内容--我不会,嘻嘻……) ) 可以光盘启动并建一个虚拟盘,在可写的虚拟盘上操作。 ) ……其它方法…… 不知道lianjiang2004兄是否完全参阅过超过5种以上的互联网上流行的关于一键GHOST的不同网友编的和不同的方法? (那些正在流行的一键 GHOST 等太多的流行版本中或许会有第三方工具等可以借鉴) 那上面有答案,可以省去很多步骤并在很短的时间内了解更多的实现方法:) 或者发现另一些可以走的捷径和新工具以及个人开发的某种方便的间接变量操作的工具…… [ Last edited by redtek on 2006-11-26 at 01:52 PM ] |
|
| 第9楼 redtek | 发表于 2006-11-27 02:50 |
| 金牌会员 发帖 1,147 积分 2,902 | |
Originally posted by lianjiang2004 at 2006-11-26 13:39: 下面代码只是原理操作,无效验无错误判断: (即,读 hd1.txt 内容,找到指定的盘符,然后得到后面的数字,并将数字减1存到变量中以供调用) (代码运行于: CMD Shell 非纯DOS) (纯DOS下的 for 没有 "tokens...." 等这么多参数……) [ Last edited by redtek on 2006-11-26 at 01:54 PM ] |
|
| 第10楼 lianjiang2004 | 发表于 2006-11-27 04:27 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
谢谢各位,
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |