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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 53018179804
Url: https://administrator.de/contentid/53018179804
Ausgedruckt am: 23.11.2024 um 21:11 Uhr
6 Kommentare
Neuester Kommentar
Powershell könnte z.B. so aussehen wenn ich das Vorhaben richtig interpretiert habe ...
Gruß
# 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ß
Wenn es unbedingt Batch sein soll, hier etwas Lesefutter:
https://www.tutorialspoint.com/batch_script/index.htm
Gruss Penny.
- Windows Batch Grundlagen
- Batch-Grundlagen
- Batch - ein paar Basics die man kennen sollte
- [Workshop Batch for Runaways - Part I - Beispiel FindLongPath.Bat Bedenklich lange Pfade finden
- Workshop Batch for Runaways - Part II - Ein bisschen Handwerkszeug
- Workshop Batch for Runaways - Part III - Datums- und Zeitvariablen im Batch
- HowTo - Wie man Subroutinen in Batchfiles erstellt
- Tutorial zur FOR-Schleife
- SS64 Delayed Expansion
- CMD Echo in fett kursiv oder unterstrichen ausgeben
- Windows console with ANSI colors handling
- MSDN Console Virtual Terminal Sequences
https://www.tutorialspoint.com/batch_script/index.htm
Gruss Penny.
Da kann man dann auch eine Datei abspeichern, die man starten kann um die Aufgabe zu bewältigen?
Klar, *.ps1Das 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 Kapitel 1 – Erste Schritte mit PowerShell