Board logo

标题: 有以X:Y\PATH\FILE格式判断NTFS下某文件存在的DOS命令么 [打印本页]

作者: llztt1     时间: 2007-2-8 11:08    标题: 有以X:Y\PATH\FILE格式判断NTFS下某文件存在的DOS命令么

0451lym兄 说老鸟们都知道的,我搜索了N多老帖也没找到,有哪位老鸟指点一下哈?

实现NTFSDOS下混乱盘符正确转换为X:Y形式的关键一步,过了他,GHOST维护盘方便性就会提高一个档次了。。

前面TERSE发过帖子,讨论结果是,隔过了这一步,不退出NTFS驱动直接利用NTFS盘符进行GHOST,但发现无论NTFSDOS还是IFS都不够稳定,尤其IFS启动后,很多命令都无法使用了。。所以我建议使用NTFS驱动得到必要信息后就退出之以进行干干净净的GHOST。。
作者: 0451lym     时间: 2007-2-8 13:08
呵呵,几个月前跟你一样,为了NT驱动的稳定性浪费了好多天的时间.最后还是选择了IFS,IFS驱动有好多版本,不是每个都稳定,找找把只有一个版本稳定!
因为我使用UCDOS的桌面系统,卸载NT驱动后就挂不上了,只能重起后在挂,郁闷.
所以我的方案是挂上就不下来,只能找个最稳定的版本,没办法逼出来的!
作者: llztt1     时间: 2007-2-8 21:48
这样哈,那是不是挂着IFS,可以利用GHOST -DD生成的GHSTSTAT.TXT分析之把NTFS区的盘符转换为X:Y的格式??
呵呵,以前看似简单,原来这么麻烦的哈
作者: 0451lym     时间: 2007-2-8 22:15
GHOST -DD生成的GHSTSTAT.TXT分析只是一部分,还需要实际的命令去试探真假,最后确认无误才可以转换为X:Y的格式!

因为如果一块硬盘中的分区是完全混乱的NTF32和NTFS格式,那么就不好判断了,如果是双硬盘的话会更复杂,要弄就得准确否则容易出笑话......

因此就必须DOS命令与识别NTFS的命令格式软件反复双重判断++GHOST -DD等软件的报告分析判断,最后就是我们所要的格式了.说来麻烦,程序运行只是5秒到40秒之间的事情.
作者: 0451lym     时间: 2007-2-8 22:27
我一共用了以下几种小命令:
1.识别X:Y\PATH\FILE格式的命令(主要,没有了它分析不出正确答案)
2.识别NTFS字母盘符的命令(主要,有了它会大大减少判断步骤,剩时间)
3.识别光区盘符的命令(可有可无,用处不大)
4.GHOST -DD报告分析(主要,能减少判断步骤,剩时间)
5.DOS内部命令结合试探(主要,反复论证得到的答案会最精确)


所有的我的方法都在上面了!

[ Last edited by 0451lym on 2007-2-8 at 10:29 PM ]
作者: llztt1     时间: 2007-2-8 23:20
omnifs.exe BTIni.exe都能以X:Y\PATH\FILE格式访问,不过个头忒大了,不想要
识别NTFS盘符的命令不知道何解啊,那个FUNC命令可以把现有的所有盘符列出来(包括加载NTFS后的盘符)
又找了一个IFS,WEN大 修改过的, 可以正常退出了,但GHOST2003可以正常启动,GHOST11就不行了,而且试了几个版本的IFS都不能COPY CON SS了,说找不到CON文件....

如果需要太多步骤去判断真实的X:Y路径,而且还难保证是否正确(判断错误的损失可是难以预计的)的话,我倒想放弃自动化的批处理,直接浏览搜索出来的GHO文件,然后退出NTFS和中文支持等,启动GUI,根据搜索出来的GHO文件路径手动寻找各分区..
作者: terse     时间: 2007-2-11 10:33
下了个dpit 但显示分区格式不理想  第二硬盘显示出1:X
又下来lmod.com 想结合GHOST -DD find 用一下 但具体怎样用都不知道  菜!知道的传授一下怎么样  ?
Dirt搜索可控制搜索层 倒是不错  就是不能 X:Y搜索  5555555
我现在只能手动GHOST  反正GHOST支持NTFS格式
FAT到是可以自动GHOST
现在把盘符变成X:Y  搜索又是一个问题 唉~~

[ Last edited by terse on 2007-2-11 at 10:44 AM ]
作者: llztt1     时间: 2007-2-11 10:58
TERSE,你以前发过一个帖子,网名XUSEN回复过你了,他该是深度启动盘作者,他利用IFS+PSI.EXE+批处理已经实现了全盘搜索,经过测试,没发现什么解析硬盘分区结构错误,唯一缺陷是他用的DIR搜索,我已经修改他的批处理应用DIRT通过。

我也是搜索到你发的那个帖子才发现XUSEN的作品的,奇怪,你怎么没注意到啊,人家还贴了图给你,呵呵

你网上一搜 深度 启动盘 XUSEN,很容易就下到了,XUSEN的批处理很不错了,简单修改一下他的搜索批处理就很好了

也希望XUSEN可否改进一下,方便大家,呵呵
作者: terse     时间: 2007-3-28 14:34


  Quote:
Originally posted by llztt1 at 2007-2-11 10:58:
TERSE,你以前发过一个帖子,网名XUSEN回复过你了,他该是深度启动盘作者,他利用IFS+PSI.EXE+批处理已经实现了全盘搜索,经过测试,没发现什么解析硬 ...

试用了XUSEN  U盘启动的 把我的原硬盘识别为第一硬盘 而我的原硬盘在DOS下是第二硬盘  我现在用GDISK  可以转为X:Y 搜索不用它  在GDISK信息里可以转换为X:Y
现在的问题是加载IFS后  怎么GDISK还是不能看NT的盘符  知道PSI的用法吗?
作者: llztt1     时间: 2007-3-29 02:23
GDISK个头也忒大了吧...1M多呢

要想转换DOS下盘符和硬盘分区号需用几个软件的,XUSEN的新版本使用批处理+IFS+AEFDISK完成了这一转换,不过得到的信息不如原来版本里批处理+IFS+PSI得到的详细,譬如每个分区的剩余容量,而且PSI还能完整显示未划分的磁盘空间,不过PSI也有自己缺点,就是个头也很大,而且加载时间较长,这两种方法都有利弊,具体怎么使用看下XUSEN的批处理就OK了

关于搜索问题,目前一般还是直接搜索DOS自认盘符或IFS加载后的盘符,然后盘符转为X:Y形式;直接搜索X:Y的命令还真不好找,GRUB倒是有,可以以路径形式搜索多种分区格式的分区,只是。。。。。

实际使用中发现AEFDISK有个问题,就是如果我光驱启动---GRUB---软盘景象---AEFDISK,发现AEFDISK那个得到当前硬盘数的参数不能正常工作,会报错,而且强制显示在屏幕上,不知其他朋友有这样情况没
作者: terse     时间: 2007-3-29 03:50
现在在我看来XUSEN的版本至少在我的机器上用U盘启动不能用(U盘被认为第一硬盘的情况)其他的情况没试!
从我用GDISK的情况来看 (GDISK个头也忒大了吧...321KB )也确实慢了点  但不出错了,在GHOST时可以先确认机器上有几个硬盘然后选择自己所需操作的硬盘,这样应该不出错了,备份和恢复前都可以先选择一下自己要操作的盘,个人认为也是不错的,至少在U盘是第一硬盘的情况下可以不出错,现在要解决的是怎么让GDISK显示加载IFS后 NT的盘符!大虾帮一下哦
XUSEN的版本试了几次都是不能把我的原硬盘认为第二,所以导致不能GHOST,硬盘检测和搜索到是不错,但为什么把我的第二硬盘认为第一呢?还是继续看一下吧
作者: llztt1     时间: 2007-3-29 09:09
U盘我一直没用过,只用着光盘或硬盘上用GRUB启动大软盘镜象,所以还确实不了解U盘启动问题,貌似同一个U盘在BIOS设置的不同启动模式下启动后会有截然不同结果,一个模式会是C盘一个模式是A盘??

321K的GDISK,你用的哪个版本啊??我这里是11的,貌似也不能显示加载IFS后的盘符

你也可以检测一下XUSEN的U盘版分析硬盘是否有规律,如果只是小BUG修正之就好了。。
作者: 0451lym     时间: 2007-3-29 10:19
呵呵,很好解决!
检测C:有没有特定文件,比如xmsdsk.exe,如果有那么就把1.1替换为1.2
作者: terse     时间: 2007-3-29 12:47


  Quote:
Originally posted by llztt1 at 2007-3-29 09:09:
U盘我一直没用过,只用着光盘或硬盘上用GRUB启动大软盘镜象,所以还确实不了解U盘启动问题,貌似同一个U盘在BIOS设置的不同启动模式下启动后会有 ...

