Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Powershell: Dateien suchen, Ordner, Unterordner

Mitglied: internet2107

internet2107 (Level 1) - Jetzt verbinden

19.10.2014 um 09:55 Uhr, 8547 Aufrufe, 5 Kommentare, 3 Danke

Hallo und guten Morgen.

Leider habe ich noch einen Teil 2, den ich irgendwie nicht gelöste bekomme. Dank @colinardo (Uwe) wurde der Teil 1 sehr gut gelöst, dafür noch mal großen Dank.

Nun habe ich aber noch folgendes Problem.
Wie im Teil 1 bekannt, sollen aus Ordnern und Unterorder bestimmte Dateien gefiltert und entsprechend verarbeitet werden, was ja nun auch wieder klappt.
Nach der Verarbeitung sollen aber die verarbeiteten Dateien entsprechend an einem anderen Ort erstellt werden, inkl. dem Ordner/Unterordner wie an der Quelle.

Beispiel:
Vor der Verarbeitung soll in einem Quellordner, indem sich ca. 10.000 Dateien befinden, inkl. seiner Unterordner nach Dateien vom Typ x gesucht werden, diese werden dann verarbeitet (umgewandelt nach PDF). Das klappt ja auch einwandfrei.
Nur soll am Ziel auch genauso wieder die Ordnerstruktur erstellt werden, inkl. der Unterordner und dort die verarbeiteten Dateien abgelegt werden.

01.
$DATDateien = dir "C:\Temp\test_dat\" -include *.mxa, *.dra, *.log -recurse  
Dieser "test_dat" - Ordner hat ggf. xx Unterordner, indem auch wieder eine Menge Dateien liegen und ggf. verarbeitet werden müssen, sofern sie die Bedingung (Filter) erfüllen.
Dann werden alle gefilterten Dateien in Word geöffnet, dort verarbeitet und als PDF gespeichert. Auch das klappt einwandfrei.

SOLL soll aber sein, dass alle Dateien im Zielordner auch jeweils genauso wieder in Unterordnern erstellt werden

Vielen Dank vorab.
Mitglied: colinardo
19.10.2014, aktualisiert um 11:13 Uhr
Moin internet2107,
auch noch am Sonntag fleißig .

Auf deinen letzten Post bezogen könnt dies so aussehen:
(Kommentare siehe Code)
01.
$sourceRoot = 'c:\deinPfad' 
02.
$targetRoot = 'D:\deinzielPfad' 
03.
dir $path -Include '*.xlsb' -Recurse | %{ 
04.
    # passende DAT Datei suchen 
05.
    $dat = dir "$sourceRoot\$($_.BaseName.Replace('_','-'))*_USED.DAT" -Recurse | select -First 1 
06.
    # wenn eine zur xlsb-Datei passende DAT-Datei gefunden wurde 
07.
    if ($dat){ 
08.
        write-host "Für folgende Datei wurde eine USED-DAT gefunden:"$_.FullName 
09.
         
10.
        # ----------------------------------------------------- 
11.
        # Name des neuen Ordners erstellen indem der Quell-Root durch den Zielroot ersetzt wird 
12.
        $newDir = $_.DirectoryName.Replace($sourceRoot,$targetRoot) 
13.
        # Zielordnerstruktur erstellen 
14.
        new-item -ItemType Directory -Path $newDir -Force 
15.
        # File an seinen neuen Ort kopieren 
16.
        copy-item $_.FullName "$newDir\$($_.Name)" -Force 
17.
        # ----------------------------------------------------- 
18.
19.
}
Das Prinzip ist folgendes: Du ersetzt im Pfadnamen der Datei mit Replace dein Quell-Root mit deinem Zielroot, danach erstellst du diese Ordnerstruktur mit new-item und kopierst deine Datei dorthin, fertig.

Grüße Uwe
Bitte warten ..
Mitglied: internet2107
21.10.2014, aktualisiert um 15:51 Uhr
Lieber Uwe.

Ich baue mir gerade den Code auch zu dieser Seite weiter zusammen.

Eine Frage hierzu.
Wie kann ich die folgende Dateibezeichnung per RegEx soweit beschneiden, dass aus:
T101361_2 (Test 2) (2281695) (2_3h) (19270236).mxa --> T101361_2
wird ?. Es soll also alles was nach dem Leerzeichen vor der ersten Klammer abgeschnitten werden ?
$string -replace '^\s ???????"

Danke im Voraus.
Bitte warten ..
Mitglied: colinardo
21.10.2014, aktualisiert um 16:14 Uhr
z.B. so
$string.Split(" (")[0]
oder so
([regex]'^([^\s\(]+)').Match($string).Value
oder so
$string -replace '^([^\s\(]+).*','$1'
Grüße Uwe
Bitte warten ..
Mitglied: internet2107
21.10.2014 um 19:44 Uhr
Danke für die Antwort oben. Ich komme meinem Ziel näher.
Jedoch muss hier in diesem Code noch irgendwo ein Fehler enthalten sein:

01.
$path = "C:\Temp\test_dat\a" 
02.
$path_pdf = "C:\Temp\test_dat\pdf" 
03.
$path_ziel = "C:\Temp\test_dat\PDF_A_" 
04.
$dateien = gci -path $path -include *.mxa, *.dra, *.log -recurse  
05.
 
06.
<# 
07.
 
08.
..hier findet die Umwandlung der gefilterten Dateien über Word nach PDF statt. 
09.
..$doc.SaveAs([ref]$path_pdf, [ref]17)  
10.
 
11.
#> 
12.
$file_old = $dateien.basename 
13.
$file_new = $file_old -replace '^([^\s\(]+).*','$1' 
14.
foreach ($folder in $file_new)  
15.
{  
16.
New-Item -Type directory $path_ziel$folder -Force 
17.
$a1 = "\*.pdf" 
18.
copy-Item $path_pdf$a1 $path_ziel$folder |  Where-Object  { $dateien -match $folder } 
19.
20.
 
Beschreibung:
Nachdem die gefilterten Dateien über Word als PDF exportiert worden sind, (Word wird zur speziellen Formatierung benutzt), liegen alle PDF zunächst in einem "Sammel"-Ordner. Zur besseren Übersicht soll aber eine Ordnerstruktur erstellt werden. Der Ordner hat jeweils genau denselben Namen wie die ersten Buchstaben der Datei.
Das klappt auch alles soweit.

Am Ende sollen aber die PDFs in die vom Namen passenden Ordner kopiert werden. Hier kopiert er aber aktuell immer alle PDFs in alle Ordner.
Im Klartext:
Es befindet sich am Ende ein PDF im Ordner: "C:\Temp\test_dat\pdf\T101361_2 (Test 2) (2281695) (2_3h) (19270236).pdf"
Dieses PDF soll aber nur in erstellten Ordner: "T101361_2" kopiert werden.
Jedoch befinden sich dort aktuell auch Dateien vom Namen: "T101361_5 (Test 2) (2281695) (2_3h) (19270236).pdf", obwohl die Benennung T101361_5 eigentlich in den Ordner "T101361_5" müsste....

Sieht jemand den Fehler ?
Bitte warten ..
Mitglied: colinardo
21.10.2014, aktualisiert um 23:38 Uhr
01.
$file_old = $dateien.basename 
02.
$file_new = $file_old -replace '^([^\s\(]+).*','$1' | select -unique 
03.
foreach ($folder in $file_new)  
04.
{  
05.
  New-Item -Type directory "$path_ziel\$folder" -Force 
06.
  copy-Item "$path_pdf\$folder*.pdf" "$path_ziel\$folder" 
07.
}
p.s. das angehängte where-object in deiner Zeile 18 ist ein ganz grober Fehler. Da hast du die Powershell und die Pipe noch nicht ganz durchblickt. Gefiltert werden kann immer nur vor einer Aktion ! In diesem Fall geht's aber auch ohne Filter via Wildcard im copy-Befehl.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Datei an einem anderen Ort suchen - Powershell

gelöst Frage von internet2107Batch & Shell2 Kommentare

Hallo. Ich habe folgendes "Problem". Ich habe mir eine kleine UI gebaut, die auf Knopfdruck, also über Favoriten-Buttons bestimmte ...

Windows Server

Powershell logfile nach Datei suchen

Frage von krischeuWindows Server2 Kommentare

Hi, ich suche nach einer Möglichkeit, das weggespeicherte Logfile auszulesen und zwar nach Zugriff auf eine bestimmte Datei. Das ...

Batch & Shell

Ordner inkl. Unterordner nach Dateien überprüfen

Frage von belfryBatch & Shell4 Kommentare

Hallo, ich bin neu hier im Forum und arbeite auch relativ neu als Administrator. Ich soll ein Batchskript schreiben, ...

Batch & Shell

Powershell multiple Datei-Inhaltssuche und mehrere Unterordner

Frage von Jenny82Batch & Shell3 Kommentare

Hallo zusammen, ich versuche gerade per Powershell Dateien mit bestimmtem Textinhalt in diverse Unterordner zu verschieben und krieg das ...

Neue Wissensbeiträge
Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 1 StundeSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 7 StundenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Microsoft Office

MS Office 2019 ohne OneNote - OneNote App speichert nur in Cloud

Information von Deepsys vor 17 StundenMicrosoft Office2 Kommentare

Microsoft zeigt deutlich wohin alles bei Ihnen geht, OneNote 2019 wird es nicht mehr geben, und die Windows 10 ...

Humor (lol)

Warum man sein Gast-WLAN nicht beliebig nennen sollte

Erfahrungsbericht von Henere vor 1 TagHumor (lol)5 Kommentare

Servus, mal was aus dem Alltag. Zu Hause. Eigentlich wollte ich nur einen weiteren WLAN-AP ins Netz bringen, damit ...

Heiß diskutierte Inhalte
Windows Netzwerk
LAN nur 10MB pro s trotz gb lan
Frage von tsunamiWindows Netzwerk21 Kommentare

Hallo zusammen, ich brauche mal wieder einen Anstoß in die richtige Richtung. Ich habe einen Windows 10 pc mit ...

Festplatten, SSD, Raid
Server SSD: NVMe PCIe 3.0 RAID?
Frage von bouneeFestplatten, SSD, Raid15 Kommentare

Hallo liebe Admins, mir stellt sich gerade die Frage, ob ein neuer Server mit SSD NVMe PCIe 3.0 Sinn ...

Windows 10
Windows 10 Startmenü-Einstellungen Systemweit festlegen
Frage von flotautWindows 1013 Kommentare

Guten Morgen liebe Admins, wir möchten bei uns am Lehrstuhl demnächst auf Windows 10 umsteigen. Wir installieren unsere PC's ...

Netzwerke
Gateway in Switches, Druckern ect eintragen oder nicht
Frage von JodelknutNetzwerke12 Kommentare

Hi, bisher habe ich immer das Gateway überall wo es verlangt oder eintragbar war auch eingetragen. Mein neuer Kollege ...