Ordnerstruktur: Dateien in Unterordner verschieben
Moin zusammen,
schon mal Danke vorab für die Möglichkeit, hier Hilfe zu erhalten.
Ich habe in einem Ordner 300 Excel Dateien mit folgender Struktur:
1900007_SD_BW_DFMG_Doku-Tool_v3.3
1910166_SD_BW_DFMG_Doku-Tool_v3.3
etc
Jede einzelne soll in einen einzelnen Unterordner verschoben werden. Name für den Unterordner soll die 7 stellige Zahl am Anfang sein.
Ich habe bereits die Lösung von bastla probiert. Es hat nicht funktioniert
Musterlösungen: Dateien verschieben abhängig vom Teil des Dateinamens
Kann mir jemand erklären, wie ich vorgehen muss?
Besten Dank
schon mal Danke vorab für die Möglichkeit, hier Hilfe zu erhalten.
Ich habe in einem Ordner 300 Excel Dateien mit folgender Struktur:
1900007_SD_BW_DFMG_Doku-Tool_v3.3
1910166_SD_BW_DFMG_Doku-Tool_v3.3
etc
Jede einzelne soll in einen einzelnen Unterordner verschoben werden. Name für den Unterordner soll die 7 stellige Zahl am Anfang sein.
Ich habe bereits die Lösung von bastla probiert. Es hat nicht funktioniert
Musterlösungen: Dateien verschieben abhängig vom Teil des Dateinamens
Kann mir jemand erklären, wie ich vorgehen muss?
Besten Dank
Please also mark the comments that contributed to the solution of the article
Content-Key: 6841358310
Url: https://administrator.de/contentid/6841358310
Printed on: May 9, 2024 at 09:05 o'clock
11 Comments
Latest comment
Moin
-Thomas
$folder = 'C:\tmp'
Get-ChildItem -Path $folder -File | Foreach-Object {
$targetFolder = Join-Path -Path $folder -ChildPath $_.Name.Substring(0,7)
if(!(Test-Path $targetFolder)){
New-Item -ItemType Directory $targetFolder
}
Move-Item -Path $_.FullName -Destination $targetFolder
}
-Thomas
Zitat von @Crusher79:
Kurzttest war ok gerade.
$Dateien = "C:\temp\excel\"
gci $Dateien | % {
New-Item -ItemType directory $($_.BaseName.Split("_"))[0];
Move-Item $_.FullName $Dateien"$($_.BaseName.Split("_")[0])\";
}
Kurzttest war ok gerade.
$Dateien = "C:\temp\excel\"
Get-ChildItem $Dateien | Foreach-Object {
New-Item -ItemType directory $($_.BaseName.Split("_"))[0]
Move-Item $_.FullName $Dateien"$($_.BaseName.Split("_")[0])\"
}
Aliase haben in Skripten nichts zu suchen
und ohne Test-Path gibts ne rote wall of death, wenn das Skript öfters ausgeführt werden soll.
(alternativ New-Item mit -ErrorAction SilentlyContinue, ist aber nicht so sauber)
Ich empfehle noch Join-Path, dann ist es egal ob
$Dateien = "C:\temp\excel\"
$Dateien = "C:\temp\excel"
Du meinst bestimmt Wurstel - oder den Nick den er danach hatte ;)
Ich hatte nun Zeit, eure Lösungen auszuprobieren. Ich denke mal, Ihr habt mir zu viel zugetraut. Funktioniert hat es nicht. Die Lösung habe ich woanders gefunden. Sie sieht so aus:
Das macht aber nicht das, was du eigentlich gefordert hast. Die Unterordner werden nicht nur die 7-stellige Zahl haben sondern den ganzen Dateinamen.
Die Powershell-Skripte von oben kannst du als .ps1 abspeichern und dann mit rechtsklick -> "Mit Powershell ausführen" starten.
Bei mir klappt das ...
https://i.imgur.com/75yufkz.gif
soll kopiert
oder verschoben werden?
https://i.imgur.com/75yufkz.gif
jedoch wird die Datei nicht hinein kopiert,
soll kopiert
Jede einzelne soll in einen einzelnen Unterordner verschoben werden.
oder verschoben werden?
Wundert mich
@3063370895 hat auch nur mti $_.Fullname gearbeitet. Wenn des nur "Datei" ist, wird die Endung abgeschnitten. PUNKT und nichts weiter.
Fullname ist Pfad + Datei -Name + Endung
Basename ist Datei-Name
Hast du irgendwo selber FullName in Basename geändert? Finde so auch bei @3063370895 keinen Fehler. Fullname und Basename würden da was ausmachen.
PS: Windows 10 oder Windows 7? Einige hängen ja noch an der 7. PowerShell verhielt sich früher ggf. bei einigen Operationen leicht anders.....
@3063370895 hat auch nur mti $_.Fullname gearbeitet. Wenn des nur "Datei" ist, wird die Endung abgeschnitten. PUNKT und nichts weiter.
Fullname ist Pfad + Datei -Name + Endung
Basename ist Datei-Name
Hast du irgendwo selber FullName in Basename geändert? Finde so auch bei @3063370895 keinen Fehler. Fullname und Basename würden da was ausmachen.
PS: Windows 10 oder Windows 7? Einige hängen ja noch an der 7. PowerShell verhielt sich früher ggf. bei einigen Operationen leicht anders.....