无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 6698|回复: 15
打印 上一主题 下一主题

请教各位:怎样在windows下用批命令在硬盘上自动寻找最后的分区并在其中建一个目录?

[复制链接]
跳转到指定楼层
1#
发表于 2007-2-19 17:28:57 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
请教各位:怎样在windows下,用批命令在硬盘上自动寻找最后分区的盘符并在其中建一个目录?要求不包括U盘的盘符。
先谢谢了!

[ 本帖最后由 pz 于 2007-2-23 10:07 PM 编辑 ]
16#
发表于 2009-5-25 21:48:33 | 只看该作者
1,问题交代不清。
2,2年前的就贴。

所以已没有在这个问题上继续回答的必要。
当然若另开一个新帖,仍有继续探讨的意义。
回复

使用道具 举报

15#
发表于 2009-5-25 17:08:02 | 只看该作者
如果借助第三方软件,用gdisk32 列出所有分区信息,在找出 所有带 : 的语句,取最后一个就是了。
只需要一句话:
for /f "tokens=1" %c in ('gdisk32 1 ^|find /i ":"') do @set lastd=%c

就可以把第一硬盘的最后分区盘符赋值给变量 lastd

[ 本帖最后由 dos时代菜鸟 于 2009-5-25 17:16 编辑 ]
回复

使用道具 举报

14#
发表于 2009-5-25 14:53:34 | 只看该作者
windows 下用vbs更容易。

On Error Resume Next
Set fs=CreateObject("scripting.filesystemobject")
Set disks=fs.drives
For Each disk In disks
if disk.isready And  disk.DriveType=2 Then
  drv=disk.DriveLetter
end if
Next
msg="最后一个本地硬盘分区是:"&drv&":"
MsgBox msg,0,"最后分区"
fs.CreateFolder(drv&":\ggg")

脚本将在win下最后一个分区建立ggg文件夹。


可以有效排除移动硬盘、光盘、网络盘、虚拟盘。

不过也有弊端,就是 如果此前人为在“磁盘管理”中打乱了磁盘排序,就有可能按照错乱的排序找出最后分区。

[ 本帖最后由 dos时代菜鸟 于 2009-5-25 17:05 编辑 ]
回复

使用道具 举报

13#
发表于 2009-5-17 13:54:51 | 只看该作者
谢谢!!学习中
回复

使用道具 举报

12#
 楼主| 发表于 2007-2-25 15:22:55 | 只看该作者
再次谢谢老毛桃版主的指教!
回复

使用道具 举报

11#
发表于 2007-2-25 15:04:17 | 只看该作者
原帖由 pz 于 2007-2-25 10:28 发表
另外:老毛桃版主的第二个方法所取到的是类似“1:4”的格式,不知怎样改代码才能做到所取得的是所对应的盘符呢?

无法将 1:4 形式的分区标志转换成分区符,这是 GHOST 对于分区号标识特有的方法,它能够寻找到隐藏分区,并且可以支持再不将隐藏分区分配盘符的情况下对其读写。换言之便是,GHOST 可以将你的 C 盘备份到隐藏分区中去。
回复

使用道具 举报

10#
发表于 2007-2-25 15:00:55 | 只看该作者
原帖由 pz 于 2007-2-24 22:41 发表
谢谢老毛桃版主。
您提供的方法1经实验除了USB硬盘会和固定硬盘混淆外,与U盘不再混淆。但方法2
@ECHO OFF
START /B /W Ghost32 -DD>NUL
for /l %%i in (1,1,6) do for /l %%j in (1,1,10) do for /f &quo ...

经过你这么一修改的话,就只能支持 1 块固定硬盘了。

如果安装有两块固定硬盘,最终找到的也只是第一块硬盘的最后分区。
回复

使用道具 举报

9#
 楼主| 发表于 2007-2-25 10:28:25 | 只看该作者
另外:老毛桃版主的第二个方法所取到的是类似“1:4”的格式,不知怎样改代码才能做到所取得的是所对应的盘符呢?
回复

使用道具 举报

8#
 楼主| 发表于 2007-2-24 22:41:38 | 只看该作者
