DEV Community

loading...

Where mit Dart benutzen

flutterCode
always learning
・1 min read

Eine interessante Möglichkeit von Dart ist, es einen Prozess zu starten. In diesem Post betrachten wir den Where Befehl von Windows 10. In der Regel wird er in der PowerShell von Windows genutzt und lässt Sie eine Datei auf Ihrer lokalen Maschine suchen.

Where retourniert dabei im Erfolgsfall den absoluten Pfad der Datei. Hier ein Beispiel:

import 'dart:io';

void main(List<String> arguments) async {
  var executable = 'ls';
  if (Platform.isWindows) {
    executable = 'where';
  }

  final arguments = <String>['/r', 'c:\\', 'dart4.dart'];

  print('============');
  final cmd = await Process.start(executable, arguments, runInShell: true);
  await stdout.addStream(cmd.stdout);
  await stderr.addStream(cmd.stderr);
  final fehlerCode = await cmd.exitCode;
  print('============');
  print('Exit code: $fehlerCode');
}
Enter fullscreen mode Exit fullscreen mode

Der Code im Detail:

executable: Da der Code einen Prozess startet, muss bekannt sein, welchen Sie starten. Diese Information wird in dieser Variable gespeichert.

arguments: Dem Where Befehl selbst können verschiedene Parameter übergeben werden. Diese Parameter werden in der Listen Variable arguments gespeichert. Mit r veranlassen Sie, das die Suche rekursiv erfolgt, mit c: wird die Ebene benannt, wo die Suche startet.

Process.start: Das eigentliche Herzstück des Codes. Der Funktion werden die Variablen executable und arguments übergeben. Mit runInShell:true veranlassen Sie das der Process in der cmd Umgebung gestartet wird.

stdout / stderr: Sie können nun den Ausgabe-und Fehlerstream des Prozesses benutzen. Mit .addStream werden sie an die entsprechenden Kanäle unseres Dart Codes gekoppelt. Im Erfolgsfall bekommen sie den absoluten Pfad der gesuchten Datei in das Terminal gedruckt.

Discussion (0)