diff --git a/cli/Commands/Users/UserDelete.php b/cli/Commands/Users/UserDelete.php
index 2ba854e60d8c0d61edb37e8928a424174306ff31..16e79a5c0b47cc4bb044de629055ba6e9c8f870f 100644
--- a/cli/Commands/Users/UserDelete.php
+++ b/cli/Commands/Users/UserDelete.php
@@ -16,14 +16,7 @@ class UserDelete extends Command
     {
         $this->setDescription('Delete users.');
         $this->setHelp('Delete multiple studip user accounts');
-        $this->addArgument('range', InputArgument::REQUIRED, 'Username or path to csv-file');
-        $this->addOption(
-            'file_range',
-            'f',
-            InputOption::VALUE_OPTIONAL,
-            'Set to true, if you want use a txt file with username',
-            true
-        );
+        $this->addArgument('range', InputArgument::REQUIRED, 'Path to csv-file or - to read from STDIN');
         $this->addOption('email', 'e', InputOption::VALUE_OPTIONAL, 'Send a deletion email', true);
         $this->addOption(
             'delete_admins',
@@ -37,53 +30,48 @@ class UserDelete extends Command
     protected function execute(InputInterface $input, OutputInterface $output): int
     {
         $range = $input->getArgument('range');
-        $file_range = $input->getOption('file_range');
         $email = $input->getOption('email');
         $delete_admins = $input->getOption('delete_admins');
 
-        if ($email && !($MAIL_LOCALHOST && $MAIL_HOST_NAME && $ABSOLUTE_URI_STUDIP)) {
-            $output->writeln(
-                "<error>To use this script you MUST set correct values for $MAIL_LOCALHOST, $MAIL_HOST_NAME and $ABSOLUTE_URI_STUDIP in local.inc!</error>"
-            );
-        }
-
-        if (!(bool) $file_range) {
-            $usernames = [$range];
-        } else {
-            if (!is_file($range)) {
-                $output->writeln(sprintf('<error>File not found: %s</error>', $range));
-                return Command::FAILURE;
-            }
+        if ($range === '-') {
+            $file = STDIN;
+        } elseif (is_file($range)) {
             $file = fopen($range, 'r');
-            $list = '';
-            while (!feof($file)) {
-                $list .= fgets($file, 1024);
-            }
-            $usernames = preg_split('/[\s,;]+/', $list, -1, PREG_SPLIT_NO_EMPTY);
-            $usernames = array_unique($usernames);
+        } else {
+            $output->writeln(sprintf('<error>File not found: %s</error>', $range));
+            return Command::FAILURE;
         }
 
-        $users = \User::findBySQL('username IN (?)', [$usernames]);
+        $list = '';
+        while (!feof($file)) {
+            $list .= fgets($file, 1024);
+        }
+        $usernames = preg_split('/[\s,;]+/', $list, -1, PREG_SPLIT_NO_EMPTY);
+        $usernames = array_unique($usernames);
 
-        if (!empty($users)) {
-            foreach ($users as $user) {
+        \User::findEachBySQL(
+            function (\User $user) use ($output, $delete_admins, $email) {
                 if (!$delete_admins && ($user->perms == 'admin' || $user->perms == 'root')) {
                     $output->writeln(sprintf('User: %s is %s, NOT deleted', $user->username, $user->perms));
+                    return;
+                }
+
+                $umanager = new \UserManagement($user->id);
+                //wenn keine Email gewünscht, Adresse aus den Daten löschen
+                if (!$email) {
+                    $umanager->user_data['auth_user_md5.Email'] = '';
+                }
+                if ($umanager->deleteUser()) {
+                    $output->writeln(sprintf('<info>User: %s successfully deleted:</info>', $user->username));
                 } else {
-                    $umanager = new \UserManagement($user->id);
-                    //wenn keine Email gewünscht, Adresse aus den Daten löschen
-                    if (!$email) {
-                        $umanager->user_data['auth_user_md5.Email'] = '';
-                    }
-                    if ($umanager->deleteUser()) {
-                        $output->writeln(sprintf('<info>User: %s successfully deleted:</info>', $user->username));
-                    } else {
-                        $output->writeln(sprintf('<error>User: %s NOT deleted</error>', $user->username));
-                    }
-                    $output->writeln(parse_msg_to_clean_text($umanager->msg));
+                    $output->writeln(sprintf('<error>User: %s NOT deleted</error>', $user->username));
                 }
-            }
-        }
+                $output->writeln(parse_msg_to_clean_text($umanager->msg));
+            },
+            'username IN (?)',
+            [$usernames]
+        );
+
         return Command::SUCCESS;
     }
 }