标题: 怎样把多行命令放在C语言中编写、编译通过呢? [打印本页]
作者: xzwcn 时间: 2013-3-28 13:17 标题: 怎样把多行命令放在C语言中编写、编译通过呢?
在windows中,如果想要在C语言中调用DOS命令通常是
先引入头文件:#include<windows.h>
然后调用:system("dos命令");
如查询IP的:
C源代码:- #include<windows.h>
- int main()
- {
- system("ipconfig>ip.txt");
- return 0:
- }
复制代码
但如果有多条语句的,如一个批处理,应该怎样编写呢?(不是在C中直接打开指定的批处理文件,如system("路径\XXX.bat");)
如以下代码,怎样在C上面实现 呢?- @echo off
- set /p Input=输入或拖入文件夹:
- set /p KeyWord=关键字:
- findstr /imsc:"%KeyWord%" "%Input:"=%\*.txt"
- pause
复制代码
作者: ShadowFiend 时间: 2013-3-28 13:32
用&连接起来。不过你的批处理本身都有问题吧
作者: xzwcn 时间: 2013-3-28 23:59
回复 2# ShadowFiend
能给个带有多条批处理语句的C代码看看么?
作者: ShadowFiend 时间: 2013-3-29 16:38
- 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:- @echo off
- set /p Input=输入或拖入文件夹:
- :Continue
- set /p KeyWord=关键字:
- findstr /imsc:"%KeyWord%" "%Input:"=%\*.*"
- pause
- cls
- goto Continue
复制代码
C:- #include<stdio.h>
-
- int main()
- {
-
- //这个由于双引号的问题编译不过的。。
-
- while(1)
- {
- system("@echo off&set /p Input=输入或拖入文件夹:&:Continue&set /p KeyWord=关键字:&findstr /imsc:"%KeyWord%" "%Input:"=%\*.*"&pause&cls&goto Continue&");
- }
-
- return 0;
-
- }
复制代码
作者: plp626 时间: 2013-3-30 00:41
你换个思路啊,用个指针指向这个字符串,把这个字符指针传给system()啊
作者: CrLf 时间: 2013-3-30 00:55
本帖最后由 CrLf 于 2013-3-30 00:56 编辑
回复 5# xzwcn - 1、双引号用 \ 转义
- 2、这里用 %str% 得到的都是空值
- 3、标签仅在脚本中生效
复制代码
应该写成- system("cmd /v/c\"@echo off&set /p Input=输入或拖入文件夹:&for /l %a in ()do "\
- "set \"Key=\"&set /p Key=关键字:&(if #!Key!==# exit/b)&"\
- "findstr /imsc:\"!Key!\" \"!Input:\"=!\*.*\"&pause\"");
复制代码
作者: CrLf 时间: 2013-3-30 18:04
回复 8# xzwcn
\*.* 改成 \\*.* 就对了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |