【问题标题】:C/C++ : Creating & Execute BatchC/C++:创建和执行批处理
【发布时间】:2015-12-02 09:58:27
【问题描述】:

我正在做一个小型私人项目,一个可以让我控制何时关闭我的电脑的程序(我已经知道那里有很多工具,但我仍然想对其进行编程)

到目前为止,我一直在命令菜单中使用命令行: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");
} 

提前感谢所有帮助。

【问题讨论】:

  • 为什么不直接运行关机命令而不写一个批处理文件并运行它?
  • 您是否将您的 C++ 程序称为“shutdown.exe”?如果是这样,那是你的问题。

标签: c++ windows batch-file shutdown


【解决方案1】:

首先,shutdown.bat 中有什么内容?确保它确实包含您的想法。

其次,你在PATH中写shutdown.bat的地方是?如果没有,您需要更改 PATH 或将完整路径传递给 system()

第三,.BAT 文件应该与 CMD.EXE 关联,但可以更改。确保关联没有改变。

第四,我认为system() 会使用文件关联,但它可能不会。 (我没有在 Windows 上使用过那个 API)。您可以随时说system("CMD /C shutdown.bat"); 不必担心这方面的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-26
    • 2021-11-24
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多