Ordner vom Dateinamen erstellen

Seite 1 von 1 - Forum: Applications, Apps & Drivers auf overclockers.at

URL: https://www.overclockers.at/applications/ordner-vom-dateinamen-erstellen_230372/page_1 - zur Vollversion wechseln!


coolem schrieb am 10.06.2012 um 12:51

Hallo!

Ich suche jetzt seit ein Paar tagen die Möglichkeit einen Ordner bzw mehrere Ordner zu erstellen die den gleichen namen haben wie eine Datei.

Zb.:
Dateiname: 1234567.xxx
Ordnername: 1234567

Habe bis jetzt etwas gefunden das es mit einer .bat Datei Funktionieren soll nur da Blick ich absolut nicht durch. da steht ein Script drin was das macht. u. auch die Datei in den jeweiligen Ordner verschiebt.

Evtl. Kann mir hier wer weiter Helfen. oder Sogar mir des Script schreiben. Müsste mir nur sagen was er alles wissen muss.

Ideal wäre ein Programm was des macht. Doch leider noch nichts gefunden. :(
Wenn es sich nur um 5-10 Ordner handeln würde würde ich die Ordner selber erstellen u. verschieben doch leidet handelt es sich in meinen Fall um ü. 800 Ordner...


sts schrieb am 10.06.2012 um 13:36

folgendes PowerShell Skript sollte die Ordner erstellen...

Code:
$files = Get-ChildItem "C:\temp" -Recurse | Where-Object {!$_.psiscontainer};

foreach($file in $files)
{
	$folderPath =  "$($file.DirectoryName)\$($file.BaseName)";

	if (!(Test-Path -PathType Container $folderPath))
	{
		New-Item -Path $folderPath -type Directory;
	}
} 


COLOSSUS schrieb am 10.06.2012 um 13:43

GNU bash:

Code:
for i in *.xxx; do mkdir -p "${i%.*}"; mv -v "$i" "${i%.*}"; done

(Erledigt das Erstellen und Verschieben in einem Aufwasch.)


coolem schrieb am 10.06.2012 um 13:45

Danke für Die Hilfe.

Mein Problem liegt bei diesen Skripts das ich da so viel verstehe wie vom zusammenbauen eines Flugzeugs.

Muss ich das jetzt so kopieren wie es da drin steht in eine text Datei und diese dann als .bat abspeichern in dem Ordner wo ich das machen will? Oder egal wo ich sie abspeichere nur wo schreibe ich dann den Pfad rein wo ich die Dateien "auslesen" will u. dann die Dateien einfügen will?


sts schrieb am 10.06.2012 um 13:50

sry...

handlet sich wie schon gesagt um ein PowerShell Skript, also als *.ps1 Datei speichern und dann mittels PowerShell ausführen

Den Ordner in welchem die ganzen Dateien liegen musst du in der ersten Zeile entsprechend anpassen (Get-ChildItem "C:\temp") durch den Prameter -Recurse werden auch sämtliche Unterordner nach Dateien durchsucht, falls das nicht gewünscht wird einfach entfernen...

EDIT: sollen die Dateien danach auch in den jeweiligen (erstellten) Ordner verschoben werden? (Skript erstellt lediglich die Ordner, kann das aber noch schnell abändern)


coolem schrieb am 10.06.2012 um 13:55

Danke.

jedes mal wenn ich die Datei mit PowerShell ausführen will kommt kurz ein DOS Fenster was sich auch gleich wieder schließt mit einer Roten schrift. - Leider kann ich nicht sagen was der schreibt da es nur ganz kurz da is


coolem schrieb am 10.06.2012 um 13:56

Nachtrag: E:\Downloads\test.ps1" kann nicht geladen werden, da die Ausführung von Skripts auf diesem System deaktiviert ist. Weitere Informationen erhalten Sie mit "get-help about_signing".
At line:0 char:0


sts schrieb am 10.06.2012 um 14:00

achso ja, das ist aus Sicherheitsgründen von Haus aus so eingestellt, kannst du mit "Set-ExecutionPolicy unrestricted" ändern (muss als Administrator ausgeführt werden)


coolem schrieb am 10.06.2012 um 14:14

jetzt kommt bei mir das hier:
Unerwartetes Token ":" im Ausdruck oder in der Anweisung.
Bei E:\test.ps1:2 Zeichen:4
+ 2: <<<< $files = Get-ChildItem "E:\Downloads" -recurse | Where-Object {!$_.psiscontainer};
+ CategoryInfo : ParserError: (::String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken


sts schrieb am 10.06.2012 um 14:18

die ganzen zeilennummern samt Doppelpunkt müssen entfernt werden :)


coolem schrieb am 10.06.2012 um 14:23

Hups.

Jetzt gibt er mir noch nicht die Dateien in den jeweiligen Ordner rein... kann man das auch noch machen? Oder steht das eigl schon drin nur ich hab noch was falsch?


sts schrieb am 10.06.2012 um 14:34

natürlich geht das :)

Code:
$files = Get-ChildItem "D:\test" -Recurse | Where-Object {!$_.psiscontainer};

foreach($file in $files)
{
	$folderPath =  "$($file.DirectoryName)\$($file.BaseName)";

	if (!(Test-Path -PathType Container $folderPath))
	{
		New-Item -Path $folderPath -type Directory;
	}

	Move-Item "$($file.DirectoryName)\$($file.Name)" $folderPath;
} 

sry für die "schwere geburt" bin noch net ganz nüchtern von gestern :D


coolem schrieb am 10.06.2012 um 17:36

:D

Ich liebe dich Tassdingo :D

Du hast mir wohl Stunden von Arbeit abgenommen :)




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025