Code :: Blocksからプログラムをビルドして実行すると、完全に機能します。しかし、 "/ bin"フォルダから手動で実行すると、system()で "temp.bat"を呼び出そうとするとリセットされます。何故ですか? 依存する特定のファイルがないため、それ自体が作成されます。バッチ実行可能なストリームファイルでsystem()を呼び出すと、ウィンドウでプログラムがリセットされる
ofstream filetmp1 ("temp1.bat", ios::out | ios::binary);
filetmp1 << "@echo off" << '\n';
filetmp1 << "echo user xyz> script.dat" << '\n';
filetmp1 << "echo xyz>> script.dat" << '\n';
filetmp1 << "echo get conntest.test>> script.dat" << '\n';
filetmp1 << "echo bye>> script.dat" << '\n';
filetmp1 << "ftp -n -s:script.dat xyz.com" << '\n';
filetmp1 << "del script.dat" << '\n';
filetmp1.close();
system ("temp1.bat"); //IF I REMOVE THIS LINE, THE PROGRAM WORKS HOW IT SHOULD, until the second system("temp1.bat")
system ("del temp1.bat");
system ("cls");
cout << "All data loaded!"; Sleep(1500);
system("cls");
ofstream filetmp ("temp1.bat", ios::out | ios::binary);
filetmp << "@echo off" << '\n';
filetmp << "echo user xyz> script.dat" << '\n';
filetmp << "echo xyz>> script.dat" << '\n';
filetmp << "echo cd app>> script.dat" << '\n';
filetmp << "echo lcd data>> script.dat" << '\n';
filetmp << "echo prompt n>> script.dat" << '\n';
filetmp << "echo mput *.txt>> script.dat" << '\n';
filetmp << "echo bye>> script.dat" << '\n';
filetmp << "ftp -n -s:script.dat xyz.com" << '\n';
filetmp << "del script.dat" << '\n';
filetmp.close();
system ("temp1.bat"); //WITH BOTH LINES REMOVED, IT WORKS. But I do not want to remove them, because I don't know alternative ways for them
system ("del temp1.bat");
system ("cls");
私はすべての詳細を言ったと思う: はここにいくつかのコードです。前もって感謝します。
この質問には実際に[mcve]が使用される可能性があります。 –
@IsaacLymanありがとう、私はそれを改訂しました。 – Abso
リセットで正確にはどういう意味ですか?また、削除呼び出しを取り出すと、temp1.batも作成されますか?もしそうなら、cmd.exeからtemp1.batを手動で実行できますか? –