找回密码
 加入
搜索
查看: 5512|回复: 25

关于格式化U盘,顺便计算花费时间的问题

[复制链接]
发表于 2009-8-20 17:47:09 | 显示全部楼层 |阅读模式
本帖最后由 xavier880819 于 2009-8-21 15:39 编辑

我现在想过一个autoIT的程序来格式化U盘,顺便计算所花费时间。

但是我不知道格式化的的命令是什么,我去帮助里面找format好像是没有。
然后计算时间的话我的思路是在开始就拿到windows的时间,结束的时候再拿一次windows的时间,然后2次相减。不知道这个思路对不对,或者说还有什么更简单的思路呢??希望大家帮帮忙,谢谢。
发表于 2009-8-20 17:55:20 | 显示全部楼层
可以直接用系统自带的FORMAT命令
用TimerInit 记录初试时间
TimerDiff 计算过了多久
 楼主| 发表于 2009-8-20 18:00:01 | 显示全部楼层
系统自带的format命令是什么意思??
怎么调用??
发表于 2009-8-20 18:29:22 | 显示全部楼层
format命令要小心啊 ,一不小心就得修复硬盘数据了,呵呵
 楼主| 发表于 2009-8-20 18:54:39 | 显示全部楼层
4# afan


所以说我还是会做一个需要format盘的选择input,这样就安全多了。
请问afan,听说autoIT没有直接format的方法啊??只能调用windows自带的工具么??
 楼主| 发表于 2009-8-20 19:05:06 | 显示全部楼层
直接把U盘连上去,单击右键不是有个格式化的选项?可以直接用autoIT调用这个工具么?
发表于 2009-8-20 19:31:31 | 显示全部楼层
format 直接 run 就行了~ 以下是参数~

FORMAT volume [/FS:file-system] [/V:label] [/Q] [/A:size] [/C] [/X]
FORMAT volume [/V:label] [/Q] [/F:size]
FORMAT volume [/V:label] [/Q] [/T:tracks /N:sectors]
FORMAT volume [/V:label] [/Q]
FORMAT volume [/Q]

  volume           指定驱动器(后面跟一个冒号)、装入点
                  或卷名。
  /FS:filesystem  指定文件系统类型(FAT、FAT32 或 NTFS)。
  /V:label        指定卷标。
  /Q              执行快速格式化。
  /C              仅适于 NTFS: 默认情况下,将压缩在该新建卷上
                  创建的文件。
   /X              如果必要,先强制卸下卷。那时,该卷所有
                  已打开的句柄不再有效。
  /A:size         替代默认配置单位大小。极力建议您在一般状况下使用
                  默认设置。
                  NTFS 支持 512、1024、2048、4096、8192、16K、32K、
                  64K。
                  FAT 支持 512、1024、2048、4096、8192、16K、32K、
                  64k,(128k、256k 用于大于 512 字节的扇区) 。
                  FAT32 支持 512、1024、2048、4096、8192、16k、32k、
                  64k,(128k 、256k 用于大于 512 字节的扇区)。
                        
                  注意 FAT 及 FAT32 文件系统对卷上的群集数量有以下限制:

                  FAT: 群集数量 <= 65526
                  FAT32: 65526 < 群集数量 < 4177918

                  如果判定使用指定的群集大小无法满足以上需求,格式
                  化将立即停止。

                  NTFS 压缩不支持大于 4096 的分配单元。

  /F:size         指定要格式化的软盘大小(1.44)
  /T:tracks       为磁盘指定每面磁道数。
  /N:sectors      指定每条磁道的扇区数。
 楼主| 发表于 2009-8-20 19:45:32 | 显示全部楼层

RE: 关于格式化U盘,顺便计算花费时间的问题

7# afan


我也找到这个了,我直接在DOS命令下尝试成功了。
FORMAT G:/FS:FAT32/V:HAHA/Q