不是BIOS设置问题  是主板问题  现在都没好的解决办法 XUSEN的检测硬盘把我的第二硬盘检测为第一硬盘  还有把我的第二盘第一区检测为FAT区后面去了,那样对转换有困难的吧,除非是主分区可以有特征判断,其余也就没细看了,
321KB的gdisk是网上下的  也不知什么版

  Quote:
Originally posted by 0451lym at 2007-3-29 10:19:
呵呵,很好解决!
检测C:有没有特定文件,比如xmsdsk.exe,如果有那么就把1.1替换为1.2

我现在的U盘就是C:换成2:1?问题不是X:Y 而是在加载IFS后用什么可以看到盘符才是问题关键,
用lmod和STRINGS可以解决盘符转换,至于GDISK分析出的分区信息比实际的大了一位也可以用STRINGS来解决这个问题,我现四处找可以显示加载IFS后可以正确显示盘符的东东,你们有吗?
作者: llztt     时间: 2007-3-29 21:41
关于GHOST自动批处理,两个月前我们3个就在论坛讨论来着的,呵呵

关于盘符转换,你现在的想法和当时我的追求是一样的,现在看来,PSI是可行的,不过他的缺点我上面也说了,还有一个DSPT,其作者承诺开发试图加载IFS或NTFSDOS后的盘符的版本,不过好久没见作者更新了,只有等待吧。。

关于AEFDISK和DSPT,怀疑都是读取BIOS参数来看硬盘的,总觉得不可靠
作者: terse     时间: 2007-3-30 02:11
PSI行吗?用XUSEN的把我的NTFS格式的主分区C盘影为H符,但分区号却不是1,而是排在后面,转换成问题啊!
作者: 0451lym     时间: 2007-3-30 05:37
呵呵弄错了,知道是什么用的了

[ Last edited by 0451lym on 2007-3-30 at 11:33 AM ]
作者: 0451lym     时间: 2007-3-30 05:39
我也不知道是干什么用的,你把实验的结果告诉我们!
作者: terse     时间: 2007-3-30 11:58
干什么用的?怎么用?
作者: llztt1     时间: 2007-3-30 12:05
最近整理好了启动盘,结果刻好后在实机中发现了几个问题
一、支持SATA的主板很容易使PSI分析硬盘信息出错,这个悲哀的很,不知修改批处理能否改善这一问题不?
二、实机操作中DIRT也开始出错了(虚拟机正常),首先是搜索结果最后两行ERROR:CAN NOT GET COMMAND.COM‘S PSP,其次是修改过的XUSEN的搜索批处理因为DIRT原因直接中断退出,再次发现用DIRT的搜索批处理有时会卡机,停留在某个盘符死掉了。。
总上,感觉忒郁闷了
作者: 0451lym     时间: 2007-3-30 12:39


  Quote:
Originally posted by llztt1 at 2007-3-30 12:05:
最近整理好了启动盘,结果刻好后在实机中发现了几个问题
一、支持SATA的主板很容易使PSI分析硬盘信息出错,这个悲哀的很,不知修改批处理能否改 ...

一、SATA的主板很容易使PSI分析硬盘信息出错,这个我没碰到过,我测试的是SATA硬盘正常,但是NTFS压缩分区严重出错!(SATA光驱没测试)
二、DIRT使用正常,我的是自己编写的,没有完全参考XUSEN的搜索引擎!DIRT在搜索SATA硬盘的NT分区速度正常,但是搜索老硬盘的NT分区有时间窒缓的问题。如果加载SMARTDRV 在搜索NT分区有时候会死掉!总体感觉还可以!
作者: 0451lym     时间: 2007-3-30 12:43
DIRT搜索引擎

