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

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

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

Member: bastla
bastla Feb 21, 2011, updated at Oct 18, 2012 at 16:45:54 (UTC)
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
Member: Tonibert
Tonibert Feb 21, 2011 at 08:07:47 (UTC)
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
Member: bastla
bastla Feb 21, 2011 at 08:39:38 (UTC)
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
Member: Tonibert
Tonibert Feb 21, 2011 at 11:02:50 (UTC)
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!
Member: bastla
bastla Feb 21, 2011 at 11:33:37 (UTC)
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]
Member: Tonibert
Tonibert Feb 22, 2011 at 10:24:42 (UTC)
Goto Top
Hallo bastla,

leider bekomme ich keine Ausgabe mit dem Quellcode! =(
Member: bastla
bastla Feb 22, 2011 at 10:30:32 (UTC)
Goto Top
Hallo Tonibert!

Versuch es mit der korrigierten Version noch mal ...

Grüße
bastla
Member: Tonibert
Tonibert Feb 22, 2011 at 12:07:29 (UTC)
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!
Member: bastla
bastla Feb 22, 2011 at 12:15:10 (UTC)
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
Member: Tonibert
Tonibert Feb 22, 2011 at 14:10:15 (UTC)
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!
Member: Tonibert
Tonibert Feb 25, 2011 at 07:29:00 (UTC)
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