Mit cmd Datei Dateipaare (*.csv und *.xlsx) aus Ordner in andern Ordner verschieben
Hallo an die Experten,
Ich möchte mit einer CMD Datei aus einem definierten Verzeichnis Dateipaare in ein anderes Verzeichnis verschieben.
Unter Dateipaar verstehe ich zwei Dateien mit exakt gleichem Namen bis auf die Dateiendung.
Also in meinem Beispiel eine CSV Datei und eine Excel Datei.
Wenn nur eine Datei, egal welchen Typs im Quellpfad vorhanden, dann kein verschieben!
Der Quellpfad ist C:\Temp\Eingang\
Der Zielpfad ist C:\Temp\Verarbeitet\
Beispiel:
Quelle:
C:\Temp\Eingang\121.csv
C:\Temp\Eingang\121.xlsx
C:\Temp\Eingang\122.csv
C:\Temp\Eingang\123.csv
C:\Temp\Eingang\123.xlsx
Ziel soll dann sein, dass 121 und 123 in den Ordner C:\Temp\Verarbeitet\
verschobnen werden.
C:\Temp\Verarbeitet\121.csv
C:\Temp\Verarbeitet\121.xlsx
C:\Temp\Verarbeitet\123.csv
C:\Temp\Verarbeitet\123.xlsx
A) Schön wäre noch, wenn ein Zeitstempel (Zeitpunkt des Verschiebens) an dein Dateinamen angehängt wird.
B) Wenn ohne Zeitstempel, dann sollen die Dateien im Zielpfad hart überschrieben werden.
Mich würden beide Varianten A und B interessieren.
Vielen Dank für eure Unterstützung!
viking
Ich möchte mit einer CMD Datei aus einem definierten Verzeichnis Dateipaare in ein anderes Verzeichnis verschieben.
Unter Dateipaar verstehe ich zwei Dateien mit exakt gleichem Namen bis auf die Dateiendung.
Also in meinem Beispiel eine CSV Datei und eine Excel Datei.
Wenn nur eine Datei, egal welchen Typs im Quellpfad vorhanden, dann kein verschieben!
Der Quellpfad ist C:\Temp\Eingang\
Der Zielpfad ist C:\Temp\Verarbeitet\
Beispiel:
Quelle:
C:\Temp\Eingang\121.csv
C:\Temp\Eingang\121.xlsx
C:\Temp\Eingang\122.csv
C:\Temp\Eingang\123.csv
C:\Temp\Eingang\123.xlsx
Ziel soll dann sein, dass 121 und 123 in den Ordner C:\Temp\Verarbeitet\
verschobnen werden.
C:\Temp\Verarbeitet\121.csv
C:\Temp\Verarbeitet\121.xlsx
C:\Temp\Verarbeitet\123.csv
C:\Temp\Verarbeitet\123.xlsx
A) Schön wäre noch, wenn ein Zeitstempel (Zeitpunkt des Verschiebens) an dein Dateinamen angehängt wird.
B) Wenn ohne Zeitstempel, dann sollen die Dateien im Zielpfad hart überschrieben werden.
Mich würden beide Varianten A und B interessieren.
Vielen Dank für eure Unterstützung!
viking
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 671769
Url: https://administrator.de/forum/mit-cmd-datei-dateipaare-csv-und-xlsx-aus-ordner-in-andern-ordner-verschieben-671769.html
Ausgedruckt am: 06.03.2025 um 12:03 Uhr
2 Kommentare
Neuester Kommentar
Moin,
In PowerShell:
Variante 1
Variante 2
In PowerShell:
Variante 1
$sourcePath = "C:\Temp\Eingang"
$destinationPath = "C:\Temp\Verarbeitet"
$csvFiles = Get-ChildItem -Path $sourcePath -Filter "*.csv" -File
foreach ($csv in $csvFiles) {
$xlsxPath = Join-Path $sourcePath ($csv.BaseName + ".xlsx")
if (Test-Path $xlsxPath) {
$ts = Get-Date -Format "yyyy-MM-dd_HHmmss"
$destinationCsv = Join-Path $destinationPath ($baseName + "_" + $ts + ".csv")
$destinationXlsx = Join-Path $destinationPath ($baseName + "_" + $ts + ".xlsx")
Move-Item -Path $csv.FullName -Destination $destinationCsv
Move-Item -Path $xlsxPath -Destination $destinationXlsx
}
}
Variante 2
$sourcePath = "C:\Temp\Eingang"
$destinationPath = "C:\Temp\Verarbeitet"
$csvFiles = Get-ChildItem -Path $sourcePath -Filter "*.csv" -File
foreach ($csv in $csvFiles) {
$xlsxPath = Join-Path $sourcePath ($csv.BaseName + ".xlsx")
if (Test-Path $xlsxPath) {
Move-Item -Path $csv.FullName -Destination $destinationPath -Force
Move-Item -Path $xlsxPath -Destination $destinationPath -Force
}
}
Moin,
Gruß Thomas
@echo off
set "source=C:\Temp\Eingang"
set "target=C:\Temp\Verarbeitet"
for /f "Tokens=1,2 Delims=:" %%A in ('time /T') do set "timestamp=%date:~6,4%-%date:~3,2%-%date:~0,2%_%%A-%%B"
for %%A in ("%source%\*.xlsx") do (
if exist "%%~dpnA.csv" (
move /Y "%%~A" "%target%\%%~nA_%timestamp%.xlsx"
move /Y "%%~dpnA.csv" "%target%\%%~nA_%timestamp%.csv"
)
)
Gruß Thomas