如何从 Linux 中删除远程 Windows 中的文件夹
How to delete a folder in remote Windows from 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();
}
我尝试删除远程 Windows 上的文件夹 C:/Temp,但没有成功。我没有得到任何异常,它通过了那个块。显然命令行是错误的,但我不知道。
非常感谢任何帮助。谢谢
在Windows中尝试
rmdir directoryname /s /q
根据文档
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/rd
/s 删除目录树(指定目录及其所有子目录,包括所有文件)。
/q 指定安静模式。删除目录树时不提示确认。 (请注意,/q 仅在指定 /s 时有效。)
你如何从 Linux 站 运行 这个 Windows 命令...问得好
最初将此添加为评论,但升级为答案以获得更多可见性。
通过 ssh 在 Windows 服务器上执行 rm 命令。这将要求您在 Windows 上设置一个 ssh 服务器,cygwin 看起来是最好的选择之一。一旦您设置了 ssh 服务器,执行远程 rm 命令将使用命令 ssh IEUser@10.2.2.240 "rm -rf /cygdrive/c/Temp"
。
rm 是 Linux 的命令 windows 上的命令行等效命令是 del 命令:
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\*"
实现此目的的另一种方法是直接从 Web 服务器执行此操作,方法是向您的网站添加一种清理资源的方法。
例如: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");
我正在对本地 (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();
}
我尝试删除远程 Windows 上的文件夹 C:/Temp,但没有成功。我没有得到任何异常,它通过了那个块。显然命令行是错误的,但我不知道。
非常感谢任何帮助。谢谢
在Windows中尝试
rmdir directoryname /s /q
根据文档 https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/rd
/s 删除目录树(指定目录及其所有子目录,包括所有文件)。
/q 指定安静模式。删除目录树时不提示确认。 (请注意,/q 仅在指定 /s 时有效。)
你如何从 Linux 站 运行 这个 Windows 命令...问得好
最初将此添加为评论,但升级为答案以获得更多可见性。
通过 ssh 在 Windows 服务器上执行 rm 命令。这将要求您在 Windows 上设置一个 ssh 服务器,cygwin 看起来是最好的选择之一。一旦您设置了 ssh 服务器,执行远程 rm 命令将使用命令 ssh IEUser@10.2.2.240 "rm -rf /cygdrive/c/Temp"
。
rm 是 Linux 的命令 windows 上的命令行等效命令是 del 命令:
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\*"
实现此目的的另一种方法是直接从 Web 服务器执行此操作,方法是向您的网站添加一种清理资源的方法。
例如: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");