Как удалить папку в удаленной 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\*"