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

Frage Entwicklung Batch & Shell

GELÖST

Powershell: Dateien suchen, Ordner, Unterordner

Mitglied: internet2107

internet2107 (Level 1) - Jetzt verbinden

19.10.2014 um 09:55 Uhr, 8002 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
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit29 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

SAN, NAS, DAS
Hilfe beim Einrichten eines Storages (SAN)
gelöst Frage von Vader666SAN, NAS, DAS15 Kommentare

Hallo Admins! Ich bin in einer kleineren Firma und hatte bisher mit dem Thema SAN nur in meiner Ausbildung ...

Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...