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-Key: 355063

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

Printed on: April 19, 2024 at 17:04 o'clock

Mitglied: 134464
Solution 134464 Nov 16, 2017 updated at 11:48:55 (UTC)
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"  
Member: kaiuwe28
kaiuwe28 Nov 16, 2017 at 14:15:12 (UTC)
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