Powershell Skript Ordner erstellen nach Dateiname
mmaier 14.07.2020 - 09:32 2059 3
mmaier
Bloody Newbie
|
Servus alle! Ich habe hier schon einen Post gelesen, in dem es darüber ging, wie ich einen Ordner aus einem Dateinamen erstelle. (Powershell) Jedoch möchte ich es ein wenig anders haben, aber dadurch, dass ich keine Ahnung davon habe, frage ich hier, ob eventuell jemand so nett wäre und mein Skript etwas ergänzen möchte. Meine Dateien (JahrMonatTagStundeMinuteSekunde.txt): 20190410075156.txt 20200708152832.txt Mein derzeitiger Code: $files = Get-ChildItem "C:\Users\wtb-mmaier\Desktop\vondort\*.txt" | Where-Object {!$_.psiscontainer};
foreach($file in $files)
{
$folderPath = "$($file.DirectoryName)\$($file.BaseName.Substring(0,4))";
if (!(Test-Path -PathType Container $folderPath))
{
New-Item -Path $folderPath -type Directory;
}
Move-Item "$($file.DirectoryName)\$($file.Name)" $folderPath;
}
Dieser Code erstellt mir schon mal die Ordner mit dem Jahr und verschiebt die Dateien ins richtige Jahr (alles vom Dateinamen ausgehend). Jetzt möchte ich aber, dass in den "Jahres-Ordner" auch noch "Monats-Ordner" erstellt werden. Kann mir da jemand helfen?
|
sichNix
Here to stay
|
Mit einem substring(4,6) solltest auch die Monate rausbekommen und dann kannst genau so vor gehen, wie bei den Jahren. Ich hab leider grad keinen PC zur Hand das ich dir das schnell rausschreib, bin nur am Handy, sry.
|
mmaier
Bloody Newbie
|
Wäre nett, wenn du es mir schreiben könntest. Ich probiere gerade die ganze Zeit herum. Mit Substring(4,6) geht es nicht, nur mit Substring(4,2). Die Monats-Ordner werden mir erstellt, aber nicht in den Jahres-Ordner, sondern separat und die .txt-Dateien werden nur ins Jahr verschoben.
|
Barokai
Big d00d
|
würde dann so in etwa aussehen $files = Get-ChildItem -File "C:\temp\ps\*.txt"
foreach ($file in $files) {
$folderPath = Join-Path $file.DirectoryName $($file.BaseName.Substring(0, 4)) $($file.BaseName.Substring(4, 2))
if (!(Test-Path -PathType Container $folderPath)) {
New-Item -Path $folderPath -type Directory
}
Move-Item $file $folderPath
}
hab es halt vereinfacht, aber sollte das gewünschte ergebnis sein
|