lowera6
Goto Top

Batchdatei zum kopieren und zusammenführen von Dateien

Guten Tag Community, ich habe schon viel mit Excel's VBA gemacht, möchte jetzt wieder eine Excel schreiben für mein nächstes Problem.
Leider brauche ich vorher eine Zusammenführung mehrerer Dateien um diese dann aus einem Ordner heraus in Excel einzulesen. Dafür dachte ich mir, sollte eine Batchdatei das richtige sein, die ich dann dort hinkopieren kann, wo sie arbeiten soll.
Also hier die Ausgangssituation:
Es gibt irgendwo im Netzwerk einen Ordner, der einen beliebigen Namen haben kann. Nennen wir ihn HAUPTORDNER.
Dieser HAUPTORDNER beheimatet Unterordner, dessen Namen keine Rolle spielen sollen. Es können bis zu 15 Unterordner sein, manchmal mehr, manchmal weniger. Jeder dieser Unterordner beinhaltet 3 Dateien, aber keine weiteren Unterordner.
Diese 3 Dateien haben immer folgende Nomenklatur:
Dateiname.png
Dateiname.txt
Dateiname_LgD.txt

Ich brauche immer nur die Dateiname.txt - Datei. Wenn es nun z.B. 12 Unterordner gibt, brauche ich dies 12 Dateiname.txt - Dateien. Die haben alle den Namen des jeweiligen Unterordners.

Was ich mir vorstelle:
Im HAUPTORDNER kopiere ich die Batchdatei hinein und führe sie aus. Sie soll nun im HAUPTORDNER einen neuen Unterordner Namens "Zusammen" erzeugen. Danach sollen aus den anderen Unterordnern die gesuchten Dateiname.txt - Dateien in den Unterordner "Zusammen" kopiert werden.

Ich bin da absoluter Leihe was das Programmieren einer Batch-Datei angeht, habe nur mal eine Batch geschrieben ( 3 Zeilen) um über eine Aufgabensteuerung 3x die Woche eine Datei als Sicherung zu kopieren. Also nix großes.

Vielleicht gibt es ja einen Crack, der sagt: das ist easy. Ich will natürlich auch bissl was lernen, aber ich bin halt eher der Excel-VBA-ler...
Herzlichen Dank für Euer Feedback
Gruß Mario

Content-ID: 53018179804

Url: https://administrator.de/contentid/53018179804

Ausgedruckt am: 23.11.2024 um 21:11 Uhr

Kraemer
Kraemer 12.08.2024 um 12:16:05 Uhr
Goto Top
Moin,

Dafür dachte ich mir, sollte eine Batchdatei das richtige sein
das siehst du falsch. Es geht zwar damit - Batch gilt allerdings als tot.

Ich will natürlich auch bissl was lernen, aber ich bin halt eher der Excel-VBA-ler...
na, dann mach das doch damit

Gruß
14135584197
14135584197 12.08.2024 aktualisiert um 13:05:36 Uhr
Goto Top
Powershell könnte z.B. so aussehen wenn ich das Vorhaben richtig interpretiert habe ...

# Zielordner im Ordner des Skriptes erstellen
$ziel = "$psscriptroot\zusammen"  
# Zielordner erstellen wenn noch nicht vorhanden
if (!(Test-Path $ziel)) {new-item -itemtype dir -Path $ziel}
# Textdateien unterhalb des Hauptordners rekursiv suchen welche den Namen des Parent-Ordners haben
foreach($file in Get-ChildItem -Path "D:\Hauptordner" -Recurse -File -Filter *.txt | where-object {$_.Basename -eq $_.Directory.Name}){  
    # Ziel der Datei festlegen
    $dest = join-path $ziel $file.Name
    $cnt = 0
    # wenn eine Datei mit dem Namen bereits im Ziel existiert hänge eine Nummer an den Basename der Datei an
    while(Test-Path -Path $dest -PathType Leaf){
        $dest = join-path $ziel "$($file.Basename)_$((++$cnt))$($file.Extension)"  
    }
    # kopieren die Datei in den Zielordner
    copy-item -Path $file.Fullname -Destination $dest -verbose
}

Gruß
lowera6
lowera6 12.08.2024 um 13:24:57 Uhr
Goto Top
Hallo Zusammen, danke für's Feedback.
Batch war die Idee, das es eine kleine Datei ist, die ich in den jeweiligen Ordner kopieren kann, in dem ich die von mir erläuterte Prozedur ablaufen lassen kann.
Wenn das geschehen ist, schiebe ich die Batch in einen anderen Ordner und starte sie um dort die selbe Arbeit zu machen...

Powershell sagt mir jetzt leider garnichts, hmm... Mist. Da kann man dann auch eine Datei abspeichern, die man starten kann um die Aufgabe zu bewältigen?
Wie komme ich an den Editor? Habe da leider null Plan! Wenn ich mir den Code anschaue um so mehr.... face-smile
Gruß
14135584197
14135584197 12.08.2024 aktualisiert um 13:33:36 Uhr
Goto Top
Da kann man dann auch eine Datei abspeichern, die man starten kann um die Aufgabe zu bewältigen?
Klar, *.ps1
Das PS-Skript kannst du ja auch durch eine Batch starten wenn dir das lieber ist (%~dp0) ist eine Variable die den aktuellen Ordner der Batch enthält und "meinscript.ps1" die Textdatei die das Skript enthält.
@echo off
powershell -EP Bypass -File "%~dp0meinscript.ps1"  
Wie komme ich an den Editor?
Notepad oder jeder andere Texteditor reicht völlig, sind auch nur Textdateien die durch einen Interpreter gejagt werden ...
Habe da leider null Plan!
Lesen bildet face-wink Kapitel 1 – Erste Schritte mit PowerShell
Penny.Cilin
Penny.Cilin 12.08.2024 um 13:27:52 Uhr
Goto Top
Powershell sagt mir jetzt leider garnichts, hmm.
PowerShell ist seit Windows 7 bei jeder Installation dabei. Einfach mal im Startmenue Powersshell angegeben.
Es ist auch eine Entwicklungsumgebung (Powershell ISE) vorhanden.

Gruss Penny.