函数接口
_DCRTIMP int __cdecl system(
_In_opt_z_ char const* _Command
);
system函数已经被收录在标准c库中,头文件为<stdlib.h>
作用
执行系统命令调用命令处理器来执行命令。
如果命令是空指针,则该函数只检查是否有命令处理器可以被此函数使用。
命令非空则调用命令的效果取决于系统和库的实现,并可能导致程序以非标准的方式运行或终止。
补充:
执行 dos(windows系统) 或 shell(Linux/Unix系统) 命令,参数字符串command为命令名。另,在windows系统下参数字符串不区分大小写。
说明:在windows系统中,system函数直接在控制台调用一个command命令。 在Linux/Unix系统中,system函数会调用fork函数产生子进程,由子进程来执行command命令,命令执行完后随即返回原调用的进程
返回值
如果命令为空指针,如果命令处理器是可用的则该函数将返回一个非零值,如果不可用,则为零。
如果命令不是NULL指针,返回的值取决于系统和库的实现,但如果支持的话,通常期望它是被调用的命令返回的状态代码,通常是命令执行成功返回0,执行失败返回-1。
测试代码
/* system example : DIR */
#include <stdio.h> /* printf */
#include <stdlib.h> /* system, NULL, EXIT_FAILURE */
int main()
{
int i;
printf("Checking if processor is 可用的...?");
if (system(NULL)) puts("Ok");
else exit(EXIT_FAILURE);
printf("Executing command DIR...\n");
i = system("dir");
printf("The value returned was: %d.\n", i);
return 0;
}

参数
| 参数 |
功能 |
使用说明 |
| ASSOC |
显示或修改文件扩展名关联 |
|
| ATTRIB |
显示或更改文件属性 |
|
| BREAK |
设置或清除扩展式 CTRL+C 检查 |
|
| BCDEDIT |
设置启动数据库中的属性以控制启动加载 |
|
| CACLS |
显示或修改文件的访问控制列表(ACL) |
|
| CALL |
从另一个批处理程序调用这一个 |
|
| CD |
显示当前目录的名称或将其更改 |
|
| CHCP |
显示或设置活动代码页数 |
|
| CHDIR |
显示当前目录的名称或将其更改 |
|
| CHKDSK |
检查磁盘并显示状态报告 |
|
| CHKNTFS |
显示或修改启动时间磁盘检查 |
|
| CLS |
清除屏幕 |
* |
| CMD |
打开另一个 Windows 命令解释程序窗口 |
* |
| COLOR |
设置默认控制台前景和背景颜色 |
system("color 0B"); |
| COMP |
比较两个或两套文件的内容 |
|
| COMPACT |
显示或更改 NTFS 分区上文件的压缩 |
|
| CONVERT |
将 FAT 卷转换成 NTFS 你不能转换当前驱动器 |
|
| COPY |
将至少一个文件复制到另一个位置 |
|
| DATE |
显示或设置日期 |
system("date /T");
后面加 /t 表示显示日期 |
| DEL |
删除至少一个文件 |
|
| DIR |
显示一个目录中的文件和子目录 |
|
| DISKPART |
显示或配置磁盘分区属性 |
|
| DOSKEY |
编辑命令行、撤回 Windows 命令并创建宏 |
|
| DRIVERQUERY |
显示当前设备驱动程序状态和属性 |
|
| ECHO |
显示消息,或将命令回显打开或关闭 |
|
| ENDLOCAL |
结束批文件中环境更改的本地化 |
|
| ERASE |
删除一个或多个文件 |
* |
| EXIT |
退出 CMD.EXE 程序(命令解释程序) |
* |
| FC |
比较两个文件或两个文件集并显示它们之间的不同 |
* |
| FIND |
在一个或多个文件中搜索一个文本字符串 |
* |
| FINDSTR |
在多个文件中搜索字符串 |
* |
| FOR |
为一组文件中的每个文件运行一个指定的命令 |
|
| FORMAT |
格式化磁盘,以便用于 Windows |
|
| FSUTIL |
显示或配置文件系统属性 |
|
| FTYPE |
显示或修改在文件扩展名关联中使用的文件类型 |
|
| GOTO |
将 Windows 命令解释程序定向到批处理程序中某个带标签的行 |
|
| GPRESULT |
显示计算机或用户的组策略信息 |
|
| GRAFTABL |
使 Windows 在图形模式下显示扩展字符集 |
* |
| HELP |
获取该表格的内容 |
|
| ICACLS |
显示、修改、备份或还原文件和目录的 ACL |
|
| IF |
在批处理程序中执行有条件的处理操作 |
|
| LABEL |
创建、更改或删除磁盘的卷标 |
|
| MD |
创建一个目录 |
|
| MKDIR |
创建一个目录 |
|
| MKLINK |
创建符号链接和硬链接 |
|
| MODE |
查看与配置系统设备 |
system(mode); |
| MORE |
逐屏显示输出 |
* |
| MOVE |
将一个或多个文件从一个目录移动到另一个目录 |
|
| OPENFILES |
显示远程用户为了文件共享而打开的文件 |
|
| PATH为 |
可执行文件显示或设置搜索路径 |
|
| PAUSE |
暂停批处理文件的处理并显示消息 |
|
| POPD |
还原通过 PUSHD 保存的当前目录的上一个值 |
|
| PRINT |
打印一个文本文件 |
|
| PROMPT |
更改 Windows 命令提示 |
|
| PUSHD |
保存当前目录,然后对其进行更改 |
|
| RD |
删除目录 |
|
| RECOVER |
从损坏的或有缺陷的磁盘中恢复可读信息 |
* |
| REM |
记录批处理文件或 CONFIG.SYS 中的注释(批注) |
|
| REN |
重命名文件 |
|
| RENAME |
重命名文件 |
|
| REPLACE |
替换文件 |
* |
| RMDIR |
删除目录 |
|
| ROBOCOPY |
复制文件和目录树的高级实用工具 |
|
| SET |
显示、设置或删除 Windows 环境变量 |
|
| SETLOCAL |
开始本地化批处理文件中的环境更改 |
|
| SC |
显示或配置服务(后台进程) |
|
| SCHTASKS |
安排在一台计算机上运行命令和程序 |
|
| SHIFT |
调整批处理文件中可替换参数的位置 |
|
| SHUTDOWN |
允许通过本地或远程方式正确关闭计算机 |
system(“shutdown -s –t 60”)60秒后关机
system("shutdown -a");取消关机
system("shutdown -p");立即关闭
system("shutdown -1");注销计算机 |
| SORT |
对输入排序 |
|
| START |
启动单独的窗口以运行指定的程序或命令 |
|
| SUBST |
将路径与驱动器号关联 |
|
| SYSTEMINFO |
显示计算机的特定属性和配置 |
|
| TASKLIST |
显示包括服务在内的所有当前运行的任务 |
|
| TASKKILL |
中止或停止正在运行的进程或应用程序 |
|
| TIME |
显示或设置系统时间 |
system("date /T");
后面加 /t 表示显示日期 |
| TITLE |
设置 CMD.EXE 会话的窗口标题 |
“TITLE 你想改成啥” |
| TREE |
以图形方式显示驱动程序或路径的目录结构 |
“TREE D:” |
| TYPE |
显示文本文件的内容 |
“TYPE D:\\文本.txt” |
| VER |
显示 Windows 的版本 |
|
| VERIFY |
告诉 Windows 是否进行验证,以确保文件正确写入磁盘 |
|
| VOL |
显示磁盘卷标和序列号 |
|
| XCOPY |
复制文件和目录树 |
|
| WMIC |
在交互式命令 shell 中显示 WMI 信息 |
|
MODE命令
system(mode);

(936表示简体中文)
应用示例
示例一:
改变DOS窗口的尺寸:
打开命令提示符cmd,键入mode con cols=100 lines=40则DOS窗口的尺寸将会变为40行100列的,cols最小值为13,lines最小值为1。在C语言中也可以通过system函数调用这个dos命令来实现这个功能。
示例二:
显示代码页:
代码页,通俗的说就是DOS中显示的语言。具体代码页可以查看代码页这个百科词条。
比如,想让DOS下显示的语言为美式英语,则输入mode con cp select=437即可,输出为:

color命令
system("color 02"); 是表示黑背景、绿色前景(即字的颜色).颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一
0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 湖蓝色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
0 = black 8 = gray
1 = blue 9 = light blue
2 = green A = light green
3 = lake blue B = light green
4 = red C = light red
5 = purple D = lavender
6 = yellow E = light yellow
7 = white F = bright white


注意:一个程序中永远是最后一个system(“color xx”)起作用