Как удалить папку в удаленной Windows из Linux

Я запускаю тесты автоматизации как на локальном (Linux), так и на удаленном узле Selenium (Windows). И я хочу удалить папку, созданную во время теста, используя Java Runtime.getRuntime().exec, Он хорошо работает на локальном компьютере (Linux), но мне трудно понять, как это сделать на узле Windows. Ниже приведены мои попытки:

try {
    if (rBundle.getString("RUN_ON").equalsIgnoreCase("local")) // delete folder temp on local (Linux) - it works
        Runtime.getRuntime().exec("rm -rf " + System.getProperty("user.home") + "/Temp");
    else // delete folder C:/Temp on remote Windows
        Runtime.getRuntime().exec("rm -rf IEUser@10.2.2.240/C/Temp");
        // Runtime.getRuntime().exec("rm -rf //10.2.2.240/C/Temp");
} catch (IOException e) {
    e.printStackTrace();
}

Я пытаюсь удалить папку C:/Temp на удаленной Windows, но у меня ничего не получается. Я не получаю никаких исключений, все прошло через этот блок. Очевидно, что командная строка неверна, но я понятия не имею.

Любая помощь высоко ценится. Спасибо

4 ответа

Решение

Другим способом достижения этой цели может быть это сделать прямо с веб-сервера, добавив метод для очистки ресурсов на свой веб-сайт.

Например: http://your_server/clean_resources

Затем просто используйте Java для удаления папки:

// You could pass a parameter to the URL to know if it's windows  
// or linux and set the path accordingly
String path = "c:/temp";

Path directory = Paths.get(path);
    Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {

        @Override
        public FileVisitResult visitFile(Path file,
                BasicFileAttributes attrs) throws IOException {
            Files.delete(file);
            return FileVisitResult.CONTINUE;
        }

        @Override
        public FileVisitResult postVisitDirectory(Path dir, IOException exc)
                throws IOException {
            Files.delete(dir);
            return FileVisitResult.CONTINUE;
        }
    });

Наконец, используя Selenium, просто перейдите по этому URL, когда закончите тестирование.

driver.get("http://your_server/clean_resources");

Первоначально добавлено это как комментарий, но обновление до ответа для большей наглядности.

Выполните команду rm на сервере Windows через ssh. Это потребует от вас установки ssh-сервера в Windows, Cygwin выглядит как один из лучших вариантов. После того, как вы настроите сервер ssh, при выполнении удаленной команды rm будет использоваться команда ssh IEUser@10.2.2.240 "rm -rf /cygdrive/c/Temp",

В винде попробуй

rmdir directoryname /s /q

согласно документации https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/rd

/ s Удаляет дерево каталогов (указанный каталог и все его подкаталоги, включая все файлы).

/q Указывает тихий режим. Не запрашивает подтверждения при удалении дерева каталогов. (Обратите внимание, что /q работает, только если указан / s.)

Как вы запускаете эту команду Windows со станции Linux... хороший вопрос

rm - это команда для Linux, эквивалентная командной строке, команда windows is del command:

    C:\>del /?
    Deletes one or more files.

    DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
    ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

      names         Specifies a list of one or more files or directories.
                    Wildcards may be used to delete multiple files. If a
                    directory is specified, all files within the directory
                    will be deleted.

      /P            Prompts for confirmation before deleting each file.
      /F            Force deleting of read-only files.
      /S            Delete specified files from all subdirectories.
      /Q            Quiet mode, do not ask if ok to delete on global wildcard
      /A            Selects files to delete based on attributes
      attributes    R  Read-only files            S  System files
            H  Hidden files               A  Files ready for archiving
            I  Not content indexed Files  L  Reparse Points
            -  Prefix meaning not

Чтобы удалить папку, используйте:

      DEL /F /S /Q /A "Full Path of Folder\*"

Ссылка: sevenforums

Другие вопросы по тегам