说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

可不可以用c执行windows下的批处理文件?怎么编程?

编辑:说三道四文库 发布时间:2018-07-19 10:15
HTML文档下载 WORD文档下载 PDF文档下载
我想用c来编程执行一个批处理文件元件如下:

@echo off
pause
echo 正在清理系统垃圾文件,请稍等......
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
rd /s /q %windir%\temp & md %windir%\temp
del /f /q %userprofile%\cookies\*.*
del /f /q %userprofile%\recent\*.*
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
del /f /s /q "%userprofile%\recent\*.*"
echo 清理系统垃圾完成!
echo. & pause 


////////////
就是处理c盘垃圾文件的,然后想在源程序里加进这个功能
我的源程序如此:

#include <stdio.h>
#include <conio.h> //控制台输入输出 for getchar
#include <ctype.h>  // 字符处理 for toupper
#include <stdlib.h> //定义杂项函数及内存分配函数  for system

void main()
 {
   char letter;
   
   do {
     printf("A Display directory listing\n");
     printf("B Display disk information\n");
     printf("C Change system date\n");
     printf("Q Quit\n");
     printf("Choice: ");
     
     letter = getch();     
     letter = toupper(letter);//toupper把字符转化为大写 

     if (letter == 'A')
       system("DIR");
     else if (letter == 'B')
       system("CHKDSK");
     else if (letter == 'C')
       system("DATE");
    }
   while (letter != 'Q');
 }
////////////////////////////////////////////////////////////
希望各位大侠帮帮忙!谢谢了!!
该回复于2008-05-04 10:22:27被版主删除
system("filename.bat");
加个system就ok了嘛?我试试,先谢谢了!
#include <iostream>
using namespace std;
int main()
{
    system("d:/1.bat"); 
}
呵呵,谢谢二楼的大侠!真的可以了!!!
就是加个system就行了。哈哈。省事。
好了,也谢谢4楼的大侠,现在跟大家分享一下源程序:
#include <stdio.h>
#include <conio.h> //控制台输入输出 for getchar
#include <ctype.h>  // 字符处理 for toupper
#include <stdlib.h> //定义杂项函数及内存分配函数  for system

void main()
 {
   char letter;
   
   do {
     printf("A Display directory listing\n");
     printf("B Display disk information\n");
     printf("C Change system date\n");
     printf("D Clear c rubblish\n");
     printf("Q Quit\n");
     printf("Choice: ");
     
     letter = getch();     
     letter = toupper(letter);//toupper把字符转化为大写 

     if (letter == 'A')
       system("DIR");
     else if (letter == 'B')
       system("CHKDSK");
     else if (letter == 'C')
       system("DATE");
       else if(letter=='D')
       system("1.bat");//我把bat文件放在了原来程序的根目录下了,并命名为1
    }
   while (letter != 'Q');
 }
/////////////////////////////////////
bat文件:


@echo off
pause
echo 正在清理系统垃圾文件,请稍等......
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
rd /s /q %windir%\temp & md %windir%\temp
del /f /q %userprofile%\cookies\*.*
del /f /q %userprofile%\recent\*.*
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
del /f /s /q "%userprofile%\recent\*.*"
echo 清理系统垃圾完成!
echo. & pause 
////////////////////////////////////
呵呵,自己做的有点用的东东很高兴!!
ps:自己动手感觉很不错,我这个程序主要功能是清理c盘垃圾。大家可以自己加进些其他批处理文件来实现更多的功能到时要给我copy一份啊o(∩_∩)o...哈哈

有个小遗憾:用system只能调用外部文件,就是源程序里没有集成批处理文件,所以源程序离开了批处理文件就不能执行了

你可以这样

    system("echo 正在清理系统垃圾文件,请稍等......");
   system("del /f /s /q %%systemdrive%%\\*.tmp");
 
   ......
呵呵,是个idea,不过有点晕!
MARK
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