在 C 语言中执行窗口命令



我有一个批处理文件,它将方向更改为特定的工具链并执行如下命令:

cd C:Program Files (x86)AtmelStudio7.0toolchainavr8avr8-gnu-toolchainbin
avr-objcopy -O binary C:UserscinarDesktophextobinGccApplication.elf C:UserscinarDesktophextobinGccApplication.bin

我想用我的 C 应用程序来做到这一点。我找到了这个主题,尝试了system();命令,它部分有效。我可以称之为:

system("cd");

并找回方向。但是我不能用这个命令改变它:

system("cd C:Program Files (x86)AtmelStudio7.0toolchainavr8avr8-gnu-toolchainbin");

这导致了有关未知转义的编译警告,因此我在转义中添加了并尝试了以下操作:

system("cd C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin");

我能够编译并运行它,但这并没有改变方向。

是否有可能用system()执行我的命令?由于我只想改变方向并执行一个命令,因此我想保持简单。

更新:我后来发现了这个话题:系统("cd <路径>") 在 C 程序中

然后用这个解决了我的查询:

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");

您的程序有一些不正确的假设。首先,"cd""dir"不是程序,而是内置在 shell 中的命令,cmd.exe .其次,我怀疑您根本不需要更改当前目录。

无论哪种方式,由于这是一个 Windows 系统,我会看一个关于如何使用 CreateProcess() 启动程序的示例。

要更改当前目录,请查看CreateProcess()调用的 lpCurrentDirectory 参数。

system("dir Users\whatEverNextFolder > test.txt");

最新更新