Zufällige Kombination aus einer gewissen Anzahl an Datein möglich?

1 Antwort

Von Experte Erzesel bestätigt

In PowerShell könnten Sie den folgenden Code verwenden, um zufällige Dateien auszuwählen und sie in Ordnern mit fortlaufenden Nummern zu speichern:

# Anzahl der Dateien, die ausgewählt werden sollen
$Anzahl = 35


# Anzahl der Ordner, die erstellt werden sollen
$OrdnerAnzahl = 30


# Pfad zu den 70 Textdateien
$DateiPfad = "C:\Pfad\zu\Dateien"


# Schleife zum Erstellen von Ordnern und Speichern von Dateien
for ($i = 1; $i -le $OrdnerAnzahl; $i++) {


    # Erstellen eines neuen Ordners mit fortlaufender Nummer
    $OrdnerName = "{0:D3}" -f $i
    $OrdnerPfad = Join-Path $DateiPfad $OrdnerName
    New-Item -ItemType Directory -Path $OrdnerPfad


    # Auswählen von zufälligen Dateien und Kopieren in den neuen Ordner
    Get-ChildItem $DateiPfad | Get-Random -Count $Anzahl | Copy-Item -Destination $OrdnerPfad
}



EclipseLight  14.03.2023, 16:57

Dieses Skript erstellt 30 Ordner mit fortlaufenden Nummern (001, 002, 003, usw.) und wählt aus den 70 Textdateien zufällig 35 aus, die dann in jedem Ordner gespeichert werden.

Hinweis: Stellen Sie sicher, dass der

$DateiPfad

-Parameter auf den tatsächlichen Pfad zu den 70 Textdateien auf Ihrem Computer verweist.

0
Ranjahh 
Beitragsersteller
 14.03.2023, 17:38
@EclipseLight

Voll gut! funktioniert fast perfekt, es gibt nur ein Problem und zwar, das der DateinPfad für die Ordner, ja der selbe ist, wie der, der Datein.

Dadurch kommt es vor, das auch Ordner genommen werden, die neu erstellt werden.

Ich habe probiert den dateipfad für die erstellte Ordner zu ändern, aber irgendwie klappt's nicht 😁

Wie änder ich das?

LG und vielen vielen dank schon mal!

0
EclipseLight  14.03.2023, 18:55
@Ranjahh
Um sicherzustellen, dass nur Dateien kopiert werden und nicht auch neu erstellte Ordner, müssen Sie sicherstellen, dass der Pfad nur Dateien enthält und keine Ordner. Sie können dies tun, indem Sie den Dateipfad in der Schleife ändern, bevor Sie die zufälligen Dateien auswählen.

Hier ist eine aktualisierte Version Ihres Codes, der den Dateipfad in der Schleife aktualisiert, um sicherzustellen, dass nur Dateien ausgewählt werden:

# Anzahl der Dateien, die ausgewählt werden sollen
$Anzahl = 35


# Anzahl der Ordner, die erstellt werden sollen
$OrdnerAnzahl = 30


# Pfad zu den 70 Textdateien
$DateiPfad = "C:\Pfad\zu\Dateien"


# Schleife zum Erstellen von Ordnern und Speichern von Dateien
for ($i = 1; $i -le $OrdnerAnzahl; $i++) {


    # Erstellen eines neuen Ordners mit fortlaufender Nummer
    $OrdnerName = "{0:D3}" -f $i
    $OrdnerPfad = Join-Path $DateiPfad $OrdnerName
    New-Item -ItemType Directory -Path $OrdnerPfad


    # Aktualisieren des Dateipfads, um sicherzustellen, dass nur Dateien ausgewählt werden
    $DateiPfadAktualisiert = Join-Path $DateiPfad "*.*"


    # Auswählen von zufälligen Dateien und Kopieren in den neuen Ordner
    Get-ChildItem $DateiPfadAktualisiert | Get-Random -Count $Anzahl | Copy-Item -Destination $OrdnerPfad
}


0
Erzesel  15.03.2023, 08:46

der "Shorty" dazu:

1..30|%{gci 'C:\Pfad\zu\Dateien' -file|Get-Random -c 35|copy -d (md $('{0:D3}'-f $_) -f)}
0