我正在使用NWJS开发桌面应用程序,而我正在尝试执行命令来获取文件的属性,但它不适用于任何装有Windows XP的计算机,这里是代码:
在Windows 7和8上它运行得很好,我得到了属性,但在Win XP上没有做任何事情......没有错误,没有警报,任何事情,它根本什么都不做。 但是如果在cmd终端中复制/粘贴代码就可以了。
home.executeWinCmd = function () {
console.log('executing command');
var terminal = require('child_process').spawn('cmd');
terminal.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
terminal.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
terminal.on('exit', function (code) {
console.log('child process exited with code ' + code);
});
setTimeout(function() {
console.log('Sending stdin to terminal');
var command = '';
if($scope.config != undefined) {
if($scope.config.clientPath == undefined) {
command = 'wmic datafile where name="' + $scope.config.clientPath + '" get version\n';
} else {
command = 'wmic datafile where name="C:\\\\Clients\\\\StaClient.exe" get version\n';
}
} else {
command = 'wmic datafile where name="C:\\\\Clients\\\\StaClient.exe" get version\n';
}
console.log('command ' + command);
terminal.stdin.write(command);
terminal.stdin.end();
}, 1000);
}
编辑1 现在这个......出于某种原因。
现在这段代码不起作用,基本上是相同的,当我使用exec时,它什么都不做,没有错误没有stderr,没有stdout,没有。这真是令人不安
NodeModules.exec('wmic datafile where name="' + $scope.config.clientPath + '" get version', function (err, stdout, stderr) {
if (err) {
console.log(err);
Logger.log('ERRR', 'Error executing command: ' + err);
return;
}
if (stderr.length > 0) {
console.log(stderr);
Logger.log('ERRR', 'No Client Present return from stderr: ' + stderr);
$scope.timeout = $timeout($scope.timeoutFn, 3000);
return;
}
$scope.config.currentVersion = (stdout.substring('Version '.length, stdout.length)).trim();
$scope.config.phase = Enums.Phase.CHECK_RECENT;
Logger.log('REPR', 'Current Version ' + $scope.config.currentVersion);
});