2

以下に示すように、コンピューター名を含むファイルが C++ ファイルによって読み取られる単純なプログラムに取り組んでいます。

//Previously, the file containing names was opened and 
//getline() is in use to read each line
//note that 'line' is a string containing the current line being read 

string comp = lower(trim(line.erase(0, 2)));

//lower converts to lowercase (for later in the program) and 
//trim trims the beginning and ends of the string.  
//I have erased the first two characters, since they contain two \'s
ofstream bat;
bat.open("names_get.bat");
if (bat.is_open()) {                                     
    bat << "wmic.exe /node:"+comp+" ComputerSystem Get UserName >CompNames.txt";
    bat.close();
}

これはすべて完全に機能します。ただし、shellexecute を使用してこのバッチ ファイルを実行すると、問題が発生します。私の問題は、コマンド プロンプトが "Owner-PC" などのコンピューター名に遭遇し、パラメーターとして - を使用することで、無効なグローバル スイッチ エラーが発生することです。そのようなイベントでダッシュを回避する方法について、誰かが正しい方向に私を向けることができますか. ありがとうございます。長い質問で申し訳ありません。

4

1 に答える 1

0

あなたのcomp名前を"Likeで囲む必要があります

 wmic.exe /node:"prefix-suffix" ComputerSystem Get Username

したがって\"、コードを追加すると動作するはずです

if (bat.is_open()) {                                     
    bat << "wmic.exe /node:\""+comp+"\" ComputerSystem Get UserName >CompNames.txt";
    bat.close();
}
于 2013-08-16T07:17:59.407 に答える