gnumpf21
Goto Top

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.

Content-Key: 327203

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

Ausgedruckt am: 19.03.2024 um 02:03 Uhr

Mitglied: 77559
Lösung 77559 22.01.2017 um 23:39:15 Uhr
Goto Top
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
Mitglied: 131381
131381 23.01.2017 aktualisiert um 10:37:09 Uhr
Goto Top
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
Mitglied: gnumpf21
gnumpf21 23.01.2017 um 19:33:00 Uhr
Goto Top
Hi,

es müssen keine Wochen-Daten etc. irgendwie manipuliert werden, nur die vorhandene Datei aus "KW 02" in "KW 03" kopieren
und den Dateinamen entsprechend angepasst werden.

Es würde reichen, wenn ich die KWs als Variable angeben könnte.

sprich:

wochencopy.bat 02 03
oder
wochencopy.bat 02 und er kopiert dann automatisch in den Ordner "KW 03"


Danke
gnumpf21
Mitglied: 77559
77559 23.01.2017 um 23:29:35 Uhr
Goto Top
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
Mitglied: 131381
131381 24.01.2017 aktualisiert um 08:23:57 Uhr
Goto Top
[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:
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)
[/OT]

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"  
    )
)
Mitglied: gnumpf21
gnumpf21 04.02.2017 um 18:03:08 Uhr
Goto Top
Danke,
klaptt aber irgenwie noch nicht so richtig.

ich melde mich nachdem ich deinen Code verstanden hab', dann wird die Info genauer.
Danke nochmals