Dateien aus einer Liste anhand verschiedener Parameter kopieren
Hallo zusammen,
ich habe folgende Herausforderung, und finde da leider keine Lösung...
Es gibt eine .txt-Datei (projekt.txt) mit eindeutigen Projektnummer (PN_NR) pro Zeile (11 stellig),
diese Projektnummer ist Bestandteil (Anfang) eines .xls-Dateinamens im Format "PN_NR-KWyy-NAME.xls"
Ich möchte nun aus dem Ordner "KWyy" alle Dateien aus der Projektliste (projekt.txt) in "KW'yy+1'" kopieren und
gleichzeitig auch den Namen der Datei anpassen. Die Ordner von KW01 -KW52 sind bereits vorhanden.
Beispiel:
Ordner "KW02"
Datei "23456789101-KW02-test.xls"
soll im Ordner "KW03" als
"23456789101-KW03-test.xls" erscheinen.
Kann man soetwas als .bat erstellen?
Danke für Euren Input.
ich habe folgende Herausforderung, und finde da leider keine Lösung...
Es gibt eine .txt-Datei (projekt.txt) mit eindeutigen Projektnummer (PN_NR) pro Zeile (11 stellig),
diese Projektnummer ist Bestandteil (Anfang) eines .xls-Dateinamens im Format "PN_NR-KWyy-NAME.xls"
Ich möchte nun aus dem Ordner "KWyy" alle Dateien aus der Projektliste (projekt.txt) in "KW'yy+1'" kopieren und
gleichzeitig auch den Namen der Datei anpassen. Die Ordner von KW01 -KW52 sind bereits vorhanden.
Beispiel:
Ordner "KW02"
Datei "23456789101-KW02-test.xls"
soll im Ordner "KW03" als
"23456789101-KW03-test.xls" erscheinen.
Kann man soetwas als .bat erstellen?
Danke für Euren Input.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 327203
Url: https://administrator.de/forum/dateien-aus-einer-liste-anhand-verschiedener-parameter-kopieren-327203.html
Ausgedruckt am: 05.05.2025 um 20:05 Uhr
6 Kommentare
Neuester Kommentar

HI gnump21,
kurze Antwort ob man kann weiss ich nicht, ich könnte schon aber...
... welche KW soll die Basis sein? Aktuelle Woche nach wimre ISO8601 ?
Wenn noch nicht da, von der Vorwoche kopieren oder wie?
Batch ist nicht die ideale Wahl wenn es um Datums-rechnerei geht.
vb-/jscript sind da besser geeignet.
Powershell nur mit Hilfe von externen Modulen (Kleinweich hält nur eingeschränkt etwas von internationalen Standards)
Gruß
LotPings
kurze Antwort ob man kann weiss ich nicht, ich könnte schon aber...
... welche KW soll die Basis sein? Aktuelle Woche nach wimre ISO8601 ?
Wenn noch nicht da, von der Vorwoche kopieren oder wie?
Batch ist nicht die ideale Wahl wenn es um Datums-rechnerei geht.
vb-/jscript sind da besser geeignet.
Powershell nur mit Hilfe von externen Modulen (Kleinweich hält nur eingeschränkt etwas von internationalen Standards)
Gruß
LotPings

Powershell nur mit Hilfe von externen Modulen
Hä???? So ein Quark! PS kann alles was ein VBS kann und tausend mal mehr ohne irgendwelche externen Module, das .NET bietet alles was das Herz begehrt und natürlich auch internationalisiert ...Gruß mik

Hi mik,
dann zeige mir doch bitte die eingebaute Funktion, die korrekt mit Kalenderwochen nach ISO 8601 umgehen kann. Es gibt eine Grund für 3rd Party Module wie IsoDates.psm1 by Joel Bennett.
Gruß LotPings
dann zeige mir doch bitte die eingebaute Funktion, die korrekt mit Kalenderwochen nach ISO 8601 umgehen kann. Es gibt eine Grund für 3rd Party Module wie IsoDates.psm1 by Joel Bennett.
Gruß LotPings

[OT]
Erstens ist das in dem Sinne kein richtiges Zusatzmodul, da es auch nur aus PS Code besteht den du selber so in deinen eigenen Code kopieren kannst (keine weitere Abhängigkeit) und zweitens ist das Ding über ein halbes Jahrzehnt alt und das wurde mittlerweile hiermit gefixt:
[/OT]
An den TO z.B. so
Erstens ist das in dem Sinne kein richtiges Zusatzmodul, da es auch nur aus PS Code besteht den du selber so in deinen eigenen Code kopieren kannst (keine weitere Abhängigkeit) und zweitens ist das Ding über ein halbes Jahrzehnt alt und das wurde mittlerweile hiermit gefixt:
dann zeige mir doch bitte die eingebaute Funktion, die korrekt mit Kalenderwochen nach ISO 8601 umgehen kann.
[System.Globalization.DateTimeFormatInfo]::CurrentInfo.Calendar.GetWeekOfYear((get-date),2,1)
An den TO z.B. so
@echo off &setlocal EnableDelayedexpansion
set "PROJEKTDATEI=c:\projekt.txt"
set "ZIEL=c:\WochenOrdner"
set "KW=KW02"
for /f "usebackq delims=" %%a in ("%PROJEKTDATEI%") do (
for /f "tokens=1,2,* delims=-" %%b in ('dir /b /A-D "%ZIEL%\%KW%\%%a-%KW%*"') do (
set NKW=%%c
if !NKW! EQU 52 (set NKW=1) else (set /a NKW=!NKW:~-2! + 1)
set NKW=0!NKW!
copy "%ZIEL%\%KW%\%%b-%%c-%%d" "%ZIEL%\KW!NKW:~-2!\%%b-KW!NKW:~-2!-%%d"
)
)