谢谢老毛桃版主。
您提供的方法1经实验除了USB硬盘会和固定硬盘混淆外,与U盘不再混淆。但方法2
  1. @ECHO OFF
  2. START /B /W Ghost32 -DD>NUL
  3. for /l %%i in (1,1,6) do for /l %%j in (1,1,10) do for /f "tokens=3" %%k in ('find /c "  %%i:%%j" GHSTSTAT.TXT') do IF %%k GTR 0 SET LastP=%%i:%%j
  4. ECHO 最后一个分区是 %LastP%&&ECHO.&&DEL GHSTSTAT.TXT /Q
  5. PAUSE
复制代码

在windows下还是会出现U盘和固定硬盘混淆的问题。我觉得应改为:
  1. @ECHO OFF
  2. START /B /W Ghost32 -DD>NUL
  3. for /l %%i in (1,1,1) do for /l %%j in (1,1,10) do for /f "tokens=3" %%k in ('find /c "  %%i:%%j" GHSTSTAT.TXT') do IF %%k GTR 0 SET LastP=%%i:%%j
  4. ECHO 最后一个分区是 %LastP%&&ECHO.&&DEL GHSTSTAT.TXT /Q
  5. PAUSE
复制代码

这样经测试找出的就是机器上第一硬盘的最后分区。
请老毛桃版主看看是否正确?

[ 本帖最后由 pz 于 2007-2-24 11:35 PM 编辑 ]
回复

使用道具 举报

7#
发表于 2007-2-24 12:39:06 | 只看该作者
原帖由 pz 于 2007-2-22 20:40 发表
已经解决。
@echo off
for %%i in (Z Y X W V U T S R Q P O N M L K J I H G F E D C) do (
    if exist %%i:\nul (
        for /f "tokens=3" %%j in ('dir /-c %%i:\') do set freesize=%%j
...

在 Windows 环境下,是非常容易判断的,如果不借助于 GHOST32.EXE,可使用如下代码
  1. @ECHO OFF
  2. For %%i In (C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do FOR /f %%j in ('FSUTIL FSINFO DRIVETYPE %%i:^|FIND /I "固定驱动器"') DO SET LastP=%%j
  3. ECHO 最后一个分区是 %LastP%&&ECHO.
  4. PAUSE
复制代码

可以有效避免 U 盘的干扰,但是对于 USB 移动硬盘和虚拟硬盘,无法正确排除。

如果借助于 GHOST32,可以有效排除虚拟硬盘、U 盘,但是也无法区分 USB 移动硬盘和固定硬盘。却能找出包括 Hidden 类型的分区,这对于 Ghost 操作来说是相当便捷的。

  1. @ECHO OFF
  2. START /B /W Ghost32 -DD>NUL
  3. for /l %%i in (1,1,6) do for /l %%j in (1,1,10) do for /f "tokens=3" %%k in ('find /c "  %%i:%%j" GHSTSTAT.TXT') do IF %%k GTR 0 SET LastP=%%i:%%j
  4. ECHO 最后一个分区是 %LastP%&&ECHO.&&DEL GHSTSTAT.TXT /Q
  5. PAUSE
复制代码
回复

使用道具 举报

6#
 楼主| 发表于 2007-2-23 22:03:17 | 只看该作者
原帖由 lianjiang 于 2007-2-23 11:22 AM 发表
可用ghost32 -dd获得。

请问能说的详细点吗?先谢谢了!
回复

使用道具 举报

5#
发表于 2007-2-23 11:22:24 | 只看该作者
可用ghost32 -dd获得。
而且你那也不是用dos获得的。呵呵。

[ 本帖最后由 lianjiang 于 2007-2-23 11:25 AM 编辑 ]
回复

使用道具 举报

4#
 楼主| 发表于 2007-2-22 20:40:07 | 只看该作者
已经解决。
@echo off
for %%i in (Z Y X W V U T S R Q P O N M L K J I H G F E D C) do (
    if exist %%i:\nul (
        for /f "tokens=3" %%j in ('dir /-c %%i:\') do set freesize=%%j
        set last=%%i
        if not "!freesize!"=="0" goto last_drive
    )
)
goto :eof

:last_drive
echo 最后一个分区是 %last%
pause

但有个缺点:如果u盘在机器上插着,找出来的就是u盘的盘符。该怎样做才能使得找出来的最后分区盘符在u盘插在机器上时不是u盘的盘符呢?
回复

使用道具 举报

3#
发表于 2007-2-20 09:48:18 | 只看该作者
可参看dos之家的一键ghost的批处理。
回复

使用道具 举报

2#
发表于 2007-2-19 18:42:40 | 只看该作者
我也需要呢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-9-20 22:44

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表