找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21210|回复: 7

怎样把多行命令放在C语言中编写、编译通过呢?

[复制链接]
发表于 2013-3-28 13:17:34 | 显示全部楼层 |阅读模式
在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
复制代码
发表于 2013-3-28 13:32:59 | 显示全部楼层
用&连接起来。不过你的批处理本身都有问题吧
 楼主| 发表于 2013-3-28 23:59:33 | 显示全部楼层
回复 2# ShadowFiend


    能给个带有多条批处理语句的C代码看看么?
发表于 2013-3-29 16:38:47 | 显示全部楼层
  1. system("echo 11111&set /p var=请输入:&call echo %var%&pause");
复制代码
 楼主| 发表于 2013-3-29 19:45:47 | 显示全部楼层
本帖最后由 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.         //这个由于双引号的问题编译不过的。。
  6.        
  7.         while(1)
  8.         {
  9.                 system("@echo off&set /p Input=输入或拖入文件夹:&:Continue&set /p KeyWord=关键字:&findstr /imsc:"%KeyWord%" "%Input:"=%\*.*"&pause&cls&goto Continue&");               
  10.         }
  11.                
  12.         return 0;
  13.        
  14. }
复制代码
发表于 2013-3-30 00:41:39 | 显示全部楼层
你换个思路啊,用个指针指向这个字符串,把这个字符指针传给system()啊
发表于 2013-3-30 00:55:19 | 显示全部楼层
本帖最后由 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"");
复制代码
发表于 2013-3-30 18:04:47 | 显示全部楼层
回复 8# xzwcn


    \*.* 改成 \\*.* 就对了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 04:53 , Processed in 0.019350 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表