中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-04 15:18
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何才能 用FOR 把H:提出来 查看 757 回复 8
楼 主 如何才能 用FOR 把H:提出来 发表于 2007-05-13 18:19 ·  中国 新疆 塔城地区 电信
中级用户
★★
积分 354
发帖 83
注册 2003-03-23 00:00
23年会员
UID 1232
性别 男
状态 离线




这是ghost11 生成的 txt文件里的内容

想用for 把 Desc 后面的 H: 提出来 这是 第1硬盘的最后一个分区

Desc H: 1.4:

看了 FOR 的教程,还是搞不明白,能否请教一下


我借鉴的 BAT代码 是把1:4给找出来了

type ghost.bat

@Echo off
ghost -dd >NUL
set p=1
call FindLast.bat 1 2 3 4 5 6 7 8 9 10 11 12 13 14
echo LastPartition:%LastP%
echo.
echo Edit GHOST command at here ...
pause

type findlast.bat

:1
FIND /i "%p%:%1" GHSTSTAT.TXT >NUL
if errorlevel 1 goto 2
set LastP=%p%:%1
Shift
goto 1

:2
del GHSTSTAT.TXT
2 发表于 2007-05-13 19:17 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
要提取那个 H: 一行,看看它那一行和别的行有什么区别和特征,再来对症下药。

我找不到它和别的行有什么区别,貌似 [1KEYRESTORE] 是个标志?
3 发表于 2007-05-13 20:16 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
@echo off
setlocal enabledelayedexpansion
set LastP=1.4
for /f "tokens=2 delims=, " %%a in ('findstr "\<Desc.*%LastP%\>" 1.txt') do set lp=%%a
echo 最后盘符%lp%
pause
这样行吗?
你可以把你上面的P处理中:
FIND /i "%p%:%1" GHSTSTAT.TXT >NUL改为:
FIND /i "%p%.%1" GHSTSTAT.TXT >NUL
那样要是可行的话 我给的set LastP=1.4就可以不要

[ Last edited by terse on 2007-5-13 at 08:26 PM ]
4 发表于 2007-05-14 01:32 ·  中国 新疆 塔城地区 电信
中级用户
★★
积分 354
发帖 83
注册 2003-03-23 00:00
23年会员
UID 1232
性别 男
状态 离线
谢谢,两位 指点,

1.4是第一硬盘的第4个分区, 所以不能指定是1.4

我想唯一的 条件是

Desc *: 1.×:

这个× 是最大的 就是了
5 发表于 2007-05-14 02:56 ·  中国 广东 阳江 电信
初级用户
积分 39
发帖 20
注册 2007-05-14 02:07
19年会员
UID 88451
性别 男
状态 离线
学习。。。。。。。。。。。。。。。。。。。。。。
6 发表于 2007-05-14 09:34 ·  中国 上海 电信
初级用户
★★
积分 180
发帖 84
注册 2006-09-07 00:33
19年会员
UID 61995
状态 离线
@echo off

findstr /i "desc [a-zA-Z]: 1\.\d.*" a.txt>>b.txt
for /f "tokens=3 delims= " %%a in (b.txt) do (
echo %%a>>c.txt
)
sort /r c.txt>d.txt
for /f %%i in (d.txt) do (
call :findlast %%i
goto :end
)


:findlast
for /f "tokens=2 delims= " %%x in ('findstr "%1" b.txt') do echo %%x
goto :eof

:end
@del b.txt
@del c.txt
@del d.txt
7 发表于 2007-05-14 09:55 ·  IANA 局域网IP(Private-Use)
中级用户
★★
蝴蝶之吻
积分 430
发帖 177
注册 2006-09-20 12:00
19年会员
UID 63170
来自 广东深圳
状态 离线
如何将
K810-019 <00> UNIQUE Registered
里边的k810-019提取出来...????
8 发表于 2007-05-14 11:56 ·  中国 广东 广州 番禺区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
可以通过比较大小提出来。。。

path h:
path d:

通过比较 h 和 d 的大小就可以了。
知,不觉多。不知,乃求知
9 发表于 2007-05-14 12:03 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
Originally posted by zouzhxi at 2007-5-14 09:55:
如何将里边的k810-019提取出来...????

新问题请重新开帖提出。
论坛跳转: