Mit Batch gewünschte Bilder im gewünschten Unterordner löschen
Hallo ich bin`s wieder mal
,
brauch wieder mal euren Fachwissen um eine Batch Aufgabe zu lösen. Wie es schon im Titel steht, bräuchte ich einen Skript, mit dem ich einige Bilder in gewisse Unterordner löschen kann.
Ich vermute , dass es nicht so ganz klappt, wie ich es mir vorstelle.
Hauptverzeichnis: C:\ Ordner XYZ
Unterverzeichnis C:\Ordner XYZ\Ordner A
Unterverzeichnis C:\Ordner XYZ\Ordner B
Unterverzeichnis C:\Ordner XYZ\Ordner C
Weitere Unterverzeichnis : C:\ Ordner XYZ\Ordner A\Ordner AA
Weitere Unterverzeichnis : C:\ Ordner XYZ\Ordner B\Ordner BB
Weitere Unterverzeichnis : C:\ Ordner XYZ\Ordner C\Ordner CC
In den Ordnern (AA,BB,CC) sind mehrere Bilder. Gibt es einen Skript womit ich 1.) Nur die Bilder in AA und CC löschen kann ohne die BB zu berücksichtigen
2.) Beim löschen der Bilder in AA und CC, das Erste und das Letzte Bild zu behalten, also nicht zu löschen.
(Alles dazwischen zu löschen)
Über ein Umweg vielleicht mit copy?
Danke im Vorraus
MfG
brauch wieder mal euren Fachwissen um eine Batch Aufgabe zu lösen. Wie es schon im Titel steht, bräuchte ich einen Skript, mit dem ich einige Bilder in gewisse Unterordner löschen kann.
Ich vermute , dass es nicht so ganz klappt, wie ich es mir vorstelle.
Hauptverzeichnis: C:\ Ordner XYZ
Unterverzeichnis C:\Ordner XYZ\Ordner A
Unterverzeichnis C:\Ordner XYZ\Ordner B
Unterverzeichnis C:\Ordner XYZ\Ordner C
Weitere Unterverzeichnis : C:\ Ordner XYZ\Ordner A\Ordner AA
Weitere Unterverzeichnis : C:\ Ordner XYZ\Ordner B\Ordner BB
Weitere Unterverzeichnis : C:\ Ordner XYZ\Ordner C\Ordner CC
In den Ordnern (AA,BB,CC) sind mehrere Bilder. Gibt es einen Skript womit ich 1.) Nur die Bilder in AA und CC löschen kann ohne die BB zu berücksichtigen
2.) Beim löschen der Bilder in AA und CC, das Erste und das Letzte Bild zu behalten, also nicht zu löschen.
(Alles dazwischen zu löschen)
Über ein Umweg vielleicht mit copy?
Danke im Vorraus
MfG
46 Antworten
- LÖSUNG 126919 schreibt am 01.03.2016 um 10:11:18 Uhr
- LÖSUNG Weezyt schreibt am 01.03.2016 um 10:14:02 Uhr
- LÖSUNG 126919 schreibt am 01.03.2016 um 10:26:43 Uhr
- LÖSUNG Weezyt schreibt am 01.03.2016 um 10:32:46 Uhr
- LÖSUNG 126919 schreibt am 01.03.2016 um 10:42:19 Uhr
- LÖSUNG TlBERlUS schreibt am 01.03.2016 um 10:44:34 Uhr
- LÖSUNG Weezyt schreibt am 01.03.2016 um 11:06:12 Uhr
- LÖSUNG 126919 schreibt am 01.03.2016 um 11:09:17 Uhr
- LÖSUNG Weezyt schreibt am 01.03.2016 um 11:17:59 Uhr
- LÖSUNG 126919 schreibt am 01.03.2016 um 11:20:56 Uhr
- LÖSUNG Weezyt schreibt am 01.03.2016 um 11:28:36 Uhr
- LÖSUNG TlBERlUS schreibt am 01.03.2016 um 12:53:01 Uhr
- LÖSUNG Weezyt schreibt am 01.03.2016 um 13:05:03 Uhr
- LÖSUNG TlBERlUS schreibt am 01.03.2016 um 13:24:38 Uhr
- LÖSUNG Weezyt schreibt am 01.03.2016 um 14:05:42 Uhr
- LÖSUNG Weezyt schreibt am 01.03.2016 um 14:07:29 Uhr
- LÖSUNG TlBERlUS schreibt am 01.03.2016 um 14:15:17 Uhr
- LÖSUNG Weezyt schreibt am 01.03.2016 um 14:41:09 Uhr
- LÖSUNG Weezyt schreibt am 02.03.2016 um 07:55:02 Uhr
- LÖSUNG 126919 schreibt am 02.03.2016 um 09:31:46 Uhr
- LÖSUNG TlBERlUS schreibt am 02.03.2016 um 08:35:50 Uhr
- LÖSUNG Weezyt schreibt am 02.03.2016 um 10:01:23 Uhr
- LÖSUNG 126919 schreibt am 02.03.2016 um 10:04:22 Uhr
- LÖSUNG Weezyt schreibt am 02.03.2016 um 10:06:48 Uhr
- LÖSUNG 126919 schreibt am 02.03.2016 um 10:08:17 Uhr
- LÖSUNG Weezyt schreibt am 02.03.2016 um 11:14:32 Uhr
- LÖSUNG Weezyt schreibt am 02.03.2016 um 12:40:25 Uhr
- LÖSUNG Weezyt schreibt am 03.03.2016 um 08:14:55 Uhr
- LÖSUNG 126919 schreibt am 03.03.2016 um 10:29:58 Uhr
- LÖSUNG Weezyt schreibt am 03.03.2016 um 11:00:46 Uhr
- LÖSUNG 114757 schreibt am 03.03.2016 um 11:15:25 Uhr
- LÖSUNG Weezyt schreibt am 03.03.2016 um 11:23:09 Uhr
- LÖSUNG 114757 schreibt am 03.03.2016 um 11:25:46 Uhr
- LÖSUNG Weezyt schreibt am 03.03.2016 um 11:45:27 Uhr
- LÖSUNG Weezyt schreibt am 03.03.2016 um 11:48:49 Uhr
- LÖSUNG 114757 schreibt am 03.03.2016 um 12:21:16 Uhr
- LÖSUNG Weezyt schreibt am 03.03.2016 um 11:48:49 Uhr
- LÖSUNG Weezyt schreibt am 03.03.2016 um 13:01:40 Uhr
- LÖSUNG 114757 schreibt am 03.03.2016 um 13:03:57 Uhr
- LÖSUNG Weezyt schreibt am 04.03.2016 um 10:30:18 Uhr
- LÖSUNG 114757 schreibt am 04.03.2016 um 10:51:50 Uhr
- LÖSUNG Weezyt schreibt am 04.03.2016 um 11:08:24 Uhr
- LÖSUNG 114757 schreibt am 04.03.2016 um 11:10:59 Uhr
- LÖSUNG Weezyt schreibt am 04.03.2016 um 11:30:45 Uhr
- LÖSUNG 114757 schreibt am 04.03.2016 um 11:36:47 Uhr
- LÖSUNG Weezyt schreibt am 04.03.2016 um 11:45:19 Uhr
- LÖSUNG 114757 schreibt am 04.03.2016 um 11:46:27 Uhr
LÖSUNG 01.03.2016, aktualisiert um 10:11 Uhr
das Erste und das Letzte Bild zu behalten, also nicht zu löschen.
Was bedeutet bei dir erstes und letztes Bild ? Ist hier das Datum ausschlaggebend oder die alphabetische Sortierung der Bildernamen?fk
LÖSUNG 01.03.2016 um 10:14 Uhr
Oh sry für die blöde Beschreibung. Also ich meine das älteste Bild und das jüngste Bild sollten bleiben und alle anderen dazwischen gelöscht.
LÖSUNG 01.03.2016, aktualisiert um 10:44 Uhr
Powershell (PS 3.0):
gci 'c:\ordner\*' -Recurse -Directory -Include "Ordner AA","Ordner BB" | %{
$list = gci "$($_.Fullname)\*.*" -File | sort LastWriteTime
$list[1..($list.Length-2)] | remove-item -Force
}
LÖSUNG 01.03.2016 um 10:32 Uhr
Ist Powershell auch sowas ähnlichres? Also die Batch Skripte speichere ich alle im Texteditor mit der Endung .bat ab. Ist es da auch der Fall?
Zu deinem Skript: Bei gci ' c:\Ordner\* ' kommt das das Hauptverzeichnis rein Also Ordern XYZ?
Zu deinem Skript: Bei gci ' c:\Ordner\* ' kommt das das Hauptverzeichnis rein Also Ordern XYZ?
LÖSUNG 01.03.2016, aktualisiert um 10:43 Uhr
Zitat von @Weezyt:
Ist Powershell auch sowas ähnlichres? Also die Batch Skripte speichere ich alle im Texteditor mit der Endung .bat ab. Ist es da auch der Fall?
X)Ist Powershell auch sowas ähnlichres? Also die Batch Skripte speichere ich alle im Texteditor mit der Endung .bat ab. Ist es da auch der Fall?
https://de.wikipedia.org/wiki/Windows_PowerShell
Zu deinem Skript: Bei gci ' c:\Ordner\* ' kommt das das Hauptverzeichnis rein Also Ordern XYZ?
Ja, sonst hätte ich den Ordner ja anders benannt. X)LÖSUNG 01.03.2016 um 10:44 Uhr
Batch ist, außer auf alten System, tot.
Durchsucht den angegebenen Ordner und alle Unterordner (mit Include eingeschränkt)
Also die Batch Skripte speichere ich alle im Texteditor mit der Endung .bat ab. Ist es da auch der Fall?
Die werden als *.ps1 abgespeichert. Zu deinem Skript: Bei gci ' c:\Ordner\* ' kommt das das Hauptverzeichnis rein Also Ordern XYZ?
gci 'c:\ordner\*' -Recurse
Durchsucht den angegebenen Ordner und alle Unterordner (mit Include eingeschränkt)
LÖSUNG 01.03.2016 um 11:06 Uhr
gci 'c:\Users\VAT1RT\Desktop\Versuch' -Recurse -Directory -Include "FAL_XYR","FAL_Z" | %{
$list = gci "$($_.Directoryname)\*.*" | sort LastWriteTime
$list[1..($list.Length-2)] | remove-item -Force
}
Also so gebe ich es in Windows PowerShell ISE ein und versuche es auszuführen. Allerdings steht da mehrmals in rot geschrieben, InvalidArgument
C:\VS_ESPBSLN_x64 usw.
$list = gci "$($_.Directoryname)\*.*" | sort LastWriteTime
$list[1..($list.Length-2)] | remove-item -Force
}
Also so gebe ich es in Windows PowerShell ISE ein und versuche es auszuführen. Allerdings steht da mehrmals in rot geschrieben, InvalidArgument
LÖSUNG 01.03.2016, aktualisiert um 11:11 Uhr
Erstens hast du nicht meinen aktuellen Code oben kopiert (hatte ich kurz danach korrigiert), zweitens hast du beim Pfad das \* am Ende weggelassen was du in diesem speziellen Fall mit Include nicht vergessen darfst!
Ebenso wird für obigen Code min. PS 3.0 benötigt für 2.0 muss man es etwas umschreiben.
Ebenso wird für obigen Code min. PS 3.0 benötigt für 2.0 muss man es etwas umschreiben.
LÖSUNG 01.03.2016 um 11:17 Uhr
Ist die Umschreibung den aufwendig? Ich kenn mich halt überhaupt nicht damit aus.
LÖSUNG 01.03.2016, aktualisiert um 11:21 Uhr
st die Umschreibung den aufwendig? Ich kenn mich halt überhaupt nicht damit aus.
Nein kein Problem:gci 'c:\ordner\*' -Recurse -Include "Ordner AA","Ordner BB" | ?{$_.PSIsContainer} | %{
$list = gci "$($_.Fullname)\*.*" | ?{!$_.PSIsContainer} | sort LastWriteTime
$list[1..($list.Length-2)] | remove-item -Force
}
LÖSUNG 01.03.2016 um 11:28 Uhr
Ich versteh die Fehlermeldung nicht:
Cannot index into a null array.
At C:\Users\VAT1RT\Desktop\Löschen Jüngste und älteste.ps1:7 char:5
[], RuntimeException
+ FullyQualifiedErrorId : NullArray
Naja trotzdem Danke für deine Bemühungen. Du warst echt eine große Hilfe
MfG
Cannot index into a null array.
At C:\Users\VAT1RT\Desktop\Löschen Jüngste und älteste.ps1:7 char:5
$list[1..($list.Length-2)] | remove-item -Force
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (+ FullyQualifiedErrorId : NullArray
Naja trotzdem Danke für deine Bemühungen. Du warst echt eine große Hilfe
MfG
LÖSUNG 01.03.2016 um 12:53 Uhr
Soll uns das sagen, dass das Problem behoben ist?
Wenn ja, bitte noch entsprechend markieren.
Wenn ja, bitte noch entsprechend markieren.
LÖSUNG 01.03.2016 um 13:05 Uhr
Ja eigentlich ist es ja nicht behoben. Vielleicht noch ne Idee?
LÖSUNG 01.03.2016 um 13:24 Uhr
Teste mal nach und nach, wo der Fehler auftritt. Wenn ich das richtig sehe, scheint irgendwo eine der Datei-Übergaben fehlzuschlagen.
Läuft er hierbei schon in den Fehler?
gci 'c:\ordner\*' -Recurse -Include "Ordner AA","Ordner BB" | ?{$_.PSIsContainer} | %{
$list = gci "$($_.Fullname)\*.*" | ?{!$_.PSIsContainer} | sort LastWriteTime
Läuft er hierbei schon in den Fehler?
LÖSUNG 01.03.2016 um 14:05 Uhr
LÖSUNG 01.03.2016 um 14:07 Uhr
ahso das war wegen der fehlenden Klammer, aber so kommt kein Fehler, aber es führt auch nichts aus
LÖSUNG 01.03.2016 um 14:15 Uhr
Zitat von @Weezyt:
ahso das war wegen der fehlenden Klammer, aber so kommt kein Fehler, aber es führt auch nichts aus
Dann bitte bei jedem Mal um eine Pipe '|' kürzen/erweitern, bis du ein Ergebnis bekommst. z.B. mitahso das war wegen der fehlenden Klammer, aber so kommt kein Fehler, aber es führt auch nichts aus
gci 'c:\ordner\*' -Recurse -Include "Ordner AA","Ordner BB"
anfangen.
LÖSUNG 01.03.2016 um 14:41 Uhr
Bis zu dem Pipe: | sort LastWriteTime , kommt keine Fehlermeldung es führt aber auch nichts aus.
Alles dannach führt zu Fehlermeldung hier mal paar Screens zur Verdeutlichung
Ohne Fehlermeldung
Mit Fehlermeldung
Ordnerpfad
Ordnerpfad/Unterverzeichnis
Alles dannach führt zu Fehlermeldung hier mal paar Screens zur Verdeutlichung
Ohne Fehlermeldung
Mit Fehlermeldung
Ordnerpfad
Ordnerpfad/Unterverzeichnis
LÖSUNG 02.03.2016 um 07:55 Uhr
Keiner ne Idee?
LÖSUNG 02.03.2016 um 08:35 Uhr
Hi,
Hier müsste er dir, nach deiner Anpassung, Dateien ausgeben?
clear-host
gci 'C:\Desktop\test\*' -Recurse -Include "testAA"| ?{$_.PSIsContainer} | %{
$list = gci "$($_.Fullname)\*.*" | ?{!$_.PSIsContainer} | sort LastWriteTime
$list
#$list[1..($list.Length-2)] | remove-item -Force
}
Hier müsste er dir, nach deiner Anpassung, Dateien ausgeben?
LÖSUNG 02.03.2016, aktualisiert um 10:02 Uhr
Also Leute,
erstens bekommst du keine Ausgabe weil das Ergbnis der Variablen $list zugewiesen und nicht ausgegeben wird. Wenn diese leer ist also keine Dateien in dem Ordner in Frage kommen kommt es zu diesem Fehler, weil die Variable dann leer ist und somit auch kein Array ist.
Diese Situation kann man natürlich zusätzlich abfangen
Funktioniert hier so wie du deine Frage zu Anfang geschildert hast einwandfrei.
Der Fehler liegt leider bei dir.
So viel Heckmeck für so was simples ...X)
erstens bekommst du keine Ausgabe weil das Ergbnis der Variablen $list zugewiesen und nicht ausgegeben wird. Wenn diese leer ist also keine Dateien in dem Ordner in Frage kommen kommt es zu diesem Fehler, weil die Variable dann leer ist und somit auch kein Array ist.
Diese Situation kann man natürlich zusätzlich abfangen
gci 'c:\ordner\*' -Recurse -Include "Ordner AA","Ordner BB" | ?{$_.PSIsContainer} | %{
$list = gci "$($_.Fullname)\*.*" -recurse | ?{!$_.PSIsContainer} | sort LastWriteTime
if ($list){
if ($list.length -gt 2){
$list[1..($list.Length-2)] | remove-item -Force
}
}
}
Der Fehler liegt leider bei dir.
So viel Heckmeck für so was simples ...X)
LÖSUNG 02.03.2016 um 10:01 Uhr
Tut mir Leid, wenn ich dir deine letzten Nerven raube, aber wie gesagt ich kenne mich überhaupt nicht aus. Die Zeit mich in diesem Themengebiet reinzulesen, habe ich leider nicht.
Der Letzte Skript von dir zeigt keine Fehlermeldung auf, wenn ich es ausführe. Der Ordner ist aber wirklich nicht leer, da sind Bilder im .bmp Format. Ich habe nachgeschaut und, mir ist aufgefallen, dass die Bilder nicht direkt im Ordner AA und BB sind sondern in AA gibt es noch nochmal 2 Ordner Ordner AA\Ordner AAA und das Gleiche auch bei BB.
Aber ich denke das ist nicht ausschlaggebend oder, weil es sich eh um eine Rekursiven Durchlauf handelt.
Wie gesagt es passiert einfach nichts, nach dem neuen Skript.
Der Letzte Skript von dir zeigt keine Fehlermeldung auf, wenn ich es ausführe. Der Ordner ist aber wirklich nicht leer, da sind Bilder im .bmp Format. Ich habe nachgeschaut und, mir ist aufgefallen, dass die Bilder nicht direkt im Ordner AA und BB sind sondern in AA gibt es noch nochmal 2 Ordner Ordner AA\Ordner AAA und das Gleiche auch bei BB.
Aber ich denke das ist nicht ausschlaggebend oder, weil es sich eh um eine Rekursiven Durchlauf handelt.
Wie gesagt es passiert einfach nichts, nach dem neuen Skript.
LÖSUNG 02.03.2016, aktualisiert um 10:05 Uhr
Zitat von @Weezyt:
Ich habe nachgeschaut und, mir ist aufgefallen, dass die Bilder nicht direkt im Ordner AA und BB sind sondern in AA gibt es noch nochmal 2 Ordner Ordner AA\Ordner AAA und das Gleiche auch bei BB.
Ja das muss man schon wissen, die berühmte Glaskugel sagt uns das leider nicht !!!Ich habe nachgeschaut und, mir ist aufgefallen, dass die Bilder nicht direkt im Ordner AA und BB sind sondern in AA gibt es noch nochmal 2 Ordner Ordner AA\Ordner AAA und das Gleiche auch bei BB.
Aber ich denke das ist nicht ausschlaggebend oder, weil es sich eh um eine Rekursiven Durchlauf handelt.
Doch das ist sehr wohl ausschlaggebend. Ist im letzten Skript darauf hin angepasst.Wie gesagt es passiert einfach nichts, nach dem neuen Skript.
Weil du uns dieses Detail leider verschwiegen hast, deswegen!LÖSUNG 02.03.2016 um 10:06 Uhr
Oh verdammt es funktioniert tatsächlich wenn, die Bilder in Ordner AA und BB wären. Sry der Befehl muss doch angepasst werden für:
C:\Ordner \XYZ\Ordner A\Ordner AA\Ordner AAA
C:\Ordner \XYZ\Ordner B\Ordner BB\Ordner BBB
Tut mir echt Leid ist blöd von mir gewesen. Könnt ihr es für ein Letztes Mal anpassen das wäre echt nett.
MfG
C:\Ordner \XYZ\Ordner A\Ordner AA\Ordner AAA
C:\Ordner \XYZ\Ordner B\Ordner BB\Ordner BBB
Tut mir echt Leid ist blöd von mir gewesen. Könnt ihr es für ein Letztes Mal anpassen das wäre echt nett.
MfG
LÖSUNG 02.03.2016, aktualisiert um 10:28 Uhr
Hab ich doch gerade schon im Skript meines letzten Posts getan und abgeändert .... !
Bitte mal meine Kommentare richtig lesen. Danke.
Bitte mal meine Kommentare richtig lesen. Danke.
LÖSUNG 02.03.2016 um 11:14 Uhr
Danke für deine Ergänzung. Ich sehe irgendwie nicht auf Anhieb wenn du oben bei deiner Skript was änderst.
Es hast fast geklappt. Ich weiß auch warum es nicht ganz geklappt hat.
Bei dem Ordner : C:\Ordner XYZ\Ordner A\Ordner AA\ Ordner AAA funktioniert es prima, da es im Ordner AA nur ein Ordner AAA hat
Bei dem Ordner: C:\Ordner XYZ\Ordner B\Ordner BB\ Ordner BBB löscht es alle Bilder bis auf den ersten, da In Ordner BB, 2 Ordner drinne sind. Also Einmal den bekannten Ordner BBB und noch ein Ordner BBA.
So ungefähr : C:\Ordner XYZ\Ordner B\Ordner BB\ Ordner BBB
C:\Ordner XYZ\Ordner B\Ordner BB\ Ordner BBA
Wenn ich den Ordner BBA aus testgründen lösche dann funkt es. Wie gesagt es liegt daran das da eben noch ein Ordner vorhanden ist.
Noch etwas ist mir aufgefallen : In den letzten Ordnern, wo die Bilder gespeichert sind, ist jeweils auch eine .txt Datei die nicht gelöscht werden sollte.
Wenn es nicht zuviel verlangt ist, könntest du bitte nochmal zaubern?
Vielen Dank
Es hast fast geklappt. Ich weiß auch warum es nicht ganz geklappt hat.
Bei dem Ordner : C:\Ordner XYZ\Ordner A\Ordner AA\ Ordner AAA funktioniert es prima, da es im Ordner AA nur ein Ordner AAA hat
Bei dem Ordner: C:\Ordner XYZ\Ordner B\Ordner BB\ Ordner BBB löscht es alle Bilder bis auf den ersten, da In Ordner BB, 2 Ordner drinne sind. Also Einmal den bekannten Ordner BBB und noch ein Ordner BBA.
So ungefähr : C:\Ordner XYZ\Ordner B\Ordner BB\ Ordner BBB
C:\Ordner XYZ\Ordner B\Ordner BB\ Ordner BBA
Wenn ich den Ordner BBA aus testgründen lösche dann funkt es. Wie gesagt es liegt daran das da eben noch ein Ordner vorhanden ist.
Noch etwas ist mir aufgefallen : In den letzten Ordnern, wo die Bilder gespeichert sind, ist jeweils auch eine .txt Datei die nicht gelöscht werden sollte.
Wenn es nicht zuviel verlangt ist, könntest du bitte nochmal zaubern?
Vielen Dank
LÖSUNG 02.03.2016 um 12:40 Uhr
Ich bitte dich darum
LÖSUNG 03.03.2016 um 08:14 Uhr
Es betrachtet die Ordner BBB und BBA als einer und nimmt jeweils den ersten von BBB und den letzten von BBA (nach Datum), deshalb sind in den Ordner nur ein Bild enthalten, nachdem ich das Befehl ausgeführt habe.
LÖSUNG 03.03.2016, aktualisiert um 10:32 Uhr
Zitat von @Weezyt:
Es betrachtet die Ordner BBB und BBA als einer und nimmt jeweils den ersten von BBB und den letzten von BBA (nach Datum), deshalb sind in den Ordner nur ein Bild enthalten, nachdem ich das Befehl ausgeführt habe.
Ist ja auch logisch, weil du es oben vollkommen durcheinander gewürfelt hast und keine mehr nachvollziehen konnte was du nun wirklich willst, wenn du nur den einen Ordner berücksichtigen willst nimm ihn oben in die Includes auf und entferne das -recurse in Zeile 2. Schon arm wie wenig sich die Leute hier mit den Codes beschäftigen wenn man ihnen schon eine Steilvorlage liefert. Das ist hier doch kein "mach mir meine Arbeit" Forum. Ein Minimum an Lernbereitschaft setzt man in einem Admin Forum eigentlich voraus Es betrachtet die Ordner BBB und BBA als einer und nimmt jeweils den ersten von BBB und den letzten von BBA (nach Datum), deshalb sind in den Ordner nur ein Bild enthalten, nachdem ich das Befehl ausgeführt habe.
Na dann noch viel Spaß.
Im out a here.
fk
LÖSUNG 03.03.2016 um 11:00 Uhr
Das habe ich leider auch schon versucht aber die Namen der Ordner vom letzten Unterverzeichnis, wo die Bilder drinne sind, sind gleich. Wenn es in den Includes steht wird der Ordner bei dem es nicht passieren soll, auch angegriffen. Ist ja nicht so, dass ich es nicht versuche klappt halt nicht. Wenn du wüsstest, wie Lange ich schon daran sitze und rumversuche bwz. suche.
LÖSUNG 03.03.2016, aktualisiert um 11:16 Uhr
Moin,
man kann bei gci auch Ordnerlevel angeben ab wo bestimmte Ordner gesucht werden....
Gruß jodel
man kann bei gci auch Ordnerlevel angeben ab wo bestimmte Ordner gesucht werden....
gci 'C:\Ordner XYZ\*\*\*' ...............usw. wie oben.
Gruß jodel
LÖSUNG 03.03.2016 um 11:23 Uhr
So einfach ist es leider nicht. Sonst müsste ich ja für jeden Ordner einen Skript schreiben. Der Ansatz oben stimmt, aber es fehlt halt irgendwas
LÖSUNG 03.03.2016, aktualisiert um 11:27 Uhr
Zitat von @Weezyt:
So einfach ist es leider nicht. Sonst müsste ich ja für jeden Ordner einen Skript schreiben. Der Ansatz oben stimmt, aber es fehlt halt irgendwas
Wieso, nö ?? Du musst halt hier mal "unmissverständlich" klar machen was dein Ordner ausmacht und wie er eindeutig erkannt werden kann ... Das wird hier aus deinen tausenden AAs und BBs leider nicht klarer So einfach ist es leider nicht. Sonst müsste ich ja für jeden Ordner einen Skript schreiben. Der Ansatz oben stimmt, aber es fehlt halt irgendwas
Wenn man es vernünftig beschreibt wäre das in ein zwei Antworten schon geklärt gewesen, aber wenn man erst tröpfchenweise mit Details rausrückt wird das nichts.
LÖSUNG 03.03.2016 um 11:45 Uhr
Sry aber ich dachte ich versuche es so einfach wie möglich zu gestalten, damit es eben leicht zu verstehen ist. Habe ja sogar Bilder hochgeladen, um das Ganze zu verdeutlichen 
Ich Versuche es mal besser zu gestalten. Vergisst die ganzen AA oder BB. So siehts Orginal aus.
C:\Users\VAT1RT\Desktop\Versuch -> Hauptverzeichnis
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123 ->Unterverzeichnis, davon gibt es natürlich dutzende, die ähnlich heissen z.B FA_BlaBla456
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123\FAL_Z -> Weitere Unterverzeichnis
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123\FAL_Tilt -> Weitere Unterverzeichnis
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123\FAL_XYR -> Weitere Unterverzeichnis
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123\PAL_XYR -> Weitere Unterverzeichnis
Die Ordner (FAL_Z, FAL_Tilt, FAL_XYR, PAL_XYR) sind auch in den anderen dutzend enthalten wie zb in FA_BlaBla456
-> Noch weitere Unterzeichnisse
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123\FAL_Z\FPC1b
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123\FAL_Tilt\FPC1a und FPC1b
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123\FAL_XYR\FPC1a und FPC1b
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123\PAL_XYR\FPC1a und FPC1b
In den Ordner (FPC1a und FPC1b) sind die Bilder, die gelöscht werden müssen, außer das jüngste und älteste. Zusätzlich soll der Ordner FAL_Tilt einfach ignoriert werden, heißt da soll nichts passieren.
Wie du siehst klappt es nicht ganz mit den Icludes, da die Ordner (FPC1a und FPC1b) auch in FAL_Tilt enthalten drinne sind. Somit würden sich die Bilder auch dort löschen.
Ach das Ganze regt mich auf
Ich Versuche es mal besser zu gestalten. Vergisst die ganzen AA oder BB. So siehts Orginal aus.
C:\Users\VAT1RT\Desktop\Versuch -> Hauptverzeichnis
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123 ->Unterverzeichnis, davon gibt es natürlich dutzende, die ähnlich heissen z.B FA_BlaBla456
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123\FAL_Z -> Weitere Unterverzeichnis
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123\FAL_Tilt -> Weitere Unterverzeichnis
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123\FAL_XYR -> Weitere Unterverzeichnis
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123\PAL_XYR -> Weitere Unterverzeichnis
Die Ordner (FAL_Z, FAL_Tilt, FAL_XYR, PAL_XYR) sind auch in den anderen dutzend enthalten wie zb in FA_BlaBla456
-> Noch weitere Unterzeichnisse
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123\FAL_Z\FPC1b
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123\FAL_Tilt\FPC1a und FPC1b
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123\FAL_XYR\FPC1a und FPC1b
C:\Users\VAT1RT\Desktop\Versuch\FA_BlaBla123\PAL_XYR\FPC1a und FPC1b
In den Ordner (FPC1a und FPC1b) sind die Bilder, die gelöscht werden müssen, außer das jüngste und älteste. Zusätzlich soll der Ordner FAL_Tilt einfach ignoriert werden, heißt da soll nichts passieren.
Wie du siehst klappt es nicht ganz mit den Icludes, da die Ordner (FPC1a und FPC1b) auch in FAL_Tilt enthalten drinne sind. Somit würden sich die Bilder auch dort löschen.
Ach das Ganze regt mich auf
LÖSUNG 03.03.2016 um 11:48 Uhr
Zur Ergänzung: Es hat alles gefunkt, aber mit dem Code oben, betrachtet es die Ornder FPC1a und FPC1b als ein Ordner und löscht alles, bis auf die jüngste von FPC1a und das älteste in FPC1b, dabei sollen die Ordner seperat betrachtet werden.
LÖSUNG 03.03.2016, aktualisiert um 12:57 Uhr
Habe ja sogar Bilder hochgeladen, um das Ganze zu verdeutlichen
Gut das ist jetzt endlich verständlich, (auf deinen Bildern erkennt man das aber bei weitem nicht ... außerdem bietet das Forum hier einen Bilderupload im Ursprungspost, dann braucht man nicht auf solchen Werbeverseuchten Seiten rumsurfen)Damit geht das hier testweise einwandfrei und löscht auch keine Textdateien wie du gewünscht hast.
gci 'C:\Users\VAT1RT\Desktop\Versuch\*' -Recurse -Include "FPC1a","FPC1b" | ?{$_.PSIsContainer -and $_.FullName -notlike '*\FAL_Tilt*'} | %{
$list = gci $_.Fullname -Exclude *.txt | ?{!$_.PSIsContainer} | sort LastWriteTime
if ($list){
if ($list.length -gt 2){
$list[1..($list.Length-2)] | remove-item -Force
}
}
}
Ach das Ganze regt mich auf
Ruhig bleiben und die Doku lesen, dann ist das kein Hexenwerk LÖSUNG 03.03.2016 um 13:01 Uhr
Gott sei dank es tut endlich wie ich es haben will. Danke euch alle samt für eure Mühen. Hast du vielleicht eine Seite, wo das Ganze mit Powershell, leicht verständlich erklärt wird.
DANKE nochmal
DANKE nochmal
LÖSUNG 03.03.2016, aktualisiert um 13:04 Uhr
Zitat von @Weezyt:
Hast du vielleicht eine Seite, wo das Ganze mit Powershell, leicht verständlich erklärt wird.
Hast du vielleicht eine Seite, wo das Ganze mit Powershell, leicht verständlich erklärt wird.
- http://www.powershellpraxis.de/
- http://www.powershellpraxis.de/index.php/dateien-und-ordner
- http://www.msxfaq.de/code/powershell/powershell.htm
- https://www.administrator.de/wissen/powershell-for-runaways-part-i-76114 ...
- https://www.administrator.de/wissen/powershell-for-runaways-part-ii-8661 ...
- http://powershell.com/cs/
- http://powershell.com/cs/media/13/default.aspx
DANKE nochmal 
Bidde LÖSUNG 04.03.2016 um 10:30 Uhr
Hallo jodel,
funkt PowerShell auch mit IrfanView, sodass ich z.b die Bilder im Ordner FAL_Tilt konventieren kann?
MfG
funkt PowerShell auch mit IrfanView, sodass ich z.b die Bilder im Ordner FAL_Tilt konventieren kann?
MfG
LÖSUNG 04.03.2016, aktualisiert um 10:52 Uhr
Zitat von @Weezyt:
Hallo jodel,
funkt PowerShell auch mit IrfanView, sodass ich z.b die Bilder im Ordner FAL_Tilt konventieren kann?
Alles was sich per CMD steuern lässt geht auch mit Powershell.Hallo jodel,
funkt PowerShell auch mit IrfanView, sodass ich z.b die Bilder im Ordner FAL_Tilt konventieren kann?
Aber wenn es um so einfache Sachen wie die Größe oder Format ändern geht, das kann die Powershell nativ auch selber, da sie das komplette NET-Framework nutzen kann.
Guckst du hier: Powershell: Bilder verkleinern oder an bestimmte Größe anpassen
LÖSUNG 04.03.2016 um 11:08 Uhr
Größe ja, aber Format ändern geht nicht auf dem Link oder? Also z.b bmp zu jpg
LÖSUNG 04.03.2016, aktualisiert um 11:12 Uhr
Doch kann man damit auch in dieser Zeile der zweite Parameter:
ändern in
https://msdn.microsoft.com/de-de/library/system.drawing.imaging.imagefor ...
$newImg.Save($newImagePath,$img.RawFormat)
$newImg.Save($newImagePath,[System.Drawing.Imaging.ImageFormat]::Jpeg)
https://msdn.microsoft.com/de-de/library/system.drawing.imaging.imagefor ...
LÖSUNG 04.03.2016 um 11:30 Uhr
Könnte ich theoretisch den Code von oben nehmen und die Ganzen If Befehle entfernen und es durch so einer ForEach Schleife ersetzen?
foreach($list in *.bmp) {...} ?
foreach($list in *.bmp) {...} ?
LÖSUNG 04.03.2016, aktualisiert um 11:38 Uhr
$list | ?{$_.Extension -eq '.bmp'} | Resize-Image -OutPath "D:\Bilder\klein" -NewWidth 800 -NewHeight 600
Les dich doch bitte in Powershell mal ein. Danke.
LÖSUNG 04.03.2016 um 11:45 Uhr
Mit Aufruf der Konventierung meinst du ? $newImg.Save($newImagePath,[System.Drawing.Imaging.ImageFormat]::Jpeg)?
LÖSUNG 04.03.2016, aktualisiert um 11:47 Uhr
Zitat von @Weezyt:
Mit Aufruf der Konventierung meinst du ? $newImg.Save($newImagePath,[System.Drawing.Imaging.ImageFormat]::Jpeg)?
Nee, bitte les doch den Beitrag von @colinardo erst mal bitte ... Das ist eine Komplette Funktion in der du die diese Zeile änderst und dann in dein Skript einbaust.Mit Aufruf der Konventierung meinst du ? $newImg.Save($newImagePath,[System.Drawing.Imaging.ImageFormat]::Jpeg)?
Wir können dir hier das Lesen und Lernen nicht abnehmen, ein bisschen musst du auch schon dafür tun.