我有一个批处理文件,它将方向更改为特定的工具链,并执行如下命令:
cd C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin
avr-objcopy -O binary C:\Users\cinar\Desktop\hextobin\GccApplication.elf C:\Users\cinar\Desktop\hextobin\GccApplication.bin
我想用我的C应用程序执行此操作。我找到了this topic,尝试了system();
命令,它可以部分工作。我可以这样称呼:
system("cd");
然后回到方向。但我不能用这个命令改变它:
system("cd C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin");
这导致了关于未知转义的编译警告,所以我添加了\
来逃避并尝试了这个:
system("cd C:\\Program Files (x86)\\Atmel\\Studio\\7.0\\toolchain\\avr8\\avr8-gnu-toolchain\\bin");
我能够编译并运行它,但这并没有改变方向。
是否有可能使用system()
执行我的命令?因为我只想改变方向并执行一个命令,所以我想保持简单。
更新:之后我发现了这个话题: system("cd <path>") in a C program
然后用这个解决了我的问题:
chdir("C:\\Program Files (x86)\\Atmel\\Studio\\7.0\\toolchain\\avr8\\avr8-gnu-toolchain\\bin");
system("avr-objcopy -O binary C:\\Users\\cinar\\Desktop\\ff.elf C:\\Users\\cinar\\Desktop\\ff.bin");
答案 0 :(得分:3)
您的程序有一些不正确的假设。首先,"cd"
和"dir"
不是程序,而是内置在shell中的命令cmd.exe
。其次,我怀疑你根本不需要更改当前目录。
无论哪种方式,因为这是一个Windows系统,我会看一个如何使用CreateProcess()
启动程序的示例。
要更改当前目录,请查看CreateProcess()
来电的lpCurrentDirectory参数。
另外
system("dir Users\\whatEverNextFolder > test.txt");