winhex脚本命令教程--中文版<转>2009-06-09 18:09脚本命令适用的环境比较多。
脚本文件中的注释以为双斜杠开头。
脚本支持的最长255方是十六进制,文本字符串(甚至10进制数值)都可以作为参数,你可以使用引号强数。
如果文本或者变量名中存在空格,则引号是必须的,在引号中的所有字符都被被识当在winhex中使用数学表达式的时候,可以引用数学表达式,但是必须用括号括起来空格。
同样可以在数学表达式中应用数字变量。
支持的操作有,加法(+),减法(-),乘法(*),整除(/),模除(%),逻辑运算以及XOR(^)。
以下是有效的数学表达式:(5*2+1), (MyVar1/(MyVar2+4)), or (-MyVar)。
以下是目前支持的脚本命令的详细描述以及使用实例。
Create "D:\My File.txt" 1000创建一个1000字节的新文件,如果已经存在同名文件,则将其覆盖。
Open "D:\My File.txt"Open "D:\*.txt"打开指定格式的文件,如果通配符为“?”则winhex会让用户选择要打开的文件。
Open C:Open D:打开指定的逻辑驱动器。
如果通配符为“:?”则winhex会让用户选择要打开的逻辑驱动器Open 80hOpen 81hOpen 9Eh打开指定的物理介质。
软盘的为00h,硬盘与u盘为80h,光盘为9Eh。
可以增加第二个参数来设定文件或者介质的编辑模式(“in-place”或者“read-only”)CreateBackup为活动文件的当前状态创建WHX备份。
CreateBackupEx 0 100000 650 true "F:\My backup.whx"备份当前活动磁盘中从0扇区到100000扇区的数据。
备份文件将自动分割成650M大输出文件的路径以及名称作为最后的参数写入。
如果备份文件不需要分割,则第三个参数的数值该为0即可。
如果不启动压缩功能则将要自动分配文件名以及文件路径则最后的参数表示为“""”即可。
Goto 0x128Goto MyVariable将光标的位置移动到偏移量0x128位置(16进制表示)。
同样也可以用数字变量(最动的位置。
Move -100将当前光标的位置向后移动100字节(16进制)。
Write "Test"Write 0x0D0AWrite MyVariable在光标当前位置(以覆盖模式)写入ASCII字符“Test”或者两个字节的16进制数“0D0A 变量中的值。
同时将光标移动到被覆盖部分的后面。
当到达文件的结尾时,将在文件尾下一个写命令将不会在文件尾巴Write2和“Write”的功能类似,当时当到达文件结尾的字节。
So it is not safe to assume that Write2 always moves the current position forward by written.Insert "Test"功能与“Write”类似,但是在“insert”模式只能应用于文件。
Read MyVariable 10从当前位置读入10个字节的数据到“MyVariable”变量中。
如果变量不存在,它将会创建支持48个不同的变量。
另一个创建变量的命令是“Assign”。
ReadLn MyVariable从当前位置读入一整行的数据到“MyVariable”变量中直到遇到换行符。
如果变量已经存被从新调整。
Close不保存的关闭当前活动窗口。
CloseAll不保存的关闭所有窗口。
Save保存当前活动窗口中打开的文件或磁盘的修改。
SaveAs "C:\New Name.txt"将当前活动窗口打开的文件另存为指定目录下的文件。
如果通配符为“?”,则winhex会径以及文件名。
SaveAll保存所有窗口中修改。
Terminate中断脚本的执行。
Exit中断脚本的执行并且关闭winhex。
ExitIfNoFilesOpen如果在winhex中没有打开的文件将终止脚本文件的执行。
Block 100 200Block "My Variable 1" "My Variable 2"在当前活动窗口中定义一个偏移量从100到200的选块(10进制)。
下一行命令表示定义从变量"My Variable 1"到"My Variable 2"的选块(最长8字节)Block1 0x100在偏移量0x100处定义一个字节的选块。
同样可以使用变量。
Block2 0x200定义一个从开头到偏移量0x200部分的选块。
同样可以使用变量。
Copy将当前选块复制进剪切板中。
如果没有定义选块,其功能和编辑菜单中的复制命令相同Cut将当前选块中的文件剪切到剪切板中。
Remove将当前选块中的数据从文件中移除。
CopyIntoNewFile "D:\New File.dat"CopyIntoNewFile "D:\File +MyVariable+.dat"将当前选块中的数据复制进指定的新文件,而不复制进剪切板。
如果没有定义选块,其命令相同。
同样可以复制磁盘扇区中的数据作为一个新文件。
新建的文件不会自动在w 可以在“+”之间加入变量,变量名将被解释为不大于2^24(16M)的整数。
通常在循环有用。
Paste将剪切板中的数据粘贴入文件中,并且不改变光标当前位置。
WriteClipboard将剪切板中的数据写入文件或磁盘扇的当前位置中,不改变光标当前位置,并且覆盖从数据。
Convert Param1 Param2将当前活动文件中的数据从一种格式转换成另一种格式。
有效的参数是ANSI,IBM,EB IntelHex,MotorolaS, Base64, UUCode, LowerCase, 以及UpperCase,与转换菜单中的AESEncrypt "My Password"使用AES加密当前活动文件或者磁盘,或其选块,使用指定的密钥(最高32位)。
AESDecrypt "My Password"解密当前活动文件或磁盘。
Find "John" [MatchCase MatchWord Down Up BlockOnly SaveAllPos Unicode Wildcard Find 0x1234 [Down Up BlockOnly SaveAllPos Wildcards]分别搜索当前活动窗口中名为“john”的字符串或16进制值数0x1234,并且在第一个搜的参数是可选的。
默认的winhex搜索整个文件或磁盘。
其他的可选参数功能和通常的ReplaceAll "Jon" "Don" [MatchCase MatchWord Down Up BlockOnly Unicode Wildcard ReplaceAll 0x0A 0x0D0A [Down Up BlockOnly Wildcards]在当前活动窗口中使用其他的值替换所有存在上述字符串或16进制数值的地方。
在“in 磁盘。
IfFound如果发现了值则执行下面的命令。
IfEqual MyVariable "Hello World"IfEqual 0x12345678 MyVariableIfEqual MyVariable 1000IfEqual MyVariable MyOtherVariableIfEqual MyVariable (10*MyOtherVariable)比较两个整数值(其中每个值可以是常量,整数变量或者数学表达式)或者两个变量,数值(2进制模式)。
比较两个对象的2进制数值长度,如果不相同的话则返回结果为时,下面的命令才会被执行。
if条件不可以镶套使用。
IfGreater MyVariable "Hello World"IfGreater 0x12345678 MyVariableIfGreater MyVariable 1000IfGreater MyVariable MyOtherVariableIfGreater MyVariable (10*MyOtherVariable)和IfEqual拥有相同的参数。
第一个参数大于第二个参数,返回值为true,则下面的命令以镶套使用。
Else应用在IfFound或IfEqual之后。
如果没有任何对象被搜索到或者比较的目标不相同,EndIf结束if条件命令执行(在IfFound或IfEqual之后)。
{...ExitLoop...}退出循环。
其后会有一个方括号来定义其循环次数,可以是变量也可以是关键字“unlim脚本中循环只能使用ExitLoop命令来退出。
循环不可以镶套使用。
举例:{ Write "Loop" }[10] 将输出“Loop”字符串10次。
Label ContinueHere创建一个标签并命名为“ContinueHere”JumpTo ContinueHere脚本跳转到标签处继续执行.NextObj循环在所有窗口中进行切换“活动”窗口。
如果有三个窗口被打开,并且窗口#3状态为活令将会让窗口#1变为活动窗口。
ForAllObjDo在ForAllObjDo与EndDo之间的脚本代码将在所有打开的文件或者磁盘中执行。
CopyF 将C:\A.dat文件中的内容复制到D:\B.dat中。
MoveFile C:\A.dat D:\B.dat将C:\A.dat文件转移到D盘中并命名为D:\B.dat。
DeleteFile C:\A.dat将C:\A.dat文件删除。
InitFreeSpaceInitSlackSpace使用当前初始化设置清理当前逻辑驱动器中的所有自由空间或松散空间,InitSlackSpac 换为“in-place”模式,以保存未保存的修改。
InitMFTRecords使用当前初始化设置在当前NTFS格式的逻辑驱动器中清理未使用的MFT FILE记录。
修改立即就会写入硬盘中。
Assign MyVariable 12345Assign MyVariable 0x0D0AAssign MyVariable "I like WinHex"Assign MyVariable MyOtherVariable将整数,二进制数值,ASCII文本,或其他变量内容保存到“MyVariable”变量中。