Board logo

标题: 怎样把多行命令放在C语言中编写、编译通过呢? [打印本页]

作者: xzwcn    时间: 2013-3-28 13:17     标题: 怎样把多行命令放在C语言中编写、编译通过呢?

在windows中,如果想要在C语言中调用DOS命令通常是

先引入头文件:#include<windows.h>
然后调用:system("dos命令");

如查询IP的:
C源代码:
  1. #include<windows.h>
  2. int main()
  3. {
  4. system("ipconfig>ip.txt");
  5.          return 0:
  6. }
复制代码
但如果有多条语句的,如一个批处理,应该怎样编写呢?(不是在C中直接打开指定的批处理文件,如system("路径\XXX.bat");)

如以下代码,怎样在C上面实现 呢?
  1. @echo off
  2. set /p Input=输入或拖入文件夹:
  3. set /p KeyWord=关键字:
  4. findstr /imsc:"%KeyWord%" "%Input:"=%\*.txt"
  5. pause
复制代码

作者: ShadowFiend    时间: 2013-3-28 13:32

用&连接起来。不过你的批处理本身都有问题吧
作者: xzwcn    时间: 2013-3-28 23:59

回复 2# ShadowFiend


    能给个带有多条批处理语句的C代码看看么?
作者: ShadowFiend    时间: 2013-3-29 16:38

  1. system("echo 11111&set /p var=请输入:&call echo %var%&pause");
复制代码

作者: xzwcn    时间: 2013-3-29 19:45

本帖最后由 xzwcn 于 2013-3-29 19:46 编辑

回复 4# ShadowFiend

涉及到引号问题的怎样处理呢?如下:
Batch:
  1. @echo off
  2. set /p Input=输入或拖入文件夹:
  3. :Continue
  4. set /p KeyWord=关键字:
  5. findstr /imsc:"%KeyWord%" "%Input:"=%\*.*"
  6. pause
  7. cls
  8. goto Continue
复制代码
C:
  1. #include<stdio.h>
  2. int main()
  3. {
  4. //这个由于双引号的问题编译不过的。。
  5. while(1)
  6. {
  7. system("@echo off&set /p Input=输入或拖入文件夹:&:Continue&set /p KeyWord=关键字:&findstr /imsc:"%KeyWord%" "%Input:"=%\*.*"&pause&cls&goto Continue&");
  8. }
  9. return 0;
  10. }
复制代码

作者: plp626    时间: 2013-3-30 00:41

你换个思路啊,用个指针指向这个字符串,把这个字符指针传给system()啊
作者: CrLf    时间: 2013-3-30 00:55

本帖最后由 CrLf 于 2013-3-30 00:56 编辑

回复 5# xzwcn
  1. 1、双引号用 \ 转义
  2. 2、这里用 %str% 得到的都是空值
  3. 3、标签仅在脚本中生效
复制代码
应该写成
  1. system("cmd /v/c\"@echo off&set /p Input=输入或拖入文件夹:&for /l %a in ()do "\
  2.        "set \"Key=\"&set /p Key=关键字:&(if #!Key!==# exit/b)&"\
  3.        "findstr /imsc:\"!Key!\" \"!Input:\"=!\*.*\"&pause\"");
复制代码

作者: CrLf    时间: 2013-3-30 18:04

回复 8# xzwcn


    \*.* 改成 \\*.* 就对了




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2