edaseins
Goto Top

CMD - Löschen Eventlog mit Rückmeldung

Hallo Leute,

mir wurde vorgestern super geholfen, ich hoffe das mein letztes Anliegen ebenso umsetzbar ist.

Ich google jetz schon seit Tagen nach der Möglichkeit bei einem lösch oder umbennungsbefehl im Eventlog eine Erfolgsmeldung oder eine Negative Meldung zu erzeugen.

Leider bisher ohen Erfolg

Bisher sieht es so aus:

batch startet löschen wie z.b.

del c:\"Datei.xls" >>del_"Ordner".log

Das Problem an der Sache ist das der in das log schreibt:

30.04.2014 - 15:05:15 Uhr: lösche *zensiert*

Das ist nicht im Sinne des Erfinders, da genau in dieser Zeile eine Datei nicht gelöscht werden konnte da sie wegen Zugriffes eines anderen Benutzers gesperrt war.

Gibt es hier eine Möglichkeit das anzupassen?

lg

Content-ID: 237005

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

Ausgedruckt am: 08.11.2024 um 09:11 Uhr

Xaero1982
Lösung Xaero1982 02.05.2014 aktualisiert um 09:26:03 Uhr
Goto Top
Moin,

mir ist mal wieder das Problem nicht ganz klar ;P

Wo genau ist das Problem? Er schreibt in die Logdatei, dass er was gelöscht hat, obwohl er es nicht gelöscht hat wegen fehlendem Zugriff?

Gruß
Xaero1982
Xaero1982 02.05.2014 um 09:27:49 Uhr
Goto Top
So wie ich es verstanden habe:

@echo off

set pfad=blabla
set LOG="Log.txt"  
set dateineu=temp.tmp

:anfang
set /p dateiname=Bitte den Namen der zu loeschenden Datei eingeben: 

ren "%pfad%\%dateiname%" "%dateineu%"  
if ERRORLEVEL 1 goto nichterfolgreich
if ERRORLEVEL 0 goto erfolgreich

:nichterfolgreich
echo Datei: "%pfad%\%dateiname%" nicht geloescht >>%LOG%  
goto weitere

:erfolgreich
del "%pfad%\%dateineu%"  
echo Datei: "%pfad%\%dateiname%" geloescht >>%LOG%  
goto weitere

:weitere
set /p nochmal=Weitere Dateien loeschen?(j/n):

if /i "%nochmal%"=="j" goto anfang  
if /i "%nochmal%"=="n" (goto eof) else (goto weitere)  

:eof

Das Problem ist, dass del keinen Errorlevel zurück gibt. Daher benenne ich die zu löschende Datei um mit ren in eine temporäre und lösche sie dann. Wenn das Umbenennen fehl schlägt kann sie auch nicht gelöscht werden, weil sie in Benutzung ist und das schreibt er dann in die Logdatei.

Gruß
ps: Bastla und co bekommen das sicher schöner hin face-smile
Edaseins
Edaseins 02.05.2014 um 09:27:58 Uhr
Goto Top
Also so sieht eine der Zeilen aus:


echo %date:~0% - %time:~0,8% Uhr: lösche \\"pfad zensiert"" >>H:\T_LBS\tbs\Neue.CMDs\del_baufi.log
echo lösche pfad\"%dateiname%"
del \\pfad\"%dateiname%" >>H:\T_LBS\tbs\Neue.CMDs\del_baufi.log

schreiben tut er nur:

02.05.2014 - 9:24:03 Uhr: lösche \\pfad\"123"

Die Testdatei 123 ist natürlich nicht vorhanden
Edaseins
Edaseins 02.05.2014 um 09:30:47 Uhr
Goto Top
Also es sieht so aus als ob er nur die erste zeile schreibt...
Edaseins
Edaseins 02.05.2014 um 09:33:03 Uhr
Goto Top
Zitat von @Xaero1982:

So wie ich es verstanden habe:

> @echo off
> 
> set pfad=blabla
> set LOG="Log.txt"  
> set dateineu=temp.tmp
> 
> :anfang
> set /p dateiname=Bitte den Namen der zu loeschenden Datei eingeben: 
> 
> ren "%pfad%\%dateiname%" "%dateineu%"  
> if ERRORLEVEL 1 goto nichterfolgreich
> if ERRORLEVEL 0 goto erfolgreich
> 
> :nichterfolgreich
> echo Datei: "%pfad%\%dateiname%" nicht geloescht >>%LOG%  
> goto weitere
> 
> :erfolgreich
> del "%pfad%\%dateineu%"  
> echo Datei: "%pfad%\%dateiname%" geloescht >>%LOG%  
> goto weitere
> 
> :weitere
> set /p nochmal=Weitere Dateien loeschen?(j/n):
> 
> if /i "%nochmal%"=="j" goto anfang  
> if /i "%nochmal%"=="n" (goto eof) else (goto weitere)  
> 
> :eof
> 
> 

Das Problem ist, dass del keinen Errorlevel zurück gibt. Daher benenne ich die zu löschende Datei um mit ren in eine
temporäre und lösche sie dann. Wenn das Umbenennen fehl schlägt kann sie auch nicht gelöscht werden, weil sie
in Benutzung ist und das schreibt er dann in die Logdatei.

Gruß
ps: Bastla und co bekommen das sicher schöner hin face-smile

Das Problem an der Stelle ist das in einer CMD ca 30 Pfade drin sind, nach dem Build hier oben müsst ich dann 30 einzelne Cmd´s erstellen für jeden Ordner. Das wäre auch ziehmlich unpraktisch. =)
Xaero1982
Xaero1982 02.05.2014 aktualisiert um 09:35:15 Uhr
Goto Top
ehm ist denn "pfad" bei dir "hier" nur geändert oder hast du pfad irgendwo deklariert? Dann muss es ja %pfad% heißen.

Du willst Dateien aus 30 verschiedenen Ordnern löschen?

Ich glaube du hast uns da ein paar Informationen vorenthalten ... gib uns mal allen Input... sonst wird das ja pures Rätselraten face-smile
Edaseins
Edaseins 02.05.2014 um 09:45:42 Uhr
Goto Top
Meine morgentliche Aufgabe ist es alle Netzlaufwerke einer Namenhaften Bank zu pflegen das sind ca 30 Standorte, in einer für jeden Ordner innerhalb dieser Laufwerke habe ich 1 CMD.

in einer CMD sind alle 30 Standorte zu dem jeweiligen Ordner angeben über Serveranwahl also aka

\\Server\Dateisystem\Datei

Davon 30 Stück die jeweils im Dateisystem ein klein wenig variieren.

Aufbau derzeit ist:

set /P dateiname=Bitte den Namen der zu loeschenden Datei eingeben:

echo %date:~0% - %time:~0,8% Uhr: lösche \\server\System\%dateiname%" >>H:\T_LBS\tbs\Neue.CMDs\del_baufi.log
echo lösche G\B\HU\##PBinfo\Baufinanzierung\"%dateiname%"
del \\Server\system\"%dateiname%" >>H:\T_LBS\tbs\Neue.CMDs\del_baufi.log

Block 2


Block 3

usw.. bis 30 halt

:weitere
set /p nochmal=Sollen weitere Dateien geloescht werden?(j/n):

if /i "%nochmal%"=="j" goto anfang

if /i "%nochmal%"=="n" (goto eof)

if not "%nochmal%" == "" set nochmal=%nochmal:~0,1%

ECHO "%nochmal%" ist keine zulaessige Eingabe, bitte keine Plaudereien halten.

goto weitere

:eof
Xaero1982
Xaero1982 02.05.2014 um 09:56:43 Uhr
Goto Top
Benutze mal bitte code Tags <"code"> <"/code"> ohne die "".

Ich weiß echt nicht, ob es zu früh ist oder es einfach nicht nachvollziehbar ist wie du es schreibst was du machst ...

1. Du hast also eine CMD in der alle Server aufgeführt sind, richtig?
2. Du hast auf dem Server je eine CMD mit anderen Pfadangaben (anderer Server, andere Pfade), richtig?

Selbst dann kannst du alles in einer einzigen CMD, die dann vielleicht etwas länger ist, aber dafür in der Wartung besser ist, umsetzen.

Was soll das bezwecken:
if not "%nochmal%" == "" set nochmal=%nochmal:~0,1%  

? face-smile

Gruß
Edaseins
Edaseins 02.05.2014 um 10:06:56 Uhr
Goto Top
Also Die serverangaben sind alle gleich.

Innerhalb der Server sind die Ordnerstrukturen auch alle gleich, bis auf den Endordner, und der muss gemäß Vorgaben einzeln gewartet werden. Aus diesem Grund habe ich für jeden Endordner eine CMD, und dieser jeweilige Endordner liegt auf allen in dem Fall "G-Laufwerken".

Die Strukur der Laufwerke ist wiefolgt:

\\Server (ist immer derselbe)\G(für G-Laufwerk)\B(Standort)\HU(Straße,bzw Niederlassungsbezeichnung)\

ab hier änder benötige ich einzelne cmd´s, ab hier gibts ##PBinfo oder Office oder sonstiges...

Und für jeden dieser Ordner ab hier brauch ich eine einzelne cmd weil Dokumente die in ##PBinfo reinsollen, sollen nicht in Office. Weil Ordnerberechtigungen und Datenschutz und so.

Das heisst es ist zwingend Notwendig einzelne cmds zu haben, innerhalb der cmd´s änder sich lediglich die Struktur des Standortes und der Straße. Was dann 30 Stück sind.

Ist dies nun deutlicher?

if not "%nochmal%" == "" set nochmal=%nochmal:~0,1%


Der Befehl gibt an das die Batch die letzte Eingabe noch einmal wiedergibt.

Wie z.b. wenn ich statt J/N B drücker sagt er dann

ECHO "%nochmal%"(In dem Fall B) ist keine zulaessige Eingabe, bitte keine Plaudereien halten
Edaseins
Edaseins 02.05.2014 um 10:09:04 Uhr
Goto Top
Ich glaube der del Befehl legt überhaupt keinen Logeintrag selber an.
Xaero1982
Xaero1982 02.05.2014 um 10:22:33 Uhr
Goto Top
Gut, aber dann verstehe ich nicht warum den Code von oben nicht nehmen kannst face-smile

Ich habe den gleichen Code wie aus dem vorherigen Beitrag genommen und lediglich eine Errorlevelabfrage eingebaut, damit er bei nicht erfolgreicher Löschung dies auch so in der Logdatei einträgt.

Die genauen Pfade musst du anpassen - die kenne ich ja nicht

Frage: Zur Nutzung der cmds loggst du dich auf dem Server ein oder machst du das alles von einem zentralen pc aus?

Was genau steckt denn hier hinter? Du schreibst eine Zeile "blabla" in die del_baufi.log. Dann schreibst du eine weitere Zeile mit einem ganz anderen Pfad rein...
Und dann löscht du die Datei im ersten Pfad... was soll dir denn dieser zweite echo Eintrag zeigen?

echo %date:~0% - %time:~0,8% Uhr: lösche \\server\System\%dateiname%" >>H:\T_LBS\tbs\Neue.CMDs\del_baufi.log  
 echo lösche G\B\HU\##PBinfo\Baufinanzierung\"%dateiname%" 
 del \\Server\system\"%dateiname%" >>H:\T_LBS\tbs\Neue.CMDs\del_baufi.log  
Edaseins
Edaseins 02.05.2014 aktualisiert um 10:27:51 Uhr
Goto Top
Der Erste Schreibt die LOG "Überschrift".
Die 2te Zeile gibt dasselbe bloss in Kurzform in der Batch aus
und die 3te Zeile löscht dies dann.

Achso und die batches habe ich auf einem anderen Server auf einem zentralen Laufwerk. Mir gehts darum das wenn mal wer anderes aus meinem Backoffice meine morgentliche Aufgabe übernehmen muss das der ohne Probleme klarkommt. Weil ich weiß was ich tun muss. Und wenn ich mal im Urlaub bin dann sollte das jeder andere vereinfacht auch können.


Wenn ich dich richtig verstehe muss ich die Errorlevelabfrage dann vor jeden der 30 Blocks Basteln?
Xaero1982
Xaero1982 02.05.2014 aktualisiert um 11:21:04 Uhr
Goto Top
Mhh also ich sehe hier zwei verschiedene Dinge die da rein geschrieben werden face-smile

lösche \\server\System\%dateiname%"
und
lösche G\B\HU\##PBinfo\Baufinanzierung\"%dateiname%"

Da würde jeder Vergleich ein Ungleich zurück geben, aber seis drum.

Noch mal eine Verständnisfrage:

Dieser Block:

set /P dateiname=Bitte den Namen der zu loeschenden Datei eingeben:

 echo %date:~0% - %time:~0,8% Uhr: lösche \\server\System\%dateiname%" >>H:\T_LBS\tbs\Neue.CMDs\del_baufi.log  
 echo lösche G\B\HU\##PBinfo\Baufinanzierung\"%dateiname%"  
 del \\Server\system\"%dateiname%" >>H:\T_LBS\tbs\Neue.CMDs\del_baufi.log  
steht da 30 mal mit verschiedenen Ordnernamen drin? Oder was meinst du mit Block 2, 3 usw?

edit:
Wenn dem so ist könntest du z.b. in dem Moment wo du j drückst und zum "anfang" springst dort entweder:
1. Mit einer Abfrage den Pfad ändern. Z.b. Bei der Abfrage, ob du eine weitere löschen willst könntest du zusätzlich zu j/n eine Option p oder so hinzufügen um den Pfad zu ändern. "goto pfadaendern". Dort kannst du dann entweder sagen du codest es so, dass dort alle Pfade gelistet sind und die mit einem Counter immer zum nächsten Pfad springen. Also dort counter = counter +1. An hand dieses Wertes könntest du dann sagen if counter == 1 pfad =blabla.
2. Du könntest dir eine Art menü basteln in dem du alle Pfade ausgibst und diese via 1-30 auswählst und dann auch den Pfad änderst mit if pfad == 1 pfad = blabla.

Der Unterschied zwischen 1 und 2 wäre, dass er bei 1. alle Pfade nacheinander abkopft in der Reihenfolge wie du es angegeben hast. Bei 2. könntest du selbst entscheiden in welchem Pfad du was löschen willst. Kommt halt darauf an was für dich praktischer ist.

Ansonsten:

Um es nur klar zu machen: Ich versuche deine Gedanken bei der Batchdatei nachvollziehen zu können um evtl. eine einfachere Methode dafür zu finden face-smile
Hintergrund ist also der, dass in diesen Verzeichnissen, die jeden morgen durchforstet werden müssen irgendwelche Dateien sind, die dort nichts zu suchen haben und dann gelöscht werden?
Sind das immer unterschiedliche Dateien? Kann man die an Hand irgendwelcher Kriterien erkennen? Wieso werden die dort immer wieder angelegt? Werden sie vorher woanders hin kopiert?

Gruß
Xaero1982
Lösung Xaero1982 02.05.2014, aktualisiert am 14.05.2014 um 09:32:04 Uhr
Goto Top
Hab noch bissel gebastelt nach meinem aktuellen Verständnis:

@echo off
setlocal ENABLEDELAYEDEXPANSION

set LOG="Log.txt"  
set dateineu=temp.tmp

:serverwechseln
set COUNT=0
set CNT=0

for %%i in ("Server1" "Server2" "Server3" "Server4") do (  
  set /A COUNT=!COUNT! + 1
  echo !COUNT! %%i
)
set /p pfadnr=Bitte wählen Sie einen Server aus:

for %%i in ("Server1" "Server2" "Server3" "Server4") do (  
  set /A CNT=!CNT! + 1
  if !CNT! == 1 (
	set server=%%i 
  )
)

:pfadwechseln

set COUNT=0
set CNT=0

for %%i in ("office" "Buero" "sonstiges" "diverses") do (  
  set /A COUNT=!COUNT! + 1
  echo !COUNT! %%i
)
set /p pfadnr=Bitte wählen Sie einen Pfad aus:

for %%i in ("office" "Buero" "sonstiges" diverses) do (  
  set /A CNT=!CNT! + 1
  if !CNT! == %pfadnr% (
	set pfad=%%i 
  )

)

REM usw. hier kannst du dann noch weitere Auswahlkriterien nach der oben genannten Struktur erstellen

set gesamtpfad=%server%\%pfad%

set /p dateiname=Bitte den Namen der zu loeschenden Datei eingeben: 

ren "%gesamtpfad%\%dateiname%" "%dateineu%"  
if ERRORLEVEL 1 goto nichterfolgreich
if ERRORLEVEL 0 goto erfolgreich

:nichterfolgreich
echo Datei: "%gesamtpfad%\%dateiname%" nicht geloescht >>%LOG%  
goto weitere

:erfolgreich
del "%gesamtpfad%\%dateineu%"  
echo Datei: "%gesamtpfad%\%dateiname%" geloescht >>%LOG%  
goto weitere

:weitere
set /p nochmal=Weitere Dateien loeschen?(j/n):

if /i "%nochmal%"=="j" goto serverwechseln  
if /i "%nochmal%"=="n" (goto eof) else (goto weitere)  

:eof

Ich hoffe es ist nachvollziehbar face-smile Damit verarbeite ich dann denke ich alle batches in eine ... über die schalter: serverwechseln und pfadwechseln kannst du dann bei der Abfrage, ob noch weitere Dateien gelöscht werden sollen auch ein kleines Menü basteln.

Vielleicht verrenn ich mich ja total, aber Spaß machts trotzdem :P
Edaseins
Edaseins 14.05.2014 aktualisiert um 10:15:55 Uhr
Goto Top
Supi das ist schon hilfreich, ich hab etwas ähnliches anhand des Beispiels basteln können.

Jetz hab ich aber nen anderes Problem... meine CMD Updatesuche geht nicht mehr...

Die Befehlszeile sieht so aus:

IF EXIST "H:\T_LBS\TBS\Neue.CMDs\Upgrade\V2_2_Masterbatch_G_laufw.cmd" goto update1
IF NOT EXIST "H:\T_LBS\TBS\Neue.CMDs\Upgrade\V2_2_Masterbatch_G_laufw.cmd" goto update2

:update1
set "dest=%~dp0"
Echo Update gefunden!
Echo,
Echo Kopiere Update...
copy "H:\T_LBS\TBS\Neue.CMDs\Upgrade\V2_2_Masterbatch_G_laufw.cmd" "%~dp0\"
ping localhost /n 6 >nul
Echo,
Echo Starte neue Batch...
Start "%dest%""V2_2_Masterbatch_G_laufw.cmd"
ping localhost /n 3 >nul
Echo,
Echo loesche alte Version...
ping localhost /n 3 >nul
REM del "%~dp0"\"V 2.1 Masterbatch G-laufw.cmd"
goto ende

:update2
Echo Kein Update gefunden...
goto anfang

Er macht alles was er soll, ausser der Start Befehl, der funktioniert nicht. Start die kopierte Batch zu starten startet er ein CMD Fenster mit dem gesamten Pfad und einer eingabeaufforderung...

Hast du hier auch eine Lösung?
Xaero1982
Xaero1982 14.05.2014 aktualisiert um 09:51:21 Uhr
Goto Top
Benutze bitte Code-Tags <"code"> <"/code"> ohne "" -> Auf "Mehr" klicken und dann "Bearbeiten".

Des Weiteren wäre eine Rückmeldung zum eigentlichen Problem wünschenswert wenn man sich schon dran setzt und das nicht 2 Wochen später - sorry, aber muss mal gesagt werden.

Gruß
edit: außerdem: was willst du damit machen? Wie wäre es statt mit start mit call?
Edaseins
Edaseins 14.05.2014 um 10:00:42 Uhr
Goto Top
Nachtrag:

Mit Call statt start, startet er die cmd in der cmd.. damit übergeht er den del Befehl danach der derzeit zum testen ausgeremt ist.

Also Call ist schon mal keine alternative.
Edaseins
Edaseins 14.05.2014 um 10:08:46 Uhr
Goto Top
Ja Sry, ich war 1 Woche krankgeschrieben wegen Hexenschuss. Nun hab ich gestern anhand deines Beispiels gebastelt und etwas ähnliches erstellt.

Siehe 2 Beiträge drüber, das Dankeschön hast du ja trotzdem bekommen.

hiernochmal als "code" post.

 
@ECHO OFF

Echo Willkommen zur vereinfachten G-Laufwerk Pflege.
Echo,
Echo Pruefe auf Updates... Bitte Warten...
Echo,
ping localhost /n 6 >nul

IF EXIST "H:\T_LBS\TBS\Neue.CMDs\Upgrade\V2.2 Masterbatch G-laufw.cmd" goto update1   
IF NOT EXIST "H:\T_LBS\TBS\Neue.CMDs\Upgrade\V2.2 Masterbatch G-laufw.cmd" goto update2  

:update1
set "dest=%~dp0"  
Echo Update gefunden!
Echo,
Echo Kopiere Update...
copy "H:\T_LBS\TBS\Neue.CMDs\Upgrade\V2.2 Masterbatch G-laufw.cmd" "%~dp0\"  
ping localhost /n 6 >nul
Echo,
Echo Starte neue Batch...
call "%dest%V2.2 Masterbatch G-laufw.cmd"  
ping localhost /n 3 >nul
Echo,
Echo loesche alte Version...
ping localhost /n 3 >nul
REM del "%~dp0V2.1 Masterbatch G-laufw.cmd"  
goto ende

:update2
Echo Kein Update gefunden...
goto anfang

Die Batch updatet sich automatisch bei start. Allerdings startet sie die neue Version nicht sondern lediglich eine offene Eingabeaufforderung mit

dem Pfad\V2.2 Masterbatch G-laufw.cmd:_ (_)ist hier der blinkende Cursor.
Edaseins
Edaseins 14.05.2014 um 10:40:58 Uhr
Goto Top
Ich könnte den "del" Befehl der alten Version an den Anfang der neuen Batch setzen und mit Call arbeiten...

Aber ursprünglich wollt ich das ganze Update von der alten Version durchlaufen lassen.

Insgesamt ist die Batch btw 140 KB groß Sie beinhaltet alle anderen Themen die wir vorhin hatten.

Also ist dein Beitrag voher auf jedenfall von Erfolg gekrönt.
Xaero1982
Lösung Xaero1982 14.05.2014 aktualisiert um 11:40:26 Uhr
Goto Top
Ich weiß ja nicht was du da aufrufst...

Wenn ich mir zwei cmds erstelle.

1.
 start batch.cmd

batch.cmd
 echo hallo 

Dann öffnet er mir zwei Fenster. Im zweiten gibt er mir dann hallo aus.

Was soll denn in der "\V2.2 Masterbatch G-laufw.cmd" stattfinden?
Die Batch von oben?

Pack doch einfach mal alles hier rein. Sonst kann ich da nichts mehr nachvollziehen was du machst.

Oder lads hoch und schick mir ne PM.
Edaseins
Edaseins 14.05.2014 um 11:44:34 Uhr
Goto Top
Wiegesagt Hintergrund ist das ungefähr 6 User diese Batch per Mail bekommen, und diese User sich das Teil jeweils wo sie wollen ablegen.

So, wenn ich diese Batch aber erweitere um neue Funktionen dann sollen die Userbatches sobald sie gestartet sind sich selber Updaten.

Ich habe es jetzt in jeder Version so gelöst:


Echo Willkommen zur vereinfachten G-Laufwerk Pflege.
Echo,
Echo Pruefe auf Updates... Bitte Warten...
ping localhost /n 3 >nul
Echo,
Echo loesche alte Version...
ping localhost /n 3 >nul
del "%~dp0""V 2.1 Masterbatch G-laufw.cmd"  
ping localhost /n 6 >nul
Echo,
Echo Pruefe auf Updates... Bitte Warten...
Echo,
ping localhost /n 6 >nul

IF EXIST "H:\T_LBS\TBS\Neue.CMDs\Upgrade\V2.3 Masterbatch G-laufw.cmd" goto update1   
IF NOT EXIST "H:\T_LBS\TBS\Neue.CMDs\Upgrade\V2.3 Masterbatch G-laufw.cmd" goto update2  

