Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Dateien nach Datum sortieren

Frage Entwicklung Batch & Shell

Mitglied: rejael

rejael (Level 1) - Jetzt verbinden

30.01.2007, aktualisiert 01.02.2007, 9756 Aufrufe, 14 Kommentare

Dateien nach Datum sortieren und dann kopieren
[Edit Biber]: Ist mit vereinten Kräften fast schon eine Musterlösung geworden [/Edit]

Hallo alle zusammen,

ich habe mal eine Bitte an "Batcher" unter euch:

ich möchte aus einem Ordner die letzten 2 dateien in ein anderen Ordner kopieren, wobei dateien alle errorxxxxxx.txt heißen.

Bis jetzt funktioniert es so:

@echo off
:: -------erstelle ordner
mkdir "H:\My Databases\test_xcopy\%date%"

:: ------- hier soll eine Sortierung im aktuellem Ordner erfolgen und dann die letzten 2 Dateien kopiert werden

??????

:: ------- kopiere Datei
xcopy H:\testxcopy\robot.txt "H:\My Databases\test_xcopy\%date%" /D /Y

:: ------- kopiere Datei (davon die letzten 2???)
xcopy H:\testxcopy\Kensingtonerr*.txt "H:\My Databases\test_xcopy\%date%" /D /Y

close

wenn jemand eine Idee hat, dann antwortet bitte.
PS: Können die Dateien auch noch vor dem kopieren gepackt werden??

Ciao René
Mitglied: miniversum
30.01.2007 um 16:13 Uhr
@echo off
setlocal enabledelayedexpansion
set Anzahl=2

set zahl=1
FOR /F "delims=" %%i in ('dir /b /O-D') do (
if !zahl! leq %anzahl% ECHO copy "%%i"
set /a zahl=!zahl!+1
)

Unter Anzahl gibst du eben deine zwei oder wieviele du kopiert haben willst an.
Hier siehst du nur welche Kopiert weren. Wilslt du das es ausgeführt wird must du das ECHO entfernen.

miniversum
Bitte warten ..
Mitglied: Biber
30.01.2007 um 18:01 Uhr
...oder, wenn Du es ohne Delayedexpansion machen willst:
01.
:: -----------snipp ProcessLast.bat [Parameter1: Anzahl] 
02.
@echo off & setlocal 
03.
REM Kein Parameter angegeben? Dann "1" als Anzahl annehmen 
04.
If [%1]==[] %0 1 
05.
if not exist "H:\My Databases\test_xcopy\%date%" mkdir "H:\My Databases\test_xcopy\%date%" 
06.
For /L %%i in (1,1,%1) do call :doSomething 
07.
goto :eof 
08.
 
09.
:doSomething 
10.
for /f %i in ('dir /b /o:d error*.txt') do @Set "ThisErrorFile=%%i" 
11.
REM Die neueste Errorxxxxx.txt steht in der Variablen %ThisErrorfile% 
12.
REM und nun COPY, MOVE, RENAME oder 7z oder Rar mir diese Datei... Beispiel MOVE: 
13.
Move "%ThisErrorFile%  "H:\My Databases\test_xcopy\%date%\*.*" 
14.
goto :eof
[ungetestete Skizze]

Zum Thema Packen, Zippen, Raren findest Du ein paar Beispiel-Beiträge im Bereich Batch & Shell.

HTH
Biber
Bitte warten ..
Mitglied: rejael
31.01.2007 um 21:10 Uhr
Super Danke für die schnelle Antwort, nur leider bin ich nicht der Experte in Sachen Programmierung!
Wo müsste denn dann dein Code eingesetzt werden?

@echo off
:: -------erstelle ordner
mkdir "H:\My Databases\test_xcopy\%date%"
xcopy H:\testxcopy\robot.txt "H:\My Databases\test_xcopy\%date%" /D /Y

setlocal enabledelayedexpansion
set Anzahl=2

set zahl=2
FOR /F "delims=" %%i in ('dir /b /O-D') do (
if !zahl! leq %anzahl% ECHO copy "%%i"
set /a zahl=!zahl!+1
)

xcopy H:\testxcopy\Kensingtonerr*.txt "H:\My Databases\test_xcopy\%date%" /D /Y

close

So wird der Ordner erstellt und die robot.txt kopiert, aber die
Oder muss dann der ganze Code anders geschrieben werden???

Danke euch
Bitte warten ..
Mitglied: miniversum
31.01.2007 um 21:24 Uhr
@echo off
:: -------erstelle ordner
mkdir "H:\My Databases\test_xcopy\%date%"

:: ------- hier soll eine Sortierung im aktuellem Ordner erfolgen und dann die letzten 2 Dateien kopiert werden

setlocal enabledelayedexpansion
set Anzahl=2

set zahl=1
FOR /F "delims=" %%i in ('dir /b /O-D') do (
if !zahl! leq %anzahl% ECHO copy "%%i" "Z:\iehl"
set /a zahl=!zahl!+1
)

setlocal disabledelayedexpansion

:: ------- kopiere Datei
xcopy H:\testxcopy\robot.txt "H:\My Databases\test_xcopy\%date%" /D /Y

:: ------- kopiere Datei (davon die letzten 2???)
xcopy H:\testxcopy\Kensingtonerr*.txt "H:\My Databases\test_xcopy\%date%" /D /Y

close


Das dickgedruckte "Z:\iehl" must du halt anpassen WOHIN die Dateien kopiert werden sollen.
Das ECHO mußt du entfernen das die Dateien wirklich kopiert werden und nicht nur angezeigt.
Das setlocal disabledelayedexpansion ist wahlweiße. kansnt du auch weglassen.

miniversum
Bitte warten ..
Mitglied: rejael
31.01.2007 um 21:41 Uhr
Also wenn ich es so anpasse, dann wird die robot.txt und die ganzen Kingstonerrorxxx.txt kopiert, aber ich will ja nur die 2 aktuellsten Kingstonerrorxxx.txt dateien kopiert haben?

@echo off
:: -------erstelle ordner
mkdir "H:\My Databases\test_xcopy\%date%"

:: ------- hier soll eine Sortierung im aktuellem Ordner erfolgen und dann die letzten 2 Dateien kopiert werden

setlocal enabledelayedexpansion
set Anzahl=1

set zahl=1
FOR /F "delims=" %%i in ('dir /b /O-D') do (
if !zahl! leq %anzahl% copy "%%i" "H:\My Databases\test_xcopy\%date%"
set /a zahl=!zahl!+1
)

::---setlocal disabledelayedexpansion

:: ------- kopiere Datei
xcopy H:\testxcopy\robot.txt "H:\My Databases\test_xcopy\%date%" /D /Y

:: ------- kopiere Datei Kensingtonerr*.txt (davon die letzten 2???)
xcopy H:\testxcopy\Kensingtonerr*.txt "H:\My Databases\test_xcopy\%date%" /D /Y

close

Danke rejael
Bitte warten ..
Mitglied: rejael
31.01.2007 um 21:41 Uhr
Also wenn ich es so anpasse, dann wird die robot.txt und die ganzen Kingstonerrorxxx.txt kopiert, aber ich will ja nur die 2 aktuellsten Kingstonerrorxxx.txt dateien kopiert haben?

@echo off
:: -------erstelle ordner
mkdir "H:\My Databases\test_xcopy\%date%"

:: ------- hier soll eine Sortierung im aktuellem Ordner erfolgen und dann die letzten 2 Dateien kopiert werden

setlocal enabledelayedexpansion
set Anzahl=1

set zahl=1
FOR /F "delims=" %%i in ('dir /b /O-D') do (
if !zahl! leq %anzahl% copy "%%i" "H:\My Databases\test_xcopy\%date%"
set /a zahl=!zahl!+1
)

::---setlocal disabledelayedexpansion

:: ------- kopiere Datei
xcopy H:\testxcopy\robot.txt "H:\My Databases\test_xcopy\%date%" /D /Y

:: ------- kopiere Datei Kensingtonerr*.txt (davon die letzten 2???)
xcopy H:\testxcopy\Kensingtonerr*.txt "H:\My Databases\test_xcopy\%date%" /D /Y

close

Danke rejael
Bitte warten ..
Mitglied: Biber
31.01.2007 um 22:23 Uhr
Moin rejael,

hier auch noch mal meine [ungetestete] Variante im Stück:

01.
:.------snipp CopyLast.bat  
02.
@echo off & setlocal 
03.
:: Was variabel bleiben sollte, ist die Anzahl --->Parameter 1; Default 1 
04.
IF [%1]==[] %0 1 
05.
:: ------- hier soll eine Sortierung im aktuellem Ordner erfolgen und dann die letzten 2 Dateien kopiert werden 
06.
::Hmmm, die Vorgabe "aktueller Ordner" ist gefährlich.. geh lieber von "immer ein bestimmter Ordner aus. 
07.
Set "QuellOrdner=H:\testxcopy" 
08.
:: und den ZielOrdner unterstellen wir auch mal als fest 
09.
Set "ZielOrdner=H:\My Databases\test_xcopy" 
10.
If not exist "%QuellOrdner%" ( 
11.
    echo QuellOrdner nicht vorhanden 
12.
    Pause 
13.
    Goto :eof 
14.
)     
15.
PushD "%QuellOrdner%" 
16.
For /L %%i in (1,1,%1) do call :doSomething 
17.
If exist "%Zielordner%\%date%" copy "%QuellOrdner%\robot.txt"  "%ZielOrdner\%date%\*.*"  
18.
PopD 
19.
goto :eof 
20.
 
21.
:doSomething 
22.
for /f %%i in ('dir /b /o:d Kensingtonerr*.txt') do @Set "ThisErrorFile=%%i" 
23.
REM Die neueste KensingtonErrorxxxxx.txt steht in der Variablen %ThisErrorfile% 
24.
REM und nun COPY, MOVE, RENAME oder 7z oder Rar mir diese Datei... Beispiel COPY: 
25.
::erst jetzt das...%date%-Verzeichnis anlegen 
26.
If not exist "%Zielordner\%date%" md "%Zielordner\%date%" 
27.
Copy "%ThisErrorFile%  "%Zielordner\%date%\*.*" 
28.
goto :eof
Gruß
Biber
Bitte warten ..
Mitglied: rejael
31.01.2007 um 22:34 Uhr
ok klappt leider nicht, es wird kein ordner angelegt und auch nichts kopiert???
Hast du noch idee?

Danke im voraus
Bitte warten ..
Mitglied: Biber
31.01.2007 um 22:48 Uhr
Probier jetzt noch mal..

Habe im Source ein "for /f %i in.." durch "for /f %%i in.." ersetzt.

[Aber immer noch nicht getestet.. unterhalte mich grad in einem anderen Thread mit darkbrain85, sorry]

Gruß
Biber
Bitte warten ..
Mitglied: rejael
31.01.2007 um 22:58 Uhr
Na ja geht immer noch nicht, vielleicht kannst du es ja einmal in einer ruhigen Minute testen?
Bis später mal
Bitte warten ..
Mitglied: bastla
01.02.2007 um 15:01 Uhr
Hallo rejael!

Ich hatte gerade ein paar ruhige Minuten ...

@Biber
Ich hab' noch einige % und ein " hineingeworfen, aber in der obigen Form sollte ein "move" stattfinden (da immer nur die aktuellste Datei gesucht wird).

Mit einigen Fundstücken aus Deiner Trickkiste (ja, die war schon wieder offen ), käme bei mir diese Variante heraus:
01.
::------snipp CopyLast.bat  
02.
@echo off & setlocal 
03.
:: Was variabel bleiben sollte, ist die Anzahl --->Parameter 1; Default 1 
04.
IF [%1]==[] %0 1 
05.
:: ------- hier soll eine Sortierung im aktuellem Ordner erfolgen und dann die letzten 2 Dateien kopiert werden 
06.
::Hmmm, die Vorgabe "aktueller Ordner" ist gefährlich.. geh lieber von "immer ein bestimmter Ordner aus. 
07.
Set "QuellOrdner=Z:\testxcopy" 
08.
:: und den ZielOrdner unterstellen wir auch mal als fest 
09.
Set "ZielOrdner=Z:\My Databases\test_xcopy" 
10.
If not exist "%QuellOrdner%" ( 
11.
    echo QuellOrdner nicht vorhanden 
12.
    Pause 
13.
    Goto :eof 
14.
)     
15.
PushD "%QuellOrdner%" 
16.
For /L %%i in (1,1,%1) do call :doSomething %%i 
17.
If exist "%Zielordner%\%date%" copy /y "%QuellOrdner%\robot.txt" "%ZielOrdner%\%date%\*.*" >nul 
18.
PopD 
19.
goto :eof 
20.
 
21.
:doSomething 
22.
set /a Nr=%1 - 1 
23.
set ThisErrorFile= 
24.
if %Nr%==0 ( 
25.
	for /f "delims=" %%i in ('dir /b /o:-d Kensingtonerr*.txt') do if not defined ThisErrorFile @Set "ThisErrorFile=%%i" 
26.
	) else ( 
27.
	for /f "skip=%Nr% delims=" %%i in ('dir /b /o:-d Kensingtonerr*.txt') do if not defined ThisErrorFile @Set "ThisErrorFile=%%i" 
28.
)	 
29.
REM Die %%L. neueste KensingtonErrorxxxxx.txt steht in der Variablen %ThisErrorfile% 
30.
REM und nun COPY, RENAME oder 7z oder Rar mir diese Datei... Beispiel COPY: 
31.
::erst jetzt das...%date%-Verzeichnis anlegen 
32.
If not exist "%Zielordner%\%date%" md "%Zielordner%\%date%" 
33.
Copy "%ThisErrorFile%"  "%Zielordner%\%date%\*.*" > nul 
34.
goto :eof
Grüße
bastla

[Edit] Zur Sicherheit noch "delims=" eingebaut - falls die "KensingtonErrorxxxxx.txt" eine "KensingtonError x xx.txt" wäre ... [/Edit]
Bitte warten ..
Mitglied: Biber
01.02.2007 um 15:11 Uhr
Thx, bastla,

ist mir grad sehr Recht, dass Du da mal drüberguckst...
Ich kasper' hier grad mit "produktiven Problemen" und vor allem mit unproduktiven Nasen rum..

Hoffentlich kommt bald der Vi$ta-Rollout, damit endlich diese Computerproblem aufhören...

Gruss
Biber
Bitte warten ..
Mitglied: rejael
01.02.2007 um 20:30 Uhr
Hallo Bastla,

es hat geklappt!!!!! Danke
Nur eins funktioniert nicht recht und zwar die Variable setzten für die Anzahl:

::------snipp CopyLast.bat
@echo off & setlocal
:: Was variabel bleiben sollte, ist die Anzahl --->Parameter 2; Default 1
IF [%1]==[] %0 2
:: ------- hier soll eine Sortierung im aktuellem Ordner erfolgen und dann die letzten 2 Dateien

ansonsten super, ich danke dir wie verrückt.
Wegen des zippens der dateien mache ich mich später mla schlau...

rejael
Bitte warten ..
Mitglied: bastla
01.02.2007 um 21:12 Uhr
Hallo rejael!

Nur eins funktioniert nicht recht und zwar die Variable setzten für die Anzahl:
:: ------- hier soll eine Sortierung im aktuellem Ordner erfolgen und dann die letzten 2 Dateien
Was genau meinst Du mit "funktioniert nicht recht"? Der Batch ist so angelegt, dass die Anzahl beim Aufruf übergeben wird, so dass Du leicht von 2 auf 4 oder 7 Dateien umstellen kannst, daher starten mit
01.
CopyLast 2
(wenn Du unter "CopyLast.bat" gespeichert hast).

Zu
Anzahl --->Parameter -2 1; Default 1
Parameter 1 meint hier, wie oben gezeigt, dass als erster (und einziger) Parameter beim Aufruf die Anzahl der zu kopierenden Dateien übergeben werden soll - wurde dies nicht gemacht, stellt diese Zeile
IF [%1]==[] %0 2
sicher, dass ein Defaultwert verwendet wird (von Dir jetzt auf 2 geändert). Zur Sicherheit solltest Du aber, wie oben gezeigt, die Anzahl beim Aufruf mitgeben.

ansonsten super, ich danke dir wie verrückt.
Freut mich, mein Anteil dabei ist aber vergleichsweise gering gewesen, daher: fwd 2 Biber ...

Wegen des zippens der dateien mache ich mich später mla schlau...
Vielleicht als Hinweis: Von 7-zip gibt es eine Kommandozeilenversion, zu finden hier, die Du verwenden könntest. Aus dem "copy"-Befehl würde dann etwas in der Art (genaue Syntax müsstest Du Dir ansehen):
01.
C:\Utils\7za.exe a -tzip "%Zielordner%\%date:.=-%.zip" "%ThisErrorFile%"
Grüße
bastla

[Edit] Überflüssige Pfaderweiterung entfernt [/Edit]
Bitte warten ..
Ähnliche Inhalte
Windows Server
Windows Updates nach Datum sortieren
Frage von RG2525Windows Server2 Kommentare

Hallo, Ich muss auf einem Windows Server 2008 R2 ca. 130 ausstehende Updates installieren. Alle Updates auf einmal zu ...

Batch & Shell
(Batch) Datum Sortier-Mechanismus
gelöst Frage von clragonBatch & Shell19 Kommentare

Hallo zusammen. Ich bin schon etwas länger am Batch schreiben, und war schon oft uneingeloggt hier, und jetzt hab ...

VB for Applications
Textdatei zeilenweise nach Datum sortieren
gelöst Frage von GurkenhobelVB for Applications2 Kommentare

Hallo Gemeinde, mehrere umfangreiche Textdateien, in denen zeilenweise wichtige Daten und Termine eingetragen sind, sollen zeilenweise nach dem Datum ...

Batch & Shell
Dateien Automatisch verschieben und gleich sortieren, nach Datum!
gelöst Frage von Johannes0511Batch & Shell12 Kommentare

Hallo zusammen, möchte mit einer Batch Datei automatisch Dateien verschieben/sortiert lassen. Da meine Kenntnisse nicht ausreichen, bitte ich euch ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 7 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 11 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware8 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...