java - Sådan slettes en mappe i fjernbetjening Windows fra Linux

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg kører automatiseringstest på både lokale (Linux) og fjerntliggende Seleneknude (Windows). Og jeg vil slette en mappe, der er oprettet under testen, ved hjælp af Java Runtime.getRuntime().exec. Det fungerer fint på lokalt (Linux), men jeg har svært ved at finde ud af, hvordan man gør det på Windows-knudepunkt. Følgende er mine forsøg:


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();
}


Jeg forsøger at slette mappe C:/Temp på den eksterne Windows, men jeg har ingen succes. Jeg får ingen undtagelser, men det gik dog i den blok. Selvfølgelig er kommandolinjen forkert, men jeg har ingen idé.


Enhver hjælp meget værdsat. Tak

Bedste reference


En anden måde at opnå dette på kan være at gøre det direkte fra webserveren ved at tilføje en metode til dit websted for at rense ressourcerne.


For eksempel: http://din\_server/clean\_resources [9]


Brug derefter bare Java til at slette mappen:


// 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;
        }
    });


Endelig skal du bruge Selen til at navigere til denne webadresse, når du er færdig med din test.


driver.get("http://your\_server/clean\_resources");

Andre referencer 1


i Windows prøve


rmdir directoryname /s /q


som pr dokumentation
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/rd[10]


/s Sletter et bibliotekstræ (den angivne mappe og alle dens underkataloger, inklusive alle filer).


/q Angiver lydløs tilstand. Anmoder ikke om bekræftelse, når der slettes et katalogtræ. (Bemærk at/q kun virker hvis/s er angivet.)


Hvordan kører du denne Windows-kommando fra en Linux station ... godt spørgsmål

Andre referencer 2


Oprindeligt tilføjede dette som en kommentar, men opgradering til et svar for mere synlighed.


Udfør kommandoen rm på Windows-serveren over ssh. Dette kræver, at du opretter en ssh-server på Windows, og cygwin ser ud til at være en af ​​de bedste muligheder. Når du har konfigureret ssh-serveren, udføres kommandoen Remote [[rm]], kommandoen ssh IEUser@10.2.2.240 "rm -rf /cygdrive/c/Temp".

Andre referencer 3


rm er en kommando for Linux kommandolinie tilsvarende kommando på windows er del kommando:


    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


Sådan slettes en mappebrug:


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


Reference: sevenforums [11]