tonibert
Goto Top

Batch für Ordner des Vortages

Hallo Forum,

ich versuche von einem Netzlaufwerk ( O: )eine Datei zu kopieren.

Die Datei liegt in einem Ordner der immer nach JJJJMMTT benannt ist.
Ich möchte immer aus dem Ordner von gestern eine Datei test.txt auf ein anderes Laufwerk kopieren!

Leider fehlt mir komplett der Ansatz zur Ordnersuche etc.

Die Hilfe konnte meine Fragen leider auch nicht beantworten!

Bedanke mich schon mal für eure Hilfe!

Toni

Content-ID: 161183

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

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

bastla
bastla 21.02.2011, aktualisiert am 18.10.2012 um 18:45:54 Uhr
Goto Top
Hallo Tonibert!

In diesem Thread findest Du einen Ansatz für das Ermitteln des gestrigen Datums durch ein in den Batch integriertes VBScript, und eine globale Suche auf dem Laufwerk O: (warum ist es überhaupt erforderlich, das gesamte Laufwerk zu durchsuchen?) nach einem bestimmten Ordner ginge in einem Batch etwa so:
for /f "delims=" %%i in ('dir /s /b /ad "O:\%Ordnername%"') do set "Ordnerpfad=%%i"
Grüße
bastla
Tonibert
Tonibert 21.02.2011 um 09:07:47 Uhr
Goto Top
Hallo Bastla und erstmal Danke für deine Zeit und Mühe,

Zur Erklärung:

Unter O:

werden täglich Ordner erstellt nach folgendem Format

20110218
20110219
20110220

und in jedem Ordner liegt jeweils meine Datei test.txt die ich mir kopieren muss/will.

Leider bin ich in Batch der totale Anfänger...Sorry
bastla
bastla 21.02.2011 um 09:39:38 Uhr
Goto Top
Hallo Tonibert!

Wenn der Ordner nicht erst gesucht werden muss (sondern zB unmittelbar auf "O:\" liegt), könntest Du auch einfach den jüngsten Ordner, dessen Name zB mit "201" beginnt (funktioniert dann aber nur bis zum Jahr 2019 face-wink), verwenden - etwa so:
@echo off & setlocal
set "Ordnerpfad="  
for /d %%i in (O:\201*) do set "Ordnerpfad=%%~fi"  
echo Zu kopierende Datei: "%Ordnerpfad%\test.txt"  
Grüße
bastla
Tonibert
Tonibert 21.02.2011 um 12:02:50 Uhr
Goto Top
OK ich fange an zu verstehen..und das möchte ich ja eben auch =)

Ich weise meiner Variblen "Ordnerpfad" den Wert zu, nachdem ich mittels

"for /d %%i in (O:\201*) do set "Ordnerpfad=%%~fi" "

den Pfad gefunden habe.Richtig?

Leider wird immer erst in der Nacht um 1 eine Datei in den Ordner von gestern geschrieben(also am 21.2.2011 um 1 Uhr nachts wird eine Datei in den Ordner 20112020 geschrieben), daher benötige ich eben immer Datei von gestern!
bastla
bastla 21.02.2011 um 12:33:37 Uhr
Goto Top
Hallo Tonibert!

Eigentlich hatte ich vorhin (= bevor ich leider abgelenkt wurde face-sad) zu folgender Variante raten wollen:
@echo off & setlocal
set "Ordnerpfad="  
for /f "delims=" %%i in ('dir /b /ad /on O:\201* 2^>nul') do set "Ordnerpfad=O:\%%i"  
if defined Ordnerpfad (echo Zu kopierende Datei: "%Ordnerpfad%\test.txt") else (echo Kein Ordner gefunden!)  
- dadurch wird nämlich der (anhand des Namens sortierte) neueste Ordner gefunden ...

Grüße
bastla

[Edit] Anführungszeichen in Zeile 3 korrigiert [/Edit]
Tonibert
Tonibert 22.02.2011 um 11:24:42 Uhr
Goto Top
Hallo bastla,

leider bekomme ich keine Ausgabe mit dem Quellcode! =(
bastla
bastla 22.02.2011 um 11:30:32 Uhr
Goto Top
Hallo Tonibert!

Versuch es mit der korrigierten Version noch mal ...

Grüße
bastla
Tonibert
Tonibert 22.02.2011 um 13:07:29 Uhr
Goto Top
Hallo und Danke auch an Biber!

Jetzt bekomme ich eine Ausgabe!

Problem: Die test.txt hat jeweils noch das Datum im Namen stehen und das benötige ich ja zum kopieren auch noch.

Die Datei (oder die Variable) müsste also so aussehen


O:\20110220\20110220_test.txt


Habt ihr dafür auch noch eine Lösung?

Vielen,vielen Dank!
bastla
bastla 22.02.2011 um 13:15:10 Uhr
Goto Top
Hallo Tonibert!

Naja, wenn es mehr als eine Datei gibt, musst Du tatsächlich den Namen kennen - sonst würde auch ein
... copy "%Ordnerpfad%\*_test.txt" "D:\Zielordner\"  
genügen.

Wenn andererseits das Datum dem Ordnernamen entspricht, ginge das etwa so:
@echo off & setlocal
set "Datum="  
for /f "delims=" %%i in ('dir /b /ad /on O:\201* 2^>nul') do set "Datum=%%i"  
if defined Datum (echo Zu kopierende Datei: "O:\%Datum%\%Datum%_test.txt") else (echo Kein Ordner gefunden!)  
Grüße
bastla
Tonibert
Tonibert 22.02.2011 um 15:10:15 Uhr
Goto Top
Hallo Bastla,

SUPER!!!!!!!

Es funktioniert! Zur Vollständigkeit "meine" bat


@echo off & setlocal

set "Datum="


for /f "delims=" %%i in ('dir /b /ad /on O:\201* 2^>nul') do set "Datum=%%i"
if defined Datum (echo Zu kopierende Datei: "O:\%Datum%\%Datum%_test.txt") else (echo Kein Ordner gefunden!)

xcopy /E /S /Y O:\%Datum%\%Datum%_test.txt C:\99_20110220


Vielen Dank für deine Hilfe!
Tonibert
Tonibert 25.02.2011 um 08:29:00 Uhr
Goto Top
Hallo Zusammen,

leider habe ich nun doch noch ein Problem!


Meine Ordner heißen immer wie das Datum z.B.


20110225 JJJJMMTT

aber meine Datein heißen leider so

110225_test.txt
JJMMTT


Habt ihr dafür auch noch eine Lösung???

Vielen Dank

Toni