@ECHO OFF
REM --------------------------------------------------
IF "%ID%"=="N" goto JSA
SET CZWJ=%1>NUL
set ID=1>NUL
:BLFZ0
strings ID=add %ID%,1
for %%x in (%id%) do ECHO SET  LS=%%%%x%%>%temp%\ls.bat
CALL %temp%\ls.bat %1 %2 %3 %4
if "%LS%"=="" goto KS
:BLFZ1
ECHO %LS%|find.exe /i "/L:">NUL
if ERRORLEVEL 1 goto BLFZ2
SET ZL=%LS%>NUL
goto BLFZ0
:BLFZ2
ECHO %LS%|find.exe /i "/D:">NUL
if ERRORLEVEL 1 goto BLFZ3
SET ZD=%LS%>NUL
goto BLFZ0
:BLFZ3
ECHO %LS%|find.exe /i "/T:">NUL
if ERRORLEVEL 1 goto BLFZ4
SET CZT=%LS%>NUL
goto BLFZ0
:BLFZ4
SET WJM=%LS%>NUL
goto BLFZ0
:xs
ECHO            正在搜索→数据,请稍候......>%temp%\XS.TXT
:KS
if NOT exist %temp%\XS.TXT goto xs
GO %RAMDRIVE%\BAT
wbat cls (white on blue)
wbat fill11,16(5,50)(+white on +blue)!text13,16@%temp%\XS.TXT
for %%x in (ID xs) do SET %%x=>NUL
if "%WJM%"=="" SET WJM=%temp%\CZ.TXT>NUL
if exist %WJM% del %WJM%
ECHO %CZWJ% | find.exe /i ":">NUL
if ERRORLEVEL 1 set ID=1
if "%ID%"=="" goto DFQ
for %%x in (bfb zrl) do SET %%x=0>NUL
wbat fill17,16(1,50)(white on +black)!text17,39(1,2)"%bfb%%%"
if exist %temp%\HDD.INI strings zrl=linesize %temp%\HDD.INI
:00
for %%x in (PSI CZFQ jdt bfb ls) do MYSET %%x=>NUL
strings ls=mul %ID%,100
strings bfb=div %ls%,%zrl%
strings jdt=div %bfb%,2
MYSET ls=>NUL
strings ID=add %ID%,1
if exist %temp%\HDD.INI strings PSI=read %temp%\HDD.INI,%ID%
if "%PSI%"=="" goto js
if exist %temp%\HDD.INI STRINGS CZFQ=MID %PSI%,1,2
wbat fill16,16(1,50)(+white on brown)!text16,16(1,2)"搜索%CZFQ%\"
MYSET PSI=>NUL
:cz
if "%CZWJ%"=="*.GHO"  dirt  %CZFQ%\*.GHO %ZD% %CZT% %ZL%|find.exe /i ":">>%WJM%
if "%CZWJ%"=="*.GHO"  dirt  %CZFQ%\*.LYM %ZD% %CZT% %ZL%|find.exe /i ":">>%WJM%
if not "%CZWJ%"=="*.GHO"  dirt  %CZFQ%\%CZWJ% %ZD% %CZT% %ZL%|find.exe /i ":">>%WJM%
wbat fill17,16(1,%jdt%)(white on green)!text17,39(1,2)"%bfb%%%"
GOTO 00
:DFQ
dirt  %CZWJ% %ZD% %CZT% %ZL%|find.exe /i ":">>%WJM%
for %%x in (CZWJ ZL ZD CZT ID bfb jdt zrl) do SET %%x=
DIRT /ClearEnv
set id=1
goto JSA
:js
wbat cls (white on blue)
wbat fill11,16(5,50)(+white on +blue)!text13,16@%temp%\XS.TXT
wbat fill16,16(1,50)(+white on brown)!text16,37(1,2)"搜索完毕!"
wbat fill17,16(1,50)(white on green)!text17,39(1,2)"100%%"
for %%x in (CZWJ ZL ZD CZT bfb jdt zrl) do SET %%x=
DIRT /ClearEnv
set id=1
:JSA
IF NOT "%ID%"=="N" STRINGS /q CZWJ=READ %WJM%,%ID%
IF "%CZWJ%"=="" goto JSB
IF NOT "%ID%"=="N" strings /q ID=add %ID%,1
ATTRIB /n %CZWJ%>%temp%\lS.TXT
STRINGS /q LS=READ %temp%\lS.TXT,1
STRINGS /q SX=MID 1%LS%,7,4
STRINGS /Q LS=MID 1%LS%,4,1
SET SX=%LS%%SX%
DIR /A %CZWJ%|find.exe ":"|find.exe /v "\">%temp%\LS.TXT
STRINGS /q LS=READ %temp%\LS.TXT,1
STRINGS /q /P" LS1=PARSE %LS%"2".
IF NOT "%LS1%"=="" SET LS1=文件夹
IF NOT "%LS1%"=="" GOTO JSA0
STRINGS /Q /P" LS1=MID %LS%"13"14
IF NOT "%LS1%"=="" STRINGS /q /P" LS2=PARSE %LS1%"1",
IF NOT "%LS2%"=="" STRINGS /Q /P" LS3=PARSE %LS1%"2",
IF NOT "%LS3%"=="" STRINGS /q /P" LS4=PARSE %LS1%"3",
IF NOT "%LS4%"=="" STRINGS /q /P" LS5=PARSE %LS1%"4",
SET LS1=%LS2%%LS3%%LS4%%LS5%>NUL
:JSA0
STRINGS /q /P" LS2=MID %LS%"29"10
STRINGS /q /P" LS3=MID %LS%"41"5
for %%x in (%ls3%) do set ls3=%%x>NUL
STRINGS /q /P" LS4=LENGTH %LS3%
IF "%LS4%"=="4" SET  LS3=0%LS3%>NUL
SET LS=%LS1%>NUL
STRINGS /q LS=DIV %LS%,1024
IF "%LS%"=="0" CALC %LS1%/1024|find ".">%TEMP%\LS.TXT
WBAT CURSOR 1
IF "%LS%"=="0" STRINGS /q LS=READ %TEMP%\LS.TXT,1
FOR %%X IN (%LS%) DO SET LS=%%X>NUL
STRINGS /q LS4=LENGTH %LS%
STRINGS /q LS5=LENGTH %CZWJ%
STRINGS /q LS1=SUB 47,%LS4%,%ls5%
if "%ls%"=="" strings /q ls1=add %ls1%,4
STRINGS /q LS4=READ %RAMDRIVE%\BAT\CZ.BAT,2
STRINGS /q LS1=MID %LS4%,5,%LS1%
FOR %%X IN (LS4 LS5) DO SET %%X=>NUL
IF NOT "%LS%"=="" SET LS=%LS% KB >NUL
ECHO %CZWJ% %LS1%→ %LS%%LS2% %LS3% %SX%>>%temp%\WJ.TXT
FOR %%X IN (LS LS1 LS2 LS3 SX) DO SET %%X=>NUL
IF "%ID%"=="N" GOTO JSB
GOTO JSA
:JSB
wbat cls (white on blue)
if "%id%"=="1" CALL W.BAT fix BOX (+WHITE ON +BLUE) @BAT.INI:CZ_0
wbat cls (white on blue)
if exist %temp%\wj.txt TYPE %TEMP%\WJ.TXT>%WJM%
if "%id%"=="1" del %wjm%
FOR %%X IN (WJ.TXT LS.TXT XS.TXT LS.BAT) DO IF EXIST %TEMP%\%%X DEL %TEMP%\%%X
FOR %%X IN (wjm id CMDLINE) DO set  %%X=>NUL
作者: 0451lym     时间: 2007-3-30 12:52
再有判断U盘的分区问题,可以如下解决
在AUTOEXEC命令中没跳转盘符的时候用cd>来判断是不是C盘!
不知道可行不?
作者: llztt1     时间: 2007-3-30 12:55
唉,我也希望不是DIRT的问题才好,明天测试一下是否是启动盘IO。SYS或COMMAND。COM的问题,也或者是GRUB加载后的问题。。
作者: terse     时间: 2007-3-30 13:05
搜索一级目录应该快点  习惯上GHO文件也一般在一级目录,怎么一个搜索这么长呢?
作者: 0451lym     时间: 2007-3-30 13:10


  Quote:
