"We are back" « oc.at

Ordner vom Dateinamen erstellen

coolem 10.06.2012 - 12:51 2746 12
Posts

coolem

Addicted
Registered: Sep 2003
Location: wien
Posts: 418
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


Registered: Feb 2008
Location: Lima
Posts: 197
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

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12122
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

Addicted
Registered: Sep 2003
Location: wien
Posts: 418
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


Registered: Feb 2008
Location: Lima
Posts: 197
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)
Bearbeitet von sts am 10.06.2012, 14:00

coolem

Addicted
Registered: Sep 2003
Location: wien
Posts: 418
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

Addicted
Registered: Sep 2003
Location: wien
Posts: 418
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


Registered: Feb 2008
Location: Lima
Posts: 197
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

Addicted
Registered: Sep 2003
Location: wien
Posts: 418
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


Registered: Feb 2008
Location: Lima
Posts: 197
die ganzen zeilennummern samt Doppelpunkt müssen entfernt werden :)

coolem

Addicted
Registered: Sep 2003
Location: wien
Posts: 418
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


Registered: Feb 2008
Location: Lima
Posts: 197
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

Addicted
Registered: Sep 2003
Location: wien
Posts: 418
:D

Ich liebe dich Tassdingo :D

Du hast mir wohl Stunden von Arbeit abgenommen :)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz