littleben
Goto Top

2 Neusten Dateien öffnen

Hallo zusammen,
bin in dem Bereich BATCH total unerfahren. Wollte eig. nur schnell eine kleine Automatisierung schreiben. Sonst programmiere ich mit Delphi.

Mein Wunsch:
Die neusten Registry-Dateien von Delphi (sind immer 2) speicher ich fast jeden Tag auf meiner Festplatte. Nun will ich die neusten 2 auf meinem Notebook ausführen. Mein erster Ansatz:
for /f %%i in ('dir /b /A /O:D C:\Users\Littleben\Desktop\Test\*.reg) do set newestdump="%%~nxi"   
call C:\Users\Littleben\Desktop\Test\%newestdump% 
So für ich nur die erste neuste Datei aus. Doch ich will die ersten 2 neusten Dateien.

Wie mach ich das?

Danke& Grüße,
Littleben
Kommentar vom Moderator Dani am Apr 20, 2011 um 14:44:32 Uhr
Formatierung hinzugefügt.

Content-Key: 164983

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

Printed on: April 25, 2024 at 14:04 o'clock

Member: mathe172
mathe172 Apr 20, 2011 at 15:00:04 (UTC)
Goto Top
Hallo Littleben,

so wie das ausschaut, arbeitet deine For-Schliefe alle *.reg-Dateien im Verzeichnis ab, und schreibt den Namen jeweils in die Variable newestdump (wobei der alte Inhalt überschrieben wird).
Erst danach startet er die Datei in der Variable newestdump. Diese letzte ist eben nur die Neueste.

Was auch noch gefährlich ist (und mich wundert, dass es überhaupt funktioniert):
set newestdump="%%~nxi"  
Speichert die " in der Variable die du dann an den Pfad anhängst
Besser:
set "newestdump=%%~nxi"  

Versuchs mal so:
[edit:c&p-Fehler nachgebessert face-wink ... Danke]
setlocal enabledelayedexpansion
pushd "C:\Users\Littleben\Desktop\Test\"  
for /f %%i in ('dir /b /A /O:D *.reg') do (  
   set "newestdump2=!newestdump!"  
   set "newestdump=%%~nxi"  
)
call "%newestdump%"  
call "%newestdump2%"  
popd

Mathe172
Member: Skyemugen
Skyemugen Apr 20, 2011 at 15:04:50 (UTC)
Goto Top
Aloha,

abgesehen davon, dass in deiner for-Schleifen-Befehls-Klammer am Ende das Apostroph fehlt, (und Mathe blind c&p gemacht hat ^_^)
würde ich es ganz spontan per Zusatzschleife lösen
for /f %%i in ('dir /b /A /O:D "C:\Users\Littleben\Desktop\Test\*.reg" ^|findstr /v "%newestdump%"') do set "newestdump2=%%~nxi"

greetz André

edit: too late - oder eben so wie Mathe es macht *gg*
Member: Littleben
Littleben Apr 20, 2011 at 15:15:09 (UTC)
Goto Top
Vielen Dank an euch Beide!!!
Habe es jetzt so wie Mathe172 gemacht, doch nur durch Skyemugen das fehlende ' gefunden face-smile

DANKE&Grüße

Littleben
Mitglied: 99045
99045 Apr 20, 2011 at 15:18:15 (UTC)
Goto Top
Zitat von @Littleben:
So für ich nur die erste neuste Datei aus. Doch ich will die ersten 2 neusten Dateien.
Wie mach ich das?

Du verwendest 2 Variablen, die erst mal nicht da sind. Dann verwendest du zusätzlich in deiner Schleife
if not defined variable1 set "variable1=%%~nxi" else if not defined variable2 set "variable2=%%~nxi" & goto :wasweissichwohin

ungetestet

Gruß

Edit: Dank des Hinweises von bastla das Brett vor dem Kopf entfernt. face-wink
Member: bastla
bastla Apr 20, 2011 at 15:43:46 (UTC)
Goto Top
... wobei sich für die Existenzprüfung von Variablen anstelle von "exist" eigentlich "defined" bewährt hat ...

Grüße
bastla
Mitglied: 99045
99045 Apr 20, 2011 at 15:47:23 (UTC)
Goto Top
Na warte ....! face-wink

Natürlich hast du Recht. Ich weiß das auch, frag mich doch mal warum ich exist geschrieben habe......
Member: bastla
bastla Apr 20, 2011 at 15:52:41 (UTC)
Goto Top
@99045
Sag mal, warum hast Du denn exist geschrieben? face-wink

Grüße
bastla
Mitglied: 99045
99045 Apr 20, 2011 at 15:55:12 (UTC)
Goto Top
@bastla
"mal". :-P
Warum? Das steht im Ursprungsbeitrag. face-smile

Gruß
Kaputtnick