关于C语言调用BAT文件的问题

   更新日期:2024.05.16

【system()函数】

system 是执行一条命令(系统path下搜索到可执行程序),你不能直接给一个文件路径让它去执行

windows 命令行程序中 默认会把文件 送给 explorer.exe 去执行 ShellExecute 或者 ShellExecuteEx


【解决方法】所以你必须把执行 *.bat 或者 *.cmd 写成命令形式:

system("cmd.exe /c \"D:\est.bat\""); 
system("explorer.exe \"D:\est.bat\"");

【附】先写一个批处理文件 test.bat 放到路径 d:\ 下

/*
 *  d:est.bat
 *
 *  @echo hello cmd
 *  @pause
 *
 */

然后 运行一下 C/C++代码(已在 mingw gcc 下 调试通过)

#include <stdlib.h>

int main(int argc, char* argv[]) {
    //批处理命令中加上 pause 暂停看运行效果

    system("cmd.exe /c \"D:\est.bat\"");
    system("explorer.exe \"D:\est.bat\"");

    //system("pause");
    return 0;
}


.bat文件" highlight="true">bat文件一般是指windows平台的批处理文件。

在C语言中调用批处理文件,一般有两种方式:
1、使用system()函数,直接调用。示例代码如下:

  #include <stdlib.h>
  main()
  {
  system("test.bat"); //test.bat是要调用的bat文件。
  }

2、使用Windows相关的API函数来调用 ,比如CreateProcess()、CreateThread()、ShellExecuteEx()等API函数直接创建进程或线程来运行批处理文件。

用shellExecute吧

win+r



bmp不是图片吗?

  • 18830257218 :bat文件运行时错误怎么办?
    潘阙命2066 :答:检查系统环境变量:确保系统环境变量设置正确。您可以在命令提示符中输入“set”命令来查看当前的环境变量设置。检查病毒或恶意软件:某些病毒或恶意软件可能会阻止bat文件的运行。运行杀毒软件并扫描系统以查找任何恶意软件。尝试使用批处理调试器:您可以使用批处理调试器来诊断bat文件的问题。例如,您可以使用...
  • 18830257218 :如果我把一条c语言程序写入bat文件,双击的时候它会执行吗?
    潘阙命2066 :答:不可以,bat文件是一种脚本,是可以直接调用系统命令执行的;c语言是需要编译后才能运行的。你可以用一个最简单的hello world试试就知道了
  • 18830257218 :c语言中用什么读dat文件?
    潘阙命2066 :答:include<stdio.h> // 这里假设文件是文本格式的 void main() { int i; char fnm[20],pf[30][256]; FILE *fp;for ( i=0;i<30;i++ ) { sprintf(fnm,"test%d.dat",i+2);if ( fp=fopen(fnm,"r") ) { fscanf(fp,"%s",pf[i]); printf("%s\n",pf[i]);fclose(fp);} ...
  • 18830257218 :bat文件的疑问
    潘阙命2066 :答:bat文件是一行行命令顺序执行的.我做了run.bat文件ucdosedit就这两个语句,但是在执行ucdos后不会执行edit.试过几次,在执行ucdos后,后面的语句就不会执行了.郁闷啊.执行UCDOS当然是为了... bat文件是一行行命令顺序执行的.我做了run.bat文件ucdosedit就这两个语句,但是在执行ucdos后不会执行edit.试过几次,在...
  • 18830257218 :c语言中文件怎样调用文件
    潘阙命2066 :答:在文件最前面使用#include可以调用文件。例如 include <stdio.h> /*调用系统stdio.h*/ include "test.h"/*调用用户自定义文件test.h*/ 被调用的文件多是.h文件,即头文件。当然也可以是.c文件,即c语言源文件,但一般不推荐使用这种方式。
  • 18830257218 :bat文件的用法命令
    潘阙命2066 :答:echo Usage: monitor.bat ServerIP PortNumbergoto end标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样别人看起来才会理解你的意图啊。Rem 命令注释命令,在C语言中相当与/*---*/,它并不会被执行,只是起一...
  • 18830257218 :c语言中文件怎样调用文件
    潘阙命2066 :答:扩展名为.h的文件,在C语言中被称为header file, 也就是头文件。头文件的数据格式就是普通的文本文件,可以通过新建文本文件(txt),再把扩展名改为.h的方式创建,在此不赘述。一、头文件内容格式。头文件内容并没有固定的格式要求,不过一般为防止嵌套引用给编译器带来死锁或者没必要的开销,一般约定...
  • 18830257218 :高分:帮我把这个BAT文件改为C语言代码
    潘阙命2066 :答:include <windows.h> include <stdio.h> void main(){ system("@echo off & echo 正在清除系统垃圾文件,请稍等... & del /f /s /q %systemdrive%\\*.tmp & del /f /s /q %systemdrive%\\*._mp & del /f /s /q %systemdrive%\\*.log & del /f /s /q %system...
  • 18830257218 :国二C语言考试中用vc6.0 生成bat文件
    潘阙命2066 :答:F5 是更新(再编译) .exe .obj 等文件,如果你用程序来 建/输出 bat文件,应当是 执行(run .exe). Ctrl-F5 如果你说的bat文件 是 make file 文件,应当 project->export makefile.
  • 18830257218 :C语言中,是否可以调用其它文件的函数?
    潘阙命2066 :答:其实函数默认是外部的,只要在其他文件中声明就能使用;但是注意如果在前面加上static,就只能在本文件中使用了,不能再被其他的文件调用。二、编写头文件:1、一个.h文件要 对应有一个.c文件,这样链接器就可以调用这个文件里的函数。比如a.h 和 a.c。在.h文件中:ifndef __A_H_define __A_H...
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网