C/C++调用DOS命令
使用system(“…”);
C要#include <stdlib.h>
C++直接(只要iostream
C:
1 |
|
1 | 该程序, |
C++:
1 |
|
1 | 用date命令显示当前日期: |
使用system(“…”);
C要#include <stdlib.h>
C++直接(只要iostream
1 | #include <stdio.h> |
1 | 该程序, |
1 | #include <iostream> |
1 | 用date命令显示当前日期: |
批处理文件,在DOS和Windows(任意)系统中,.bat文件是可执行文件,由一系列命令构成,其中可以包含对其他程序的调用。这个文件的每一行都是一条DOS命令(大部分时候就好像我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。
简单的说,批处理的作用就是自动的连续执行多条命令。
这里先讲一个最简单的应用:在启动wps软件时,每次都必须执行(>前面内容表示DOS提示符):1
2
3
4
5C:\>cd wps
C:\WPS>spdos
C:\WPS>py
C:\WPS>wbx
C:\WPS>wps
如果每次用WPS之前都这样执行一遍,您是不是觉得很麻烦呢?
好了,用批处理,就可以实现将这些麻烦的操作简单化,首先我们编写一个runwps.bat批处理文件,内容如下:1
2
3
4
5
6
7
8@echo off
c:
cd\wps
spdos
py
wbx
wps
cd\
以后,我们每次进入wps,只需要运行runwps这个批处理文件即可。
bat文件包含以下内容:
1)注明echo1
2
3echo off
C:
cd C:\Users\Desktop
2)设置参数变量
3) 执行python文件
eg:
test.bat1
2
3
4
5
6echo off
C:
cd C:\Users\Desktop
set a=1
set b=2
call python python.py %a% %b%
//等号左右不能有空格
python.py
1 | import sys |
输出结果:1
2
3
412
python.py
1
2
sys.argv[0]为shell 本身。
绝对路径是指目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径。
完整的描述文件位置的路径就是绝对路径,以web站点根目录为参考基础的目录路径。绝对路径名的指定是从树型目录结构顶部的根目录开始到某个目录或文件的路径,由一系列连续的目录组成,中间用斜线分隔,直到要指定的目录或文件,路径中的最后一个名称即为要指向的目录或文件。之所以称为绝对,意指当所有网页引用同一个文件时,所使用的路径都是一样的。
Ex:
windows:c:/website/img/photo.jpg
linux:
LINUX系统中 绝对路径 以“/”为起始/home/user1/abc.txt
相对路径就是指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。使用相对路径可以为我们带来非常多的便利。
下面举实例详解:
一、例如在本地硬盘有如下两文件,它们要互做超链接
1 | G:\site\other\index.htm |
index.htm要想链接到01.htm这个文件,正确的链接应该是:
../web\article\01.htm或者../web/article/01.htm
在超链接中../可以省略,在dos,或windows文件路径中../不可以省略。
反过来,01.htm要想链接到index.htm这个文件,在01.htm文件里面应该写上这句:
1
../../other/index.htm
这里的 ../ 表示向上一级。
注意:相对路径的文件夹符号是斜杠:/
链接文字这样的链接,在href后面的第一个斜杠表示根目录,通常我们要特别慎用这种方式。
1 | ./ 表示当前目录 |
作用:
设置默认的控制台前景和背景颜色。
COLOR [attr]
attr 指定控制台输出的颜色属性
颜色属性由两个十六进制数字指定 – 第一个为背景,第二个则为
前景。每个数字可以为以下任何值之一:1
2
3
4
5
6
7
80 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 浅绿色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
如果没有给定任何参数,该命令会将颜色还原到 CMD.EXE 启动时
的颜色。这个值来自当前控制台窗口、/T 命令行开关或
DefaultColor 注册表值。
如果用相同的前景和背景颜色来执行 COLOR 命令,COLOR 命令
会将 ERRORLEVEL 设置为 1。
例如: “COLOR fc” 在亮白色上产生亮红色
注:前一个数字是更改dos的背景的,后一个数字是改变字母颜色的。
作用:
1.dir dir是英文单词directory(目录)的缩写,主要用来显示一个目录下的文件和子目录。
[功能] 显示指定磁盘、目录中的文件和子目录信息,包括文件及子目录所在磁盘的卷标、文件与子目录的名称、每个文件的大小、文件及目录建立的日期时间,以及文件子目录的个数、所占用总字节数以及磁盘上的剩余总空间等信息。
[格式] dir [C:][path][filename][.ext][/o][/s][/p][/w][/a]
[说明] dir是DOS命令中最常用的一个。斜杠表示后面的内容是参数。
DOS参数最常用的是以下四个:
/p 显示信息满一屏时,暂停显示,按任意键后显示下一屏
/o 排序显示。o后面可以接不同意义的字母
/w 只显示文件名目录名,每行五个文件名。即宽行显示
/s 将目录及子目录的全部目录文件都显示
作用:
md是英文make directory(创建目录)的缩写
[功能] 创建一个子目录
[格式] md [C:]path
[举例] 我们在C盘建立一个叫123的文件夹:md c:\123
作用:
cd是英文change directory(改变目录)的缩写
[功能] 改变或显示当前目录
[格式] cd [C:][path]
[说明] 路径可以使用绝对路径和相对路径两种。如果只有cd而没有参数,则只显示当前路径。 注意:子目录中一定有两个”特殊目录”,即”.””..”,其中一点表示当前目录,两点表示上一层目录。从简单实用的角度来看,我们只要学会逐层进入(cd 下一层某目录名),和逐层退出(cd..)就可以解决所有问题。当然也可以用绝对路径的办法。
[举例] 进入我们刚才建立的123目录:cd c:\123
功能:删除空目录。
语法:rmdir [选项] dirname
说明:dirname表示目录名。该命令从一个目录中删除一个或多个子目录项。需要特别注意的是,一个目录被删除之前必须是空的。(注意,rm - r dir命令可代替rmdir,但是有很大危险性。)删除某目录时也必须具有对父目录的写权限。
命令中各选项的含义为:
-p 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。
例如:
$ rmdir -p /usr/xu/txt
将/usr/xu/txt目录删除。
作用:
[功能] 复制一个或一组文件到指定的磁盘或目录中
[格式] copy [C:][path][filename.ext] [C:][path]filename.ext
[说明] 复制文件命令基本用法是:”复制 源文件名 目标文件名”。如果只写目标路径而不写目标文件名,表示同名复制;否则称为换名复制。注意换名复制一般不要更改文件扩展名。 [举例] 将C:\123目录的所有文件复制到E盘,可以打如下命令,请注意当前盘与当前路径不同: copy c:\123 e:\ 如果目标盘上已有同名文件,会出现如下提示,”Overwrite xxxx(Yes/No/All)”此时回答Y则覆盖当前文件,N则保留,A则覆盖此后的所有文件而不再提问
其中,各参数的含义为:
-i 显示图形界面的对话框。
-l 注销当前用户,这是默认设置。
-m ComputerName 优先。
-s 关闭计算机。
-r 关闭之后重新启动。
-a 中止关闭。除了 -l 和 ComputerName 外,系统将忽略其它参数。在超时期间,您只可以使用 -a。
-f 强制运行要关闭的应用程序。
-m [\ComputerName] 指定要关闭的计算机。
-t xx 将用于系统关闭的定时器设置为 xx 秒。默认值是 20 秒。
-c “message” 指定将在“系统关闭”窗口中的“消息”区域显示的消息。最多可以使用 127 个字符。引号中必须包含消息。
-d [u][p]:xx:yy 列出系统关闭的原因代码。
首先,我们来看一下该命令的一些基本用法:
1、注销当前用户 shutdown - l 该命令只能注销本机用户,对远程计算机不适用。
2、关闭本地计算机 shutdown - s
3、重启本地计算机 shutdown - r
4、定时关机 shutdown - s -t 30 指定在30秒之后自动关闭计算机。
5、中止计算机的关闭 有时我们设定了计算机定时关机后,如果出于某种原因又想取消这次关机操作,就可以用 shutdown - a 来中止。如: shutdown -s – t 300 设定计算机在5分钟后关闭。 Shutdown – a 取消上述关机操作。 以上是shutdown命令在本机中的一些基本应用。前面我们已经介绍过,该命令除了关闭、重启本地计算机外,更重要的是它还能对远程计算机进行操作,但是如何才能实现呢? 在该命令的格式中,有一个参数[-m [\ComputerName],用它可以指定将要关闭或重启的计算机名称,省略的话则默认为对本机操作。于是,我用以下命令试了一下: shutdown –s –m \netproxy -t 30 (在30秒内关闭计算机名为netproxy的机器;注:netproxy为局域网内一台同样装有Windows XP的电脑) 但该命令执行后,计算机netproxy一点反应都没有,我的屏幕上却返回这样一句话:Access is denied (拒绝访问)。
1 | 为什么会出现这种情况呢?发现,在Windows XP默认的安全策略中,只有管理员组的用户才有权从远端关闭计算机,而一般情况下我们从局域网内的其他电脑来访问该计算机时,则只有guest用户权限,所以当我们执行上述命令时,便会出现“拒绝访问”的情况。 找到问题的根源之后,解决的办法也很简单,只要在客户计算机(能够被远程关闭的计算机,如上述的netproxy)中赋予guest用户远程关机的权限即可。这可利用Windows XP的“组策略”或“管理工具”中的“本地安全策略”来实现。 |
attrib指令用于修改文件的属性·文件的常见属性有:只读·存档·隐藏和系统·
attrib指令的格式和常用参数为1
2
3
4
5
6
7
8
9
10
11
12
13
14ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[drive:] [path] filename] [/S [/D]]
+ 设置属性。
- 清除属性。
R 只读文件属性。
A 存档文件属性。
S 系统文件属性。
H 隐藏文件属性。
I 无内容索引文件属性。
[drive:][path][filename]
指定要处理的文件属性。
/S 处理当前文件夹及其子文件夹中的匹配文件。
/D 处理文件夹。
/L 处理符号链接和符号链接目标的属性。
1 | attrib的用途不是很广泛.不过有的时候可以利用它来做一些方便的文件处理.比如U盘中感染了病毒.会在U盘的驱动器里建立多个隐藏的文件.其中会有一个名为autorun.inf的文件.这个文件会为U盘添加一个自动运行的菜单.如果把默认打开操作改成关联病毒程序.那么在你双击U盘的时候.就会感染U盘所带的病毒.通常情况下无法看到这些文件就没办法删除.可以用下面的步骤来清除. |
病毒的原理编辑
把所有文件夹设置为隐藏的系统文件 然后复制出病毒样本 他们都是文件夹图标
名字都是被隐藏的正常文件夹 这样就造成一种假象 当你运行正常的文件夹时就会无法打开
因为他就是一个设计好的病毒 正常文件夹都无法显示 一旦中了U盘病毒就没办法再恢复了,
但是病毒清除后仍可用attrib进行恢复。
erase容器中元素的时候,迭代器会失效
其实就是没有影响
1 | for (iter = cont.begin(); it != cont.end();) |
就是有影响
1 | for (iter = cont.begin(); iter != cont.end();) |
删除数组中某个元素后连续重复的元素,例如 1,1,2,3,3,1,1,1,4,0 —> 1, 2,3,1,4,0。
1 | #include <iostream> |
不过实际上这个问题,用vector来实现不是很适合,因为每次删除一个元素,都会引起vector的一个resize操作。resize的时间复杂度是O(n),整个的resize操作要花费O(n^2)。最好是选择list最为容器,list最适合那些需要在容器中间做插入、删除的例子。
1 | #include <vector> |
1 | #include <iostream> |