我正在开发一个小型私人项目,一个让我控制什么时候关闭PC的程序(我已经知道有很多工具在那里,但我仍然想编程它)C/C++:创建和执行批处理
截至目前为止,我一直在命令菜单中使用命令行:shutdown -s -t [x](x表示剩下的秒数)。
现在,我的程序应该自己计算剩余秒数,写入批处理文件&执行批处理文件。
我已经得到了它的所有工作,除了它应该执行批处理的部分。
它只是打开一个命令窗口,批处理的行显示在一个无限循环(没有实际执行该行,只是打印它)。
即使我只是创建批处理文件并使用我的鼠标在文件夹中执行它,它仍然不会执行命令行,只是在无限循环中显示它。
-
void create_batch(double sec){
ofstream batch;
batch.open("shutdown.bat", ios::out);
batch << "shutdown -s -t "<<sec;
batch.close();
}
int main(){
time_t now;
struct tm shut_down;
double seconds;
int hh;
int mm;
cout << "Enter hour you want to shutdown<hh>\t: ";
cin >> hh;
cout << "Enter minute you want to shutdown<mm>\t: ";
cin >> mm;
time(&now); // get current time
shut_down = *localtime(&now); // set shutdown date to today
shut_down.tm_hour = hh;
shut_down.tm_min = mm;
seconds = difftime(mktime(&shut_down), now);
create_batch(seconds);
system("shutdown.bat");
}
感谢提前所有帮助。
为什么不直接运行shutdown命令而不写一个批处理文件并运行它? –
你打电话给你的C++程序“shutdown.exe”吗?如果是这样,那就是你的问题。 –