但是我还需要做一个记录时间的东西啊,所以我的想法是一开始运行就用TimerInit 记录开始时间
然后当这个运行完了过后用一个Readline,如果read到那个命令符里面的最后一行就TimerDiff了。可以吗??但是我尝试了几次都是失败。因为在命令符一开始的时候需要按ENTER键才可以继续,剩下的也不大明白该怎么做了。

这里我把用DOS运行的图发上来

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2009-8-20 20:17:45 | 显示全部楼层
可以隐藏界面操作啊
$a = TimerInit()
RunWait(@ComSpec & " /c " & 'Format dos命令', "", @SW_HIDE)
$b = TimerDiff($a)
Msgbox(0,0,$b)
发表于 2009-8-21 03:12:04 | 显示全部楼层
format g: /fs:fat32 /v:haha /q /x /y
完整命令,注意空格。/y 是一个隐藏参数,作用是无需确认执行。
不过通常我装完系统就把format文件改名,安全第一。。。

评分

参与人数 1贡献 +3 收起 理由
afan + 3

查看全部评分

 楼主| 发表于 2009-8-21 09:03:49 | 显示全部楼层
谢谢afan,谢谢sensel,这样我的东西大概就做好了,我再去加一点UI
 楼主| 发表于 2009-8-21 10:01:01 | 显示全部楼层
请大家帮我看看,我运行了却直接就得答案了,不知道错在哪里,而U盘根本就没有被格式化。
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Guicreate("Fomater", 430, 160, -1, -1)

Dim $Input1,$Input2,$xz
$Button1 = GuiCtrlCreateButton("Select Disc", 260, 30, 150, 20)
$Button2 = GuiCtrlCreateButton("Start Format Disc", 70, 80, 250, 30)
$Input1        = GUICtrlCreateInput("", 20, 30, 230, 20,-1)

GuiSetState(@SW_SHOW)

While 1
        $Msg = GUIGetMsg()
        Switch $Msg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        $xz = FileSelectFolder("Select The Disc", "", 4)
                        If @error Then ContinueLoop
                        GUICtrlSetData($Input1, $xz)
                Case $Button2
                        $Input2 = GUICtrlRead($Input1)
                        $f = MsgBox(1 + 48, 'Attention', 'Are you sure you want to format this disc?')
                        Select
                                Case $f = 1
                 $a = TimerInit()
                 RunWait(@ComSpec & " /c " & 'FORMAT' & $Input2 & 'FS:FAT32/V:HaHa/Q/X/Y', @SW_HIDE)
                 $b = TimerDiff($a)
                                 Msgbox(0,0,"This format cost you" & $b / 1000 & "Seconds")                                 
                                Case $f = 2
                                ContinueLoop
                                EndSelect
        EndSwitch
Wend
 楼主| 发表于 2009-8-21 10:23:54 | 显示全部楼层
如果我直接
#include <Constants.au3>
$a = TimerInit()
RunWait(@ComSpec & " /c " & 'Format E:/FS:FAT32/V:HAHA/Q/X/Y', "", @SW_HIDE)
$b = TimerDiff($a)
Msgbox(0,0,$b)
就是可以格式化的,为什么我只是多了一个选择盘符就不行了呢??
 楼主| 发表于 2009-8-21 10:44:56 | 显示全部楼层
好像是我这个程序本身就有错,而且如果用FileSelectFolder,选择出来的 盘是 E:\,而不是像          Format E:/FS:FAT32/V:HAHA/Q/X/Y,方向不一样啊.......

但是我尝试手工改了方向,这个程序还是不能正常运行.......
 楼主| 发表于 2009-8-21 10:51:24 | 显示全部楼层
好像知道为什么了,但是目前有个问题是直接选择输出的盘符是E:\,而我需要的是E:/才行,请问问高手门怎样自动把这个改变呢??或者不用FileSelectFolder,用其他的东西来选择??
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-18 21:43 , Processed in 0.081261 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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