"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Powershell Skript Ordner erstellen nach Dateiname

mmaier 14.07.2020 - 09:32 1861 3
Posts

mmaier

Bloody Newbie
Registered: Jul 2020
Location: Österreich
Posts: 3
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:
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
Registered: Nov 2014
Location: 1230
Posts: 1021
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
Registered: Jul 2020
Location: Österreich
Posts: 3
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
Avatar
Registered: Sep 2012
Location: Mühl4tel - PE
Posts: 291
würde dann so in etwa aussehen

Code:
$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 :D
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz