mec0787
Goto Top

Batch File Täglich wechselnder Ordner(Pfad)

Hallo Zusammen

Ich stehe derzeit vor einem - was ich glaube face-smile - kleinem Problem.

Und zwar möchte ich CSV Dateien von einem Ordner in den anderen verschieben oder kopieren reicht schon. Die Herausforderung bei der Geschichte ist, das die Dateien in Ordner erstellt werden, welche täglich den Ordnernamen wechseln.

Ganz konkret sieht der Pfad so aus, wo ich die Dateien abholen möchte:

/DEFAULT/DEFAULT_CU/PRODUKTION/2021-11-05/2000/KSL

Und der Fett markierte Teil ändert täglich und ihr seht schon, dass es das Datum ist welcher als Ordnername erstellt wird.

Habe ihr eine Idee, wie man das machen könnte, was ich bisher gemacht habe ist folgendes:

@echo on

FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set DAT=%%c%%b%%a
FOR /F "tokens=1,2,3,4 delims=/: " %%a in ('time/T') do set TIM=%%a%%b

set NOW=%DAT%%TIM%

copy /y C:\TEMP\DEFAULT\DEFAULT_CU\PRODUKTION/%path%/2000/KSL\*.csv C:\TEMP\TEST

pause
exit

Aber das wäre wohl zu einfach gewesen face-smile das funktioniert leider nicht. Evtl. habt ihr sowas schon gehabt und könnt mir weiterhelfen face-smile.

Danke im Voraus
LG
Mec0787

Content-ID: 1470818535

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

Ausgedruckt am: 17.11.2024 um 05:11 Uhr

erikro
erikro 05.11.2021 um 09:58:37 Uhr
Goto Top
Moin,
Zitat von @mec0787:
Ich stehe derzeit vor einem - was ich glaube face-smile - kleinem Problem.

Ein ganz winziges. face-wink Nimm die Powershell:

copy-item c:\pfad\$(get-date -format "yyyy-MM-dd")\restpfad\*.csv zielpfad  

hth

Erik
em-pie
Lösung em-pie 05.11.2021 um 10:00:31 Uhr
Goto Top
Moin,

viel zu kompliziert.

Das Datum kannst du via folgender Zeile neu "zusammenbauen":
REM zur Erklärung
echo Jahr: %date:~-4%
echo Monat: %date:~-7,2%
echo Tag: %date:~-10,2%

REM umgesetzt für dich:
SET FOLDERDATE=%date:~-4%-%date:~-7,2%-%date:~-10,2%
149569
149569 05.11.2021 aktualisiert um 10:26:57 Uhr
Goto Top
Zitat von @em-pie:
viel zu kompliziert.
Das Datum kannst du via folgender Zeile neu "zusammenbauen":

Und viel zu unzuverlässig denn die Datums und Zeitangaben von %date% sind regionsabhänig formatiert deswegen sollte man Zeitangaben besser per WMI auslesen, das ist dann auch Regionseinstellungs-unabhängig
@echo off & setlocal ENABLEDELAYEDEXPANSION
for /f %%a in ('wmic path win32_Localtime get Year^,Month^,Day^,Hour^,Minute^,Second /value ^| findstr .') do set /a %%a  
for %%a in (month day hour minute second) do set "tmp=0!%%a!" &set "%%a=!tmp:~-2!"  
set "timestamp=%Year%-%Month%-%day%_%Hour%:%Minute%:%Second%"  
echo %timestamp%
Ich würde aber heutzutage auch gleich auf die Powershell gehen ... wieso noch für solch banalen Dinge einen Roman schreiben müssen, aber naja is ja auch Freitag 🐟
erikro
erikro 05.11.2021 um 10:34:38 Uhr
Goto Top
Zitat von @149569:
Ich würde aber heutzutage auch gleich auf die Powershell gehen ... wieso noch für solch banalen Dinge einen Roman schreiben müssen, aber naja is ja auch Freitag 🐟

Wenn ich mir das kryptische Gefrickel angucke, bestätigt das nur mein Vorurteil: Wer heute noch Batches schreibt, hat einen Hang zum Masochismus. face-wink
149569
149569 05.11.2021 aktualisiert um 11:37:55 Uhr
Goto Top
Zitat von @erikro:
Wer heute noch Batches schreibt, hat einen Hang zum Masochismus. face-wink
Oder zu viel Zeit face-big-smile.
mec0787
mec0787 05.11.2021 um 12:08:33 Uhr
Goto Top
Hi Zusammen

Ihr seid ja der Wahnsinn, wie schnell das ging.

Mit PowerShell kenn ich mich leider noch nicht so aus. face-smile ich binde das quasi noch "OldSchool" in den Windows Job Manager ein ein und lasse das jede Nacht laufen.

Tausend dank euch.

LG