kaiuwe28
Goto Top

Dateiname per Batch auslesen und um eine Stelle verkleinern

Hallo zusammen,

ich hatte gerade schon eine Frage zwecks Dateien kopieren im Forum gestellt und zum Glück auf mal selbst die Antwort gefunden.
Jetzt habe ich wieder eine Änderung, die ich irgendwie nicht hinbekomme und auch noch keinen richtigen Ansatz habe.
Das Forum habe ich schon durchsucht, aber irgendwie finde ich da nichts.

Dateiaufbau / Name:

TagesdatumAAA.DTI
TagesdatumBBB.DTI

Tagesdatum = 2017|11|16

neuer Name:

Vortagaaa.dti
VortagBBB.DTI

Also einmal soll das Datum um einen Tag zurückgestellt werden und bei einer Datei ist die Kleinschreibung erforderlich.

Eingebaut werden soll dies unter folgenden Code:

@echo off & setlocal

set "Ziel=\\Adresse2"  
set "Datum=%date%"   
for /f "tokens=1-3 delims=." %%a in ("%Datum%") do set "ZielOrdner=%Ziel%\%%c%%b%%a"   
md "%Zielordner%" 2>nul   
pushd "<\\Adresse1>" ||goto :eof  
for /f "delims=" %%a in ('dir /a-d /b /od *TagesdatumAAA.DTI') do set "newestFile=%%a"  
for /f "delims=" %%a in ('dir /s /b /a-d "%newestFile%"') do copy "%%a" "%Zielordner%"  

popd 

@echo off & setlocal

set "Ziel=Adresse3"  
set "Datum=%date%"   
for /f "tokens=1-3 delims=." %%a in ("%Datum%") do set "ZielOrdner=%Ziel%\%%c%%b%%a"   
md "%Zielordner%" 2>nul   
pushd "<\\Adresse1>" ||goto :eof  
for /f "delims=" %%a in ('dir /a-d /b /od *TagesdatumBBB.DTI') do set "newestFile=%%a"  
for /f "delims=" %%a in ('dir /s /b /a-d "%newestFile%"') do copy "%%a" "%Zielordner%"  

popd

Über Hilfe würde ich mich sehr freuen face-smile

Danke und Gruß

Jens (kaiuwe28)

Content-ID: 355063

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

Ausgedruckt am: 16.11.2024 um 19:11 Uhr

134464
Lösung 134464 16.11.2017 aktualisiert um 12:48:55 Uhr
Goto Top
Nimm doch gleich Powershell. Mit Batch Datum berechnen geht ist aber aufwendig und für so eine Mini-Aufgabe nicht wert... face-wink
http://www.robvanderwoude.com/datetimentmath.php

$zielordner = "\\Ziel\$((get-date).AddDays(-1).toString('yyyyMMdd'))"  
md $zielordner -Force
gci "\\Adresse1\*$(get-date -f 'yyyyMMdd')AAA.DTI" -File | sort LastWriteTime -Desc | select -First 1 | copy-item -Destination "$zielordner\$((get-date).AddDays(-1).toString('yyyyMMdd'))aaa.dti"  
gci "\\Adresse1\*$(get-date -f 'yyyyMMdd')BBB.DTI" -File | sort LastWriteTime -Desc | select -First 1 | copy-item -Destination "$zielordner\$((get-date).AddDays(-1).toString('yyyyMMdd'))BBB.DTI"  
kaiuwe28
kaiuwe28 16.11.2017 um 15:15:12 Uhr
Goto Top
Hallo Specht,

nach dem ich deinen Link geöffnet hatte bin ich auch ganz schnell wieder ausgestiegen face-smile
Da hast du wohl Recht, dass das mit Powershell besser geht.

Powershell zu öffnen war gerade auch erst einmal wieder für einen User wie mich eine kleine Herausforderung. Hat aber geklappt.
Ich habe deinen tollen Vorschlag etwas abgewandelt, habe aber bei einer Datei ein Problem. Könntest du mir bitte meinen Fehler sagen?

$zielordner = "\\Ziel1\$((get-date).AddDays(0).toString('yyyyMMdd'))"  
md $zielordner -Force
gci "\\Adresse1\*$(get-date -f 'yyyyMMdd')AAA.DTI" -File | sort LastWriteTime -Desc | select -First 1 | copy-item -Destination "$zielordner\$((get-date).AddDays(-1).toString('yyyyMMdd'))aaa.dti"  

$zielordner = "\\Ziel2\$((get-date).AddDays(0).toString('yyyyMMdd'))"  
md $zielordner -Force
gci "\\Adresse1\*$(get-date -f 'yyyyMMdd')SHOPRED.DTI" -File | sort LastWriteTime -Desc | select -First 1 | copy-item -Destination "$zielordner\$((get-date).AddDays(-1).toString('yyyyMMdd'))BBB.DTI"  

$zielordner = "\\Ziel1\$((get-date).AddDays(0).toString('yyyyMMdd'))"  
md $zielordner -Force
gci "\\Adresse1\*$(get-date).AddDays(-1).toString('yyyyMMdd')ccc.dti" -File | sort LastWriteTime -Desc | select -First 1 | copy-item -Destination "$zielordner\$((get-date).AddDays(0).toString('yyyyMMdd'))ccc.dti"  

AAA ist vom heutigen Tag und der heutige Tag ist im Namen - Verschiebung in Ziel1 (Ordner heutiger Tag) Dateiname ist mit Vortag
BBB ist vom heutigen Tag und der heutige Tag ist im Namen - Verschiebung in Ziel2 (Ordner heutiger Tag) Dateiname ist mit Vortag
CCC ist vom heutigen Tag und der Vortag ist im Namen - Verschiebung in Ziel1 (Ordner heutiger Tag) Dateiname ist mit Vortag (bleibt bestehen)

Danke dir face-smile