Originally posted by terse at 2007-3-30 13:05:
搜索一级目录应该快点  习惯上GHO文件也一般在一级目录,怎么一个搜索这么长呢?

1、要判断是全盘搜索还是单分区搜索!
2、不只能搜索一级目录,要的是真正的全方位搜索!
3、要知道结果,并且排序!
呵呵,这个我都精简了好多次了,改动了好多次了!
作者: terse     时间: 2007-3-30 13:32
那怎么不用lmod试试可以一次把X:\后面的分隔出  不是也方便?再用WBAT处理不是也好?
作者: 0451lym     时间: 2007-4-2 12:42
又弄了好几天终于又搞出点名堂了!
XUSEN的和我原先做的都是30-50秒进入系统
今天我加了个小命令,结果10-13秒进入系统,而且搜索飞快!

呵呵,真是奇迹呀!
作者: llztt1     时间: 2007-4-3 02:14
速度慢主要耗在PSI上了,只要用PSI分析硬盘信息的话就快不了,除非换掉他
我也放弃XUSEN的老版搜索批处理了,去掉没用的搜索百分比显示,搜索速度是很快的
作者: 0451lym     时间: 2007-4-3 02:28
我加了个缓存驱动QCACHE.SYS结果速度就飞快(千万不要用SMARTDRV,因为DIRT会死掉的!)


14秒进系统:

DEVICE=\SYS\MEM\HIMEM.SYS /TESTMEM:OFF
DEVICEHIGH=\SYS\MEM\EMM386.exe noems
DEVICEHIGH=\SYS\MEM\QSCACHE.SYS /F /S7



9秒进系统:

DEVICE=\SYS\MEM\HIMEM.SYS /TESTMEM:OFF
DEVICE=\SYS\MEM\UMBPCI.SYS /S
DEVICEHIGH=\SYS\MEM\QCACHE.SYS /L /S5