Jump to content

Warlord205

Members
  • Gesamte Inhalte

    11
  • Registriert seit

  • Letzter Besuch

Letzte Besucher des Profils

Der "Letzte Profil-Besucher"-Block ist deaktiviert und wird anderen Benutzern nicht angezeit.

Fortschritt von Warlord205

Apprentice

Apprentice (3/14)

  • Erste Antwort
  • Engagiert
  • Erster eigener Beitrag
  • Eine Woche dabei
  • Einen Monat dabei

Neueste Abzeichen

0

Reputation in der Community

  1. Danke! hab ich eingearbeitet :) Eine kleine Frage ist mir heute aber bei der ersten Real-Anwendung noch gekommen. - Kann ich den Befehl "-Recurse" auf maximal eine Ordnerebene begrenzen? Wenn ich meinen Code anwende, wird jedes mal ein neuer Ordner "BP_CutTraces" angelegt und die ".zip" Files landen immer eine ebene Tiefer. Also das es nicht passiert das 2x "BP_CutTraces" untereinander erstellt wird? C:\Z_Messdaten\cuted\BBBBB\BP_CutTraces\[DATEI].zip und nicht: C:\Z_Messdaten\cuted\BBBBB\BP_CutTraces\BP_CutTraces\[DATEI].zip $SourcePath2 = "C:\Z_Messdaten\cuted\" if(Test-Path -Path $SourcePath2 -PathType Container){ #Überprüfung ob SourcePath ein realer Pfad ist? $ZIPFiles2 = Get-ChildItem -Path $SourcePath2 -Filter *.zip -Recurse #Alle Zip-Files einlesen #Write-Host $ZIPFiles2 -ForegroundColor DarkGreen foreach($ZIP in $ZIPFiles2){ #Für jede ZIP-Datei ausführen: #Write-Host $ZIP -ForegroundColor Cyan if(-not (Test-Path -Path $("{0}\BP_CutTraces" -f $ZIP.DirectoryName) -PathType Container)){ New-Item -Path $("{0}\BP_CutTraces" -f $ZIP.DirectoryName) -ItemType Directory } $car = $ZIP.DirectoryName Get-ChildItem -Path $car -File -Filter *.zip | Move-Item -Destination $("{0}\BP_CutTraces" -f $ZIP.DirectoryName) -Force } } else{ Write-Output "`"$SourcePath2`" nicht vorhanden!" #Wenn SourcePath kein realer Pfad, Fehler ausgeben? } Danke!
  2. Danke! mir war die Logik von dem Syntax-Splitting noch nicht ganz klar! Es klappt aber jetzt perfekt. -Destination $("{0}\{1}" -f $ZIP.DirectoryName, "BP_CutTraces") -Force Vielen Vielen Dank für die ganze Hilfe! Frohe Feiertage und bleibt Gesund! Grüße Dennis
  3. Danke! Klappt perfekt!! Genau so sollte es sein @testperson Eine kleine Aufgabe habe ich aber noch. Kann ich in einem Ordner alle .Zip Dateien " eine Ebene nach unten" in einen neuen Ordner legen? Also ein "Source-Verzeichnis" mit mehreren Unterordnern nach .ZIP durchsuchen. Und diese innerhalb ihrer Strucktur in einen neuen Ordner reinlegen. Anbei ein Text-File Vorher- / Nachher-Vergleich Ordnerstrucktur_anpassen.txt Danke :)
  4. Sorry es war nie meine Absicht euch hier unnötige Arbeit zu machen... Ich verstehe von der Materie garantiert noch nicht so viel wie Ihr, weshalb meine Rückmeldungen vielleicht nicht immer zufriedenstellend sind :( Im Grunde war mir die Quell-Ordnerstruktur auch nie wirklich wichtig. Ich will doch nur eine "Code-Zeile" die in der Lage ist, im Quellverzeichnis den Ordner "BBBBB" zu identifizieren. Und den gesamten Inhalt des Ordners "BBBBB" in den entsprechenden Ordner des Ziel-Verzeichnisses mit Namen AAA-BBBBB einzusortieren.... Ich probiere einfach weiter rum. Danke trotzdem für deine Zeit, BOfH_666.
  5. Sorry! Ich dachte ich hätte die Fragen beantwortet, war nicht meine Absicht! Als Antwort auf die Frage: Die Datenverarbeitung auf dem Rechner wird automatisch mit der Software des Datenlogger-Lieferanten gemacht. Hier habe ich keinen Einfluss auf die "Weiterverarbeitung". Das BulkRename Tool schaue ich mir aber im Detail noch mal an, versprochen. Ja zugegeben, teilweise ist das so... :( Ja. Das Quell-Verzeichnis ist in meinem Anwendungsfall das selbe Verzeichnis, in welchem auch das Skript liegen soll. Hier könnte ich auch damit leben wenn dieses "fix" wäre. Also immer C:\Messdaten. Das Ziel-Verzeichnis ist dynamisch und muss zwingend nach Skript-Start auswahlbar sein. Definitiv ist die Info essentiell! Daher hatte ich auch versucht sie in den Vorhergegangen Beschreibungen einzubringen, hat wohl nicht ganz geklappt mich richtig auszudrücken. Sorry! Die Fahrzeugnummer BBBBB ist nicht doppelt vorhanden. Somit ist eine "Selektion" rein hieran möglich. Der Fahrzeugtyp ist lediglich im Zielverzeichnis relevant. Ja der Dateiname nach dem FahrzeugTyp und der Fahrzeugnummer kann variieren. Dürfte aber nicht dramatisch sein, da ich ja nur die ersten beiden "Blöcke" heraussplitte oder? Das Datum der ZIP oder LOG Datei ist beim verschieben nicht relevant. Ich muss lediglich nach "BBBBB" sortieren können. Anbei die Ausgabe: C:\Z_Messdaten\cuted C:\Z_Messdaten\111_02725_20201020_102357_20201020_160851.zip C:\Z_Messdaten\124_01005_20201027_063138_20201027_135021_#1.zip C:\Z_Messdaten\143_01007_20201024_063138_20201030_135021.zip C:\Z_Messdaten\234_02726_20201004_110523_20201004_171029.zip C:\Z_Messdaten\Hier_soll_das_skript_liegen.ps1 C:\Z_Messdaten\cuted\01005 C:\Z_Messdaten\cuted\01007 C:\Z_Messdaten\cuted\02725 C:\Z_Messdaten\cuted\02726 C:\Z_Messdaten\cuted\01005\EngTraces C:\Z_Messdaten\cuted\01005\Offline_124_01005_Marker_#17_20201027_081741_Timing_300_-_180_Konv.zip C:\Z_Messdaten\cuted\01005\EngTraces\LOG_0021_20201027_081704_user.tar.gz C:\Z_Messdaten\cuted\01005\EngTraces\LOG_0022_20201027_082839_user.tar.gz C:\Z_Messdaten\cuted\01005\EngTraces\PIC_0021_20201027_081713_HU.png C:\Z_Messdaten\cuted\01005\EngTraces\PIC_0022_20201027_082846_HU.png C:\Z_Messdaten\cuted\01007\EngTraces C:\Z_Messdaten\cuted\01007\Offline_143_01007_Marker_#05_20201025_083641_Timing_300_-_180_Konv.zip C:\Z_Messdaten\cuted\01007\EngTraces\LOG_0022_20201027_082839_user.tar.gz C:\Z_Messdaten\cuted\01007\EngTraces\LOG_0025_20201207_081704_user.tar.gz C:\Z_Messdaten\cuted\01007\EngTraces\PIC_0022_20201027_082839.png C:\Z_Messdaten\cuted\01007\EngTraces\PIC_0025_20201207_081704.png C:\Z_Messdaten\cuted\02725\EngTraces C:\Z_Messdaten\cuted\02725\Offline_111_02725_Marker_#1_20201020_144905_Timing_300_-_180_Konv.zip C:\Z_Messdaten\cuted\02725\Offline_111_02725_Marker_#2_20201020_145150_Timing_300_-_180_Konv.zip C:\Z_Messdaten\cuted\02725\Offline_111_02725_Marker_#3_20201020_145911_Timing_300_-_180_Konv.zip C:\Z_Messdaten\cuted\02725\Offline_111_02725_Marker_#4_20201020_155914_Timing_300_-_180_Konv.zip C:\Z_Messdaten\cuted\02725\EngTraces\LOG_0002_20201107_051304_user.tar.gz C:\Z_Messdaten\cuted\02725\EngTraces\PIC_0002_20201107_051304.png C:\Z_Messdaten\cuted\02726\EngTraces C:\Z_Messdaten\cuted\02726\Offline_234_02726_Marker_#92_20201004_135945_Timing_300_-_180_Konv.zip C:\Z_Messdaten\cuted\02726\Offline_234_02726_Marker_#93_20201004_140023_Timing_300_-_180_Konv.zip C:\Z_Messdaten\cuted\02726\Offline_234_02726_Marker_#94_20201004_140328_Timing_300_-_180_Konv.zip C:\Z_Messdaten\cuted\02726\Offline_234_02726_Marker_#95_20201004_140443_Timing_300_-_180_Konv.zip C:\Y_AusgabeOrdner\111-02725 C:\Y_AusgabeOrdner\124-01005 C:\Y_AusgabeOrdner\143-01007 C:\Y_AusgabeOrdner\234-02726 C:\Y_AusgabeOrdner\111-02725\Attachments C:\Y_AusgabeOrdner\111-02725\CutTraces C:\Y_AusgabeOrdner\111-02725\EngTraces C:\Y_AusgabeOrdner\124-01005\Attachments C:\Y_AusgabeOrdner\124-01005\CutTraces C:\Y_AusgabeOrdner\124-01005\EngTraces C:\Y_AusgabeOrdner\143-01007\Attachments C:\Y_AusgabeOrdner\143-01007\CutTraces C:\Y_AusgabeOrdner\143-01007\EngTraces C:\Y_AusgabeOrdner\234-02726\Attachments C:\Y_AusgabeOrdner\234-02726\CutTraces C:\Y_AusgabeOrdner\234-02726\EngTraces Sorry ich habe hier auf dem Rechner nur ein paar "Testdateien" mit denen ich rumbastle, eh ich an den richtigen Server gehe. Da ich das Ziel und Quellverzeichnis dynamisch erwartet hatte, war mir nicht bewusst das dies schlimm ist. Oben steht ja jetzt die "richtige" Ordnerstruktur. Das war keine Absicht, sondern da die LOG und PIC Dateien keine Fahrzeugnummer beeinhalten, funktioniert der Code so nicht ganz. Wenn ich den bei mir laufen lassen, entstehen diverse Ordner die Daten "bekommen" welche nicht geplant waren. Zum Beispiel das "BBBBB" Ordner entstehen worin weitere Unterordner Offline-124 etc. entstehen. Auszug meines "ZielVerzeichnisses" nach dem Anwenden auf C:\Messdaten: C:\BOfH\01005 C:\BOfH\01007 C:\BOfH\02725 C:\BOfH\02726 C:\BOfH\20201004 C:\BOfH\20201020 C:\BOfH\20201024 C:\BOfH\20201027 C:\BOfH\20201107 C:\BOfH\20201207 C:\BOfH\Scripttest C:\BOfH\01005\Offline-124 C:\BOfH\01005\Offline-124\Messdaten C:\BOfH\01005\Offline-124\Messdaten\Offline_124_01005_Marker_#17_20201027_081741_Timing_300_-_180_Konv.zip C:\BOfH\01007\Offline-143 C:\BOfH\01007\Offline-143\Messdaten C:\BOfH\01007\Offline-143\Messdaten\Offline_143_01007_Marker_#05_20201025_083641_Timing_300_-_180_Konv.zip C:\BOfH\02725\Offline-111 C:\BOfH\02725\Offline-111\Messdaten C:\BOfH\02725\Offline-111\Messdaten\Offline_111_02725_Marker_#1_20201020_144905_Timing_300_-_180_Konv.zip C:\BOfH\02725\Offline-111\Messdaten\Offline_111_02725_Marker_#2_20201020_145150_Timing_300_-_180_Konv.zip C:\BOfH\02725\Offline-111\Messdaten\Offline_111_02725_Marker_#3_20201020_145911_Timing_300_-_180_Konv.zip C:\BOfH\02725\Offline-111\Messdaten\Offline_111_02725_Marker_#4_20201020_155914_Timing_300_-_180_Konv.zip C:\BOfH\02726\Offline-234 C:\BOfH\02726\Offline-234\Messdaten C:\BOfH\02726\Offline-234\Messdaten\Offline_234_02726_Marker_#92_20201004_135945_Timing_300_-_180_Konv.zip C:\BOfH\02726\Offline-234\Messdaten\Offline_234_02726_Marker_#93_20201004_140023_Timing_300_-_180_Konv.zip C:\BOfH\02726\Offline-234\Messdaten\Offline_234_02726_Marker_#94_20201004_140328_Timing_300_-_180_Konv.zip C:\BOfH\02726\Offline-234\Messdaten\Offline_234_02726_Marker_#95_20201004_140443_Timing_300_-_180_Konv.zip C:\BOfH\20201004\234-02726 C:\BOfH\20201004\234-02726\Messdaten C:\BOfH\20201004\234-02726\Messdaten\234_02726_20201004_110523_20201004_171029.zip C:\BOfH\20201020\111-02725 C:\BOfH\20201020\111-02725\Messdaten C:\BOfH\20201020\111-02725\Messdaten\111_02725_20201020_102357_20201020_160851.zip C:\BOfH\20201024\143-01007 C:\BOfH\20201024\143-01007\Messdaten C:\BOfH\20201024\143-01007\Messdaten\143_01007_20201024_063138_20201030_135021.zip C:\BOfH\20201027\124-01005 C:\BOfH\20201027\LOG-0021 C:\BOfH\20201027\LOG-0022 C:\BOfH\20201027\PIC-0021 C:\BOfH\20201027\PIC-0022 C:\BOfH\20201027\124-01005\Messdaten C:\BOfH\20201027\124-01005\Messdaten\124_01005_20201027_063138_20201027_135021_#1.zip C:\BOfH\20201027\LOG-0021\Cut-Daten C:\BOfH\20201027\LOG-0021\Cut-Daten\LOG_0021_20201027_081704_user.tar.gz C:\BOfH\20201027\LOG-0022\Cut-Daten C:\BOfH\20201027\LOG-0022\Cut-Daten\LOG_0022_20201027_082839_user.tar.gz C:\BOfH\20201027\PIC-0021\Cut-Daten C:\BOfH\20201027\PIC-0021\Cut-Daten\PIC_0021_20201027_081713_HU.png C:\BOfH\20201027\PIC-0022\Cut-Daten C:\BOfH\20201027\PIC-0022\Cut-Daten\PIC_0022_20201027_082839.png C:\BOfH\20201027\PIC-0022\Cut-Daten\PIC_0022_20201027_082846_HU.png C:\BOfH\20201107\LOG-0002 C:\BOfH\20201107\PIC-0002 C:\BOfH\20201107\LOG-0002\Cut-Daten C:\BOfH\20201107\LOG-0002\Cut-Daten\LOG_0002_20201107_051304_user.tar.gz C:\BOfH\20201107\PIC-0002\Cut-Daten C:\BOfH\20201107\PIC-0002\Cut-Daten\PIC_0002_20201107_051304.png C:\BOfH\20201207\LOG-0025 C:\BOfH\20201207\PIC-0025 C:\BOfH\20201207\LOG-0025\Cut-Daten C:\BOfH\20201207\LOG-0025\Cut-Daten\LOG_0025_20201207_081704_user.tar.gz C:\BOfH\20201207\PIC-0025\Cut-Daten C:\BOfH\20201207\PIC-0025\Cut-Daten\PIC_0025_20201207_081704.png C:\BOfH\Scripttest\BOfH-666 C:\BOfH\Scripttest\BOfH-666\Cut-Daten C:\BOfH\Scripttest\BOfH-666\Cut-Daten\BOfH_666_Scripttest.ps1 Danke trotzdem für die Geduld mit mir Grüße Dennis
  6. Danke! Eine weitere .Zip Datei hilft mir in diesem Fall aber nicht. Ich benötige die Daten im Zielverzeichnis im gleichen Format wie im QuellVerzeichnis. Wenn ich die Dateien "zusammenbauen" und wegsortieren kann, wonach ich sie wieder entpacken muss, könnte ich sie auch direkt so wegsortieren, oder? Anbei noch meine Zielordnerstrucktur, falls das hilft:
  7. Sorry!!! Wobei tatsächlich der größte Teil Code nur "reinkopiert" ist, das ist der Teil hinter "# 2) Zielverzeichnis auswählen" weil ich da einen, für meine Ansprüche sehr schönen FolderSelectionDialog" gefunden habe. Der ursprüngliche Code war nur: #Quell-Ordnerwahl $QuellOrdnerwahl = New-Object System.Windows.Forms.FolderBrowserDialog Und da hat mich sehr gestört das ich immer wieder "MyComputer" starten musste und es keine Adress-zeile gab. Wenn man den Schritt 2) rausnimmt, bleibt nicht mehr viel Code übrig Danke, da lese ich mich mal ein! Da liegt mein kleines Problem aktuell. Ich kann gerne meine Erklärungen weiter ausführen sofern das hilft, weiß leider nur nicht genau wie. Der Fahrzeug-Typ und die Fahrzeugnummer sind leider nur in den ".zip" enthalten. Nicht in den Bild- oder Log-Dateien. Die Bild- oder Log-Dateien liegen Fahrzeugbezogen in einem Ordner, der den 5-stelligen Namen der Fahrzeugnummer trägt. Erschwerend Hinzu kommt, das die Bild- und Log-Dateien für diverse Fahrzeuge den gleichen Namen tragen können. Sie lassen sich also nur an dem Ordner unterscheiden, in dem sie liegen. Ich versuche mal mit dem Bild meine Ordnerstruktur aufzuzeigen: Danke für deine Hilfe! Grüße
  8. Hallo BOfH, danke für die nette Begrüßung! Also zum Hintergrund der Daten: Es sind Datenlogger die in diversen Fahrzeugen verbaut sind. Diese werden an einen zentralen Rechner via Ethernet ausgelesen und legen die Daten mit dem Namen AAA_BBBBB_YYMMDD_HHMM im .ZIP Format in dem "Messdaten" Verzeichnis ab. Der zentrale Rechner erstellt dann automatisch im Verzeichnis "Messdaten" einen Unterordner mit namen "BBBBB" in welchem aus der .ZIP datei automatisch bestimmte Dateien herausgesucht und entpackt werden. Das AAA steht hier dreistellig für den Fahrzeugtyp. Das BBBBB steht immer fünstellig für die Fahrzeugnummer. A und B sind immer Zahlen vom 0-9. Meine Ausgangs-Strucktur sieht also so aus: | C:\Messdaten\(alle_.Zip_Dateien) | C:\Messdaten\BBBBB\(alle_Bild+Log_Dateien) <-- Jedes "Fahrzeug" bekommt seinen eigenen BBBBB Ordner, da die Dateinamen da drin bei allen Fahrzeugen gleich sind und nicht vermischt werden dürfen. Das Zielverzeichniss sieht folgendermaßen aus: | C:\Zielverzeichnis\YYMMDD\AAA-BBBBB\Messdaten\(hier_rein_sollen_alle_.zip_Dateien) | C:\Zielverzeichnis\YYMMDD\AAA-BBBBB\Cut-Daten\(hier_rein_sollen_alle_Bild+Log_Dateien_aus_dem_Unterordner_BBBBB) Das Skript muss also automatisch den Ordner BBBBB "einlesen" und diesen in den richtigen AAA-BBBBB Ordner verschieben. (Hinweis an der Stelle, Die Fahrzeugnummer BBBBB ist immer unikat, es gibt sie also nicht doppelt für verschiedene Fahrzeugtypen: Es kann keinen Ordner: 123-111111 und 321-11111 geben. BBBBB ist somit immer eindeutig. Grundlagen von Powershell bin ich nebenbei am "lernen", komme aber mit den Anfänger Tutorials irgendwie nicht so recht auf die für mich scheinbar komplexe aufgabe. Das BulkRenameUltility sieht für mich ehr aus als würde es Dateien umbennen und verschieben. Das ist jedoch nicht mein Ziel. Der Dateiname muss erhalten bleiben. Den Dateinamen der .ZIP Datei habe ich bereits "geschnitten" bekommen mit folgendem Code: foreach($datei in $dateien){ #Fahrzeugtyp auslesen $Typ = ($datei | Select-String -Pattern '\d+' -AllMatches).Matches.Value[0] #Fahrzeugnummer auslesen $Fahrzeugnummer = ($datei | Select-String -Pattern '\d+' -AllMatches).Matches.Value[1] } Also Schritt 1 und Schritt 2 habe ich schon das "Initial Verzeichnis" ausgelesen in welchem die Script-Datei liegt und den Zielordner Auswahldialog eingefügt. Das ist mein bisheriger Code, ab Schritt 3) hänge ich derzeit... <# Die PowerShell Datei muss in Messdaten liegen (wo die Rohdaten auch liegen) Unterordner cuted enthält Unterordner für alle Fahrzeuge (5-stellig) In den 5-stelligen Fahrzeug ordnern liegen die Bearbeiteten-Traces Programm: 1) Startverzeichnis ist Initial von Skript-Datei 2) Zielverzeichnis auswählen 3) Ordnername 5-stellig FINAS muss innerhalb des Ziel-Verzeichnis gesucht werden 4) Alle 5-stellig FINAS ordner daten müssen in jeweiliges Ziel-Verzeichnis einsortiert werden (move, not copy) #> #Assembly für Forms laden [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null # 1) Verzeichnis des PowerShell Programms einlesen und in $installpath speichern function Get-ScriptDirectory { $Invocation = (Get-Variable MyInvocation -Scope 1).Value Split-Path $Invocation.MyCommand.Path } $installpath = Get-ScriptDirectory #Überprüfung ob richtiger Ordner erkannt: Write-Host "Ordner des Skripts ist $($installpath)" -ForegroundColor magenta # 2) Zielverzeichnis auswählen <# : Batch portion @echo off set "Start_Folder=1" for /f "delims=" %%a in ('Powershell -nop -noni -c "iex (${%~f0} | out-string)"') do ( set "Program_Folder=%%a" ) if "%Program_Folder%"=="" ( cls & exit /b ) echo "%Program_Folder%" pause exit /b : end Batch portion / begin PowerShell hybrid chimera #> Function BuildDialog { $sourcecode = @" using System; using System.Windows.Forms; using System.Reflection; namespace FolderSelect { public class FolderSelectDialog { System.Windows.Forms.OpenFileDialog ofd = null; public FolderSelectDialog() { ofd = new System.Windows.Forms.OpenFileDialog(); ofd.Filter = "Folders|\n"; ofd.AddExtension = false; ofd.CheckFileExists = false; ofd.DereferenceLinks = true; ofd.Multiselect = false; } public string InitialDirectory { get { return ofd.InitialDirectory; } set { ofd.InitialDirectory = value == null || value.Length == 0 ? Environment.CurrentDirectory : value; } } public string Title { get { return ofd.Title; } set { ofd.Title = value == null ? "Select a folder" : value; } } public string FileName { get { return ofd.FileName; } } public bool ShowDialog() { return ShowDialog(IntPtr.Zero); } public bool ShowDialog(IntPtr hWndOwner) { bool flag = false; if (Environment.OSVersion.Version.Major >= 6) { var r = new Reflector("System.Windows.Forms"); uint num = 0; Type typeIFileDialog = r.GetType("FileDialogNative.IFileDialog"); object dialog = r.Call(ofd, "CreateVistaDialog"); r.Call(ofd, "OnBeforeVistaDialog", dialog); uint options = (uint)r.CallAs(typeof(System.Windows.Forms.FileDialog), ofd, "GetOptions"); options |= (uint)r.GetEnum("FileDialogNative.FOS", "FOS_PICKFOLDERS"); r.CallAs(typeIFileDialog, dialog, "SetOptions", options); object pfde = r.New("FileDialog.VistaDialogEvents", ofd); object[] parameters = new object[] { pfde, num }; r.CallAs2(typeIFileDialog, dialog, "Advise", parameters); num = (uint)parameters[1]; try { int num2 = (int)r.CallAs(typeIFileDialog, dialog, "Show", hWndOwner); flag = 0 == num2; } finally { r.CallAs(typeIFileDialog, dialog, "Unadvise", num); GC.KeepAlive(pfde); } } else { var fbd = new FolderBrowserDialog(); fbd.Description = this.Title; fbd.SelectedPath = this.InitialDirectory; fbd.ShowNewFolderButton = false; if (fbd.ShowDialog(new WindowWrapper(hWndOwner)) != DialogResult.OK) return false; ofd.FileName = fbd.SelectedPath; flag = true; } return flag; } } public class WindowWrapper : System.Windows.Forms.IWin32Window { public WindowWrapper(IntPtr handle) { _hwnd = handle; } public IntPtr Handle { get { return _hwnd; } } private IntPtr _hwnd; } public class Reflector { string m_ns; Assembly m_asmb; public Reflector(string ns) : this(ns, ns) { } public Reflector(string an, string ns) { m_ns = ns; m_asmb = null; foreach (AssemblyName aN in Assembly.GetExecutingAssembly().GetReferencedAssemblies()) { if (aN.FullName.StartsWith(an)) { m_asmb = Assembly.Load(aN); break; } } } public Type GetType(string typeName) { Type type = null; string[] names = typeName.Split('.'); if (names.Length > 0) type = m_asmb.GetType(m_ns + "." + names[0]); for (int i = 1; i < names.Length; ++i) { type = type.GetNestedType(names[i], BindingFlags.NonPublic); } return type; } public object New(string name, params object[] parameters) { Type type = GetType(name); ConstructorInfo[] ctorInfos = type.GetConstructors(); foreach (ConstructorInfo ci in ctorInfos) { try { return ci.Invoke(parameters); } catch { } } return null; } public object Call(object obj, string func, params object[] parameters) { return Call2(obj, func, parameters); } public object Call2(object obj, string func, object[] parameters) { return CallAs2(obj.GetType(), obj, func, parameters); } public object CallAs(Type type, object obj, string func, params object[] parameters) { return CallAs2(type, obj, func, parameters); } public object CallAs2(Type type, object obj, string func, object[] parameters) { MethodInfo methInfo = type.GetMethod(func, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); return methInfo.Invoke(obj, parameters); } public object Get(object obj, string prop) { return GetAs(obj.GetType(), obj, prop); } public object GetAs(Type type, object obj, string prop) { PropertyInfo propInfo = type.GetProperty(prop, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); return propInfo.GetValue(obj, null); } public object GetEnum(string typeName, string name) { Type type = GetType(typeName); FieldInfo fieldInfo = type.GetField(name); return fieldInfo.GetValue(null); } } } "@ $assemblies = ('System.Windows.Forms', 'System.Reflection') Add-Type -TypeDefinition $sourceCode -ReferencedAssemblies $assemblies -ErrorAction STOP } #Ziel-Verzeichnis auswahl Dialog // Es muss das Datum gewählt werden wo die Dateien einsortiert werden sollen cd c: #THIS IS THE CRITICAL LINE BuildDialog $ziel = New-Object FolderSelect.FolderSelectDialog $ziel.Title = "Bitte wählen sie den Ordner des zugehörigen Tages in der TDS Ordnerstruktur aus"; If ($env:Start_Folder -eq "1") {$ziel.InitialDirectory = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"}; If ($env:Start_Folder -eq "2") {$ziel.InitialDirectory = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs"}; $ziel.ShowDialog() | Out-Null $ziel.FileName Write-Host "Gewähltes Zielverzeichnis ist $($ziel.FileName)" -ForegroundColor Yellow # 3) Ordnername 5-stellig Fahrzeugnummer muss in Ziel-Verzeichnis gesucht werden #Alle Dateien einlesen #$QuellOrdner = ($Ziel1\cuted) # Write-Host "QuellOrdner ist $($QuellOrdner)" -ForegroundColor green <# $ZielOrdner = $ziel.FileName; Write-Host "$ZielOrdner ist $($ZielOrdner)" -ForegroundColor green $dateien = [System.IO.Directory]::GetFiles($QuellOrdner, '*.zip') #> <# foreach($datei in $dateien){ #Fahrzeugtyp auslesen $Typ = ($datei | Select-String -Pattern '\d+' -AllMatches).Matches.Value[0] #Fahrzeugnummer auslesen $Fahrzeugnummer = ($datei | Select-String -Pattern '\d+' -AllMatches).Matches.Value[1] #Fzg-Typ und Fahrzeugnummer mit Bindestrich verbinden "$Typ-$Fahrzeugnummer" #> Danke für eure Hilfe! Grüße Dennis
  9. Hallo zusammen, ich suche ein Skript, um Dateien anhand des Dateinamens bzw. Ordnernamens zu verschieben. Mein Quellverzeichnis sieht folgendermaßen aus: C:\Z_Messdaten\ -> Enthält diverse Dateien im Namensformat "AAA_BBBBB_YYMMDD_HHMM.zip" wobei A und B immer Zahlen sind. -> Enthält einen Unterordner im Namen "BBBBB\hier_drin_liegen_diverse_Bilddateien" Mein Zielordner soll folgendermaßen aussehen: C:\Daten\AAA-BBBBB\Grunddaten\ --> Hier sollen alle entsprechenden .zip Dateien aus dem Quellverzeichnis rein. C:\Daten\AAA-BBBBB\Bilder\ --> Hier sollen alle Bilddateien aus dem Quellverzeichniss Unterordner "BBBBB" rein Also z.B. Quelldaten: 111_12345_YYMMDD.zip, 111_54321_YYMMDD.zip, 222_13579_YYMMDD.zip, [12345\hier_sind_bilddateien], [54321\hier_sind_bilddateien], [13579\hier_sind_bilddateien] Diese sollen ins Ziel: C:\Daten\111-12345\Grunddaten\[.zip] C:\Daten\111-12345\Bilder\[alle Bilder vom 12345] C:\Daten\111-54321\Grunddaten\[.zip] C:\Daten\111-54321\Bilder\[alle Bilder vom 54321] C:\Daten\222-13579\Grunddaten\[.zip] C:\Daten\222-13579\Bilder\[alle Bilder vom 13579] Habt ihr eine Idee für mich? Ich schaffe es irgendwie nicht den Unterordner "BBBBB" zu erkennen und die Daten entsprechend dann in die Zielverzeichnisse einzusortieren :( Danke für eure Hilfe im Voraus! Liebe Grüße Dennis
×
×
  • Neu erstellen...