关于格式化U盘,顺便计算花费时间的问题
本帖最后由 xavier880819 于 2009-8-21 15:39 编辑我现在想过一个autoIT的程序来格式化U盘,顺便计算所花费时间。
但是我不知道格式化的的命令是什么,我去帮助里面找format好像是没有。
然后计算时间的话我的思路是在开始就拿到windows的时间,结束的时候再拿一次windows的时间,然后2次相减。不知道这个思路对不对,或者说还有什么更简单的思路呢??希望大家帮帮忙,谢谢。 可以直接用系统自带的FORMAT命令
用TimerInit 记录初试时间
TimerDiff 计算过了多久 系统自带的format命令是什么意思??
怎么调用?? format命令要小心啊 ,一不小心就得修复硬盘数据了,呵呵 4# afan
所以说我还是会做一个需要format盘的选择input,这样就安全多了。
请问afan,听说autoIT没有直接format的方法啊??只能调用windows自带的工具么?? 直接把U盘连上去,单击右键不是有个格式化的选项?可以直接用autoIT调用这个工具么? format 直接 run 就行了~ 以下是参数~
FORMAT volume
FORMAT volume
FORMAT volume
FORMAT volume
FORMAT volume
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 指定每条磁道的扇区数。
RE: 关于格式化U盘,顺便计算花费时间的问题
7# afan我也找到这个了,我直接在DOS命令下尝试成功了。
FORMAT G:/FS:FAT32/V:HAHA/Q
但是我还需要做一个记录时间的东西啊,所以我的想法是一开始运行就用TimerInit 记录开始时间
然后当这个运行完了过后用一个Readline,如果read到那个命令符里面的最后一行就TimerDiff了。可以吗??但是我尝试了几次都是失败。因为在命令符一开始的时候需要按ENTER键才可以继续,剩下的也不大明白该怎么做了。
这里我把用DOS运行的图发上来 可以隐藏界面操作啊
$a = TimerInit()
RunWait(@ComSpec & " /c " & 'Format dos命令', "", @SW_HIDE)
$b = TimerDiff($a)
Msgbox(0,0,$b) format g: /fs:fat32 /v:haha /q /x /y
完整命令,注意空格。/y 是一个隐藏参数,作用是无需确认执行。
不过通常我装完系统就把format文件改名,安全第一。。。 谢谢afan,谢谢sensel,这样我的东西大概就做好了,我再去加一点UI 请大家帮我看看,我运行了却直接就得答案了,不知道错在哪里,而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 如果我直接#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)就是可以格式化的,为什么我只是多了一个选择盘符就不行了呢?? 好像是我这个程序本身就有错,而且如果用FileSelectFolder,选择出来的 盘是 E:\,而不是像 Format E:/FS:FAT32/V:HAHA/Q/X/Y,方向不一样啊.......
但是我尝试手工改了方向,这个程序还是不能正常运行....... 好像知道为什么了,但是目前有个问题是直接选择输出的盘符是E:\,而我需要的是E:/才行,请问问高手门怎样自动把这个改变呢??或者不用FileSelectFolder,用其他的东西来选择??
页:
[1]
2