:update1
set "dest=%~dp0"  
Echo Update gefunden! Neue Version: 2.3
Echo,
Echo Kopiere Update...
copy "H:\T_LBS\TBS\Neue.CMDs\Upgrade\V2.3 Masterbatch G-laufw.cmd" "%~dp0\"  
ping localhost /n 6 >nul
Echo,
Echo Starte neue Batch...
call "%dest%V2.2 Masterbatch G-laufw.cmd"  
ping localhost /n 3 >nul
Echo,
Echo loesche alte Version...
ping localhost /n 3 >nul
del "%~dp0V2.2 Masterbatch G-laufw.cmd"  
goto ende

:update2
Echo Kein Update gefunden...
Echo,
goto anfang

:anfang

Echo Willkommen zur vereinfachten G-Laufwerk Pflege.
Echo,
Echo Initialisiere. Bitte Warten.
Echo,
ping localhost /n 6 >nul
Echo Bitte Treffen Sie eine Auswahl, fuer die durchzufuehrende Arbeit:
Echo,
Echo 1.) Datei-Verteilung
Echo 2.) Loeschung von Dateien
Echo 3.) Umbennennen von Dateien
Echo 0.) Exit
Echo,
set /p nochmal=Bitte geben Sie die Zahl des Menues ein wo Sie hin moechten:

if /i "%nochmal%"=="1" goto 1verteilung  
if /i "%nochmal%"=="2" goto 2loeschung  
if /i "%nochmal%"=="3" goto 3benennung  
if /i "%nochmal%"=="0" goto ende  

if not "%nochmal%" == "" set nochmal=%nochmal:~0,1%  

ECHO "%nochmal%" ist keine zulaessige Eingabe, bitte keine Plaudereien halten.  

goto anfang

Das heisst jede Batch prüft auf ein Update und löscht vorher die alte Batch, und kopiert den Nachfolger, dieser wird automatisch gestartet und löscht den Vorgänger und das geht solange wie Versionen auf dem Quelllaufwerk sind.
Xaero1982
Xaero1982 14.05.2014 um 13:07:03 Uhr
Goto Top
Das ist ja schön und gut face-smile aber das Problem liegt ja offenbar nicht in dieser Batch, sondern in der anderen?

Oder ruft die Batch sich selbst auf?

Also ist dieser code von dir der Inhalt von:
call "%dest%V2.2 Masterbatch G-laufw.cmd"

??
Oder was steht in:
call "%dest%V2.2 Masterbatch G-laufw.cmd"??

Gruß
Edaseins
Edaseins 14.05.2014 um 13:37:43 Uhr
Goto Top
Ja da war auch ein Tippfehler von mir:

call "%dest%V2.3 Masterbatch G-laufw.cmd"??

wäre richtig.

Bedeutet das er die neue version called. Nicht die aktuelle nachdem Update ^^

Letzendlich ist es immer die gleiche Batch, doch wenn ich mal eine neuere ablege mit Pfadanpassungen oder erweiterungen dann updatet die sich automatisch beim anstarten.
Xaero1982
Xaero1982 14.05.2014 um 14:06:58 Uhr
Goto Top
Tippfehler hin oder her face-smile

Call oder start - benutz start- Damit hats bei mir geklappt.

Ich sehe das Problem woanders.

Wenn ich es richtig verstanden habe hast du eine Batch - nennen wir sie "Verwaltung".

Diese wird vom User aufgerufen. Innerhalb dieser Batch wird dann kontrolliert, ob eine neue Batch mit dem Namen "Verwaltung" vorhanden ist.
Wenn es so ist soll er die alte löschen und die neue kopieren.

Frage: Änderst du jedes mal die Dateinamen?
Oben steht jetzt Suchen nach V2.3 und Aufruf von 2.3. Dann löschen von 2.2?

In 2.3 steht dann Update 2.4?
Edaseins
Edaseins 15.05.2014 um 12:42:26 Uhr
Goto Top
Vollkommen richtig. Funktioniert soweit erstmal ^.^