Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

CMD - Löschen Eventlog mit Rückmeldung

Frage Microsoft Windows XP

Mitglied: Edaseins

Edaseins (Level 1) - Jetzt verbinden

02.05.2014, aktualisiert 09:26 Uhr, 2828 Aufrufe, 25 Kommentare

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
Mitglied: Xaero1982
LÖSUNG 02.05.2014, aktualisiert um 09:26 Uhr
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ß
Bitte warten ..
Mitglied: Xaero1982
02.05.2014 um 09:27 Uhr
So wie ich es verstanden habe:

01.
@echo off 
02.
 
03.
set pfad=blabla 
04.
set LOG="Log.txt" 
05.
set dateineu=temp.tmp 
06.
 
07.
:anfang 
08.
set /p dateiname=Bitte den Namen der zu loeschenden Datei eingeben:  
09.
 
10.
ren "%pfad%\%dateiname%" "%dateineu%" 
11.
if ERRORLEVEL 1 goto nichterfolgreich 
12.
if ERRORLEVEL 0 goto erfolgreich 
13.
 
14.
:nichterfolgreich 
15.
echo Datei: "%pfad%\%dateiname%" nicht geloescht >>%LOG% 
16.
goto weitere 
17.
 
18.
:erfolgreich 
19.
del "%pfad%\%dateineu%" 
20.
echo Datei: "%pfad%\%dateiname%" geloescht >>%LOG% 
21.
goto weitere 
22.
 
23.
:weitere 
24.
set /p nochmal=Weitere Dateien loeschen?(j/n): 
25.
 
26.
if /i "%nochmal%"=="j" goto anfang 
27.
if /i "%nochmal%"=="n" (goto eof) else (goto weitere) 
28.
 
29.
:eof 
30.
 
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
Bitte warten ..
Mitglied: Edaseins
02.05.2014 um 09:27 Uhr
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
Bitte warten ..
Mitglied: Edaseins
02.05.2014 um 09:30 Uhr
Also es sieht so aus als ob er nur die erste zeile schreibt...
Bitte warten ..
Mitglied: Edaseins
02.05.2014 um 09:33 Uhr
Zitat von Xaero1982:

So wie ich es verstanden habe:

01.
> @echo off 
02.
>  
03.
> set pfad=blabla 
04.
> set LOG="Log.txt" 
05.
> set dateineu=temp.tmp 
06.
>  
07.
> :anfang 
08.
> set /p dateiname=Bitte den Namen der zu loeschenden Datei eingeben:  
09.
>  
10.
> ren "%pfad%\%dateiname%" "%dateineu%" 
11.
> if ERRORLEVEL 1 goto nichterfolgreich 
12.
> if ERRORLEVEL 0 goto erfolgreich 
13.
>  
14.
> :nichterfolgreich 
15.
> echo Datei: "%pfad%\%dateiname%" nicht geloescht >>%LOG% 
16.
> goto weitere 
17.
>  
18.
> :erfolgreich 
19.
> del "%pfad%\%dateineu%" 
20.
> echo Datei: "%pfad%\%dateiname%" geloescht >>%LOG% 
21.
> goto weitere 
22.
>  
23.
> :weitere 
24.
> set /p nochmal=Weitere Dateien loeschen?(j/n): 
25.
>  
26.
> if /i "%nochmal%"=="j" goto anfang 
27.
> if /i "%nochmal%"=="n" (goto eof) else (goto weitere) 
28.
>  
29.
> :eof 
30.
>  
31.
> 
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

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. =)
Bitte warten ..
Mitglied: Xaero1982
02.05.2014, aktualisiert um 09:35 Uhr
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
Bitte warten ..
Mitglied: Edaseins
02.05.2014 um 09:45 Uhr
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
Bitte warten ..
Mitglied: Xaero1982
02.05.2014 um 09:56 Uhr
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:
01.
if not "%nochmal%" == "" set nochmal=%nochmal:~0,1%
?

Gruß
Bitte warten ..
Mitglied: Edaseins
02.05.2014 um 10:06 Uhr
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
Bitte warten ..
Mitglied: Edaseins
02.05.2014 um 10:09 Uhr
Ich glaube der del Befehl legt überhaupt keinen Logeintrag selber an.
Bitte warten ..
Mitglied: Xaero1982
02.05.2014 um 10:22 Uhr
Gut, aber dann verstehe ich nicht warum den Code von oben nicht nehmen kannst

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?

01.
echo %date:~0% - %time:~0,8% Uhr: lösche \\server\System\%dateiname%" >>H:\T_LBS\tbs\Neue.CMDs\del_baufi.log 
02.
 echo lösche G\B\HU\##PBinfo\Baufinanzierung\"%dateiname%" 
03.
 del \\Server\system\"%dateiname%" >>H:\T_LBS\tbs\Neue.CMDs\del_baufi.log
Bitte warten ..
Mitglied: Edaseins
02.05.2014, aktualisiert um 10:27 Uhr
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?
Bitte warten ..
Mitglied: Xaero1982
02.05.2014, aktualisiert um 11:21 Uhr
Mhh also ich sehe hier zwei verschiedene Dinge die da rein geschrieben werden

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:

01.
set /P dateiname=Bitte den Namen der zu loeschenden Datei eingeben: 
02.
 
03.
 echo %date:~0% - %time:~0,8% Uhr: lösche \\server\System\%dateiname%" >>H:\T_LBS\tbs\Neue.CMDs\del_baufi.log 
04.
 echo lösche G\B\HU\##PBinfo\Baufinanzierung\"%dateiname%" 
05.
 del \\Server\system\"%dateiname%" >>H:\T_LBS\tbs\Neue.CMDs\del_baufi.log 
06.
 
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
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ß
Bitte warten ..
Mitglied: Xaero1982
LÖSUNG 02.05.2014, aktualisiert 14.05.2014
Hab noch bissel gebastelt nach meinem aktuellen Verständnis:

01.
@echo off 
02.
setlocal ENABLEDELAYEDEXPANSION 
03.
 
04.
set LOG="Log.txt" 
05.
set dateineu=temp.tmp 
06.
 
07.
:serverwechseln 
08.
set COUNT=0 
09.
set CNT=0 
10.
 
11.
for %%i in ("Server1" "Server2" "Server3" "Server4") do ( 
12.
  set /A COUNT=!COUNT! + 1 
13.
  echo !COUNT! %%i 
14.
15.
set /p pfadnr=Bitte wählen Sie einen Server aus: 
16.
 
17.
for %%i in ("Server1" "Server2" "Server3" "Server4") do ( 
18.
  set /A CNT=!CNT! + 1 
19.
  if !CNT! == 1 ( 
20.
	set server=%%i  
21.
22.
23.
 
24.
:pfadwechseln 
25.
 
26.
set COUNT=0 
27.
set CNT=0 
28.
 
29.
for %%i in ("office" "Buero" "sonstiges" "diverses") do ( 
30.
  set /A COUNT=!COUNT! + 1 
31.
  echo !COUNT! %%i 
32.
33.
set /p pfadnr=Bitte wählen Sie einen Pfad aus: 
34.
 
35.
for %%i in ("office" "Buero" "sonstiges" diverses) do ( 
36.
  set /A CNT=!CNT! + 1 
37.
  if !CNT! == %pfadnr% ( 
38.
	set pfad=%%i  
39.
40.
 
41.
42.
 
43.
REM usw. hier kannst du dann noch weitere Auswahlkriterien nach der oben genannten Struktur erstellen 
44.
 
45.
set gesamtpfad=%server%\%pfad% 
46.
 
47.
set /p dateiname=Bitte den Namen der zu loeschenden Datei eingeben:  
48.
 
49.
ren "%gesamtpfad%\%dateiname%" "%dateineu%" 
50.
if ERRORLEVEL 1 goto nichterfolgreich 
51.
if ERRORLEVEL 0 goto erfolgreich 
52.
 
53.
:nichterfolgreich 
54.
echo Datei: "%gesamtpfad%\%dateiname%" nicht geloescht >>%LOG% 
55.
goto weitere 
56.
 
57.
:erfolgreich 
58.
del "%gesamtpfad%\%dateineu%" 
59.
echo Datei: "%gesamtpfad%\%dateiname%" geloescht >>%LOG% 
60.
goto weitere 
61.
 
62.
:weitere 
63.
set /p nochmal=Weitere Dateien loeschen?(j/n): 
64.
 
65.
if /i "%nochmal%"=="j" goto serverwechseln 
66.
if /i "%nochmal%"=="n" (goto eof) else (goto weitere) 
67.
 
68.
:eof 
69.
 
Ich hoffe es ist nachvollziehbar 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
Bitte warten ..
Mitglied: Edaseins
14.05.2014, aktualisiert um 10:15 Uhr
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?
Bitte warten ..
Mitglied: Xaero1982
14.05.2014, aktualisiert um 09:51 Uhr
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?
Bitte warten ..
Mitglied: Edaseins
14.05.2014 um 10:00 Uhr
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.
Bitte warten ..
Mitglied: Edaseins
14.05.2014 um 10:08 Uhr
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.

01.
  
02.
@ECHO OFF 
03.
 
04.
Echo Willkommen zur vereinfachten G-Laufwerk Pflege. 
05.
Echo, 
06.
Echo Pruefe auf Updates... Bitte Warten... 
07.
Echo, 
08.
ping localhost /n 6 >nul 
09.
 
10.
IF EXIST "H:\T_LBS\TBS\Neue.CMDs\Upgrade\V2.2 Masterbatch G-laufw.cmd" goto update1  
11.
IF NOT EXIST "H:\T_LBS\TBS\Neue.CMDs\Upgrade\V2.2 Masterbatch G-laufw.cmd" goto update2 
12.
 
13.
:update1 
14.
set "dest=%~dp0" 
15.
Echo Update gefunden! 
16.
Echo, 
17.
Echo Kopiere Update... 
18.
copy "H:\T_LBS\TBS\Neue.CMDs\Upgrade\V2.2 Masterbatch G-laufw.cmd" "%~dp0\" 
19.
ping localhost /n 6 >nul 
20.
Echo, 
21.
Echo Starte neue Batch... 
22.
call "%dest%V2.2 Masterbatch G-laufw.cmd" 
23.
ping localhost /n 3 >nul 
24.
Echo, 
25.
Echo loesche alte Version... 
26.
ping localhost /n 3 >nul 
27.
REM del "%~dp0V2.1 Masterbatch G-laufw.cmd" 
28.
goto ende 
29.
 
30.
:update2 
31.
Echo Kein Update gefunden... 
32.
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.
Bitte warten ..
Mitglied: Edaseins
14.05.2014 um 10:40 Uhr
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.
Bitte warten ..
Mitglied: Xaero1982
LÖSUNG 14.05.2014, aktualisiert um 11:40 Uhr
Ich weiß ja nicht was du da aufrufst...

Wenn ich mir zwei cmds erstelle.

1.
01.
 start batch.cmd
batch.cmd
01.
 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.
Bitte warten ..
Mitglied: Edaseins
14.05.2014 um 11:44 Uhr
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:


01.
Echo Willkommen zur vereinfachten G-Laufwerk Pflege. 
02.
Echo, 
03.
Echo Pruefe auf Updates... Bitte Warten... 
04.
ping localhost /n 3 >nul 
05.
Echo, 
06.
Echo loesche alte Version... 
07.
ping localhost /n 3 >nul 
08.
del "%~dp0""V 2.1 Masterbatch G-laufw.cmd" 
09.
ping localhost /n 6 >nul 
10.
Echo, 
11.
Echo Pruefe auf Updates... Bitte Warten... 
12.
Echo, 
13.
ping localhost /n 6 >nul 
14.
 
15.
IF EXIST "H:\T_LBS\TBS\Neue.CMDs\Upgrade\V2.3 Masterbatch G-laufw.cmd" goto update1  
16.
IF NOT EXIST "H:\T_LBS\TBS\Neue.CMDs\Upgrade\V2.3 Masterbatch G-laufw.cmd" goto update2 
17.
 
18.
:update1 
19.
set "dest=%~dp0" 
20.
Echo Update gefunden! Neue Version: 2.3 
21.
Echo, 
22.
Echo Kopiere Update... 
23.
copy "H:\T_LBS\TBS\Neue.CMDs\Upgrade\V2.3 Masterbatch G-laufw.cmd" "%~dp0\" 
24.
ping localhost /n 6 >nul 
25.
Echo, 
26.
Echo Starte neue Batch... 
27.
call "%dest%V2.2 Masterbatch G-laufw.cmd" 
28.
ping localhost /n 3 >nul 
29.
Echo, 
30.
Echo loesche alte Version... 
31.
ping localhost /n 3 >nul 
32.
del "%~dp0V2.2 Masterbatch G-laufw.cmd" 
33.
goto ende 
34.
 
35.
:update2 
36.
Echo Kein Update gefunden... 
37.
Echo, 
38.
goto anfang 
39.
 
40.
:anfang 
41.
 
42.
Echo Willkommen zur vereinfachten G-Laufwerk Pflege. 
43.
Echo, 
44.
Echo Initialisiere. Bitte Warten. 
45.
Echo, 
46.
ping localhost /n 6 >nul 
47.
Echo Bitte Treffen Sie eine Auswahl, fuer die durchzufuehrende Arbeit: 
48.
Echo, 
49.
Echo 1.) Datei-Verteilung 
50.
Echo 2.) Loeschung von Dateien 
51.
Echo 3.) Umbennennen von Dateien 
52.
Echo 0.) Exit 
53.
Echo, 
54.
set /p nochmal=Bitte geben Sie die Zahl des Menues ein wo Sie hin moechten: 
55.
 
56.
if /i "%nochmal%"=="1" goto 1verteilung 
57.
if /i "%nochmal%"=="2" goto 2loeschung 
58.
if /i "%nochmal%"=="3" goto 3benennung 
59.
if /i "%nochmal%"=="0" goto ende 
60.
 
61.
if not "%nochmal%" == "" set nochmal=%nochmal:~0,1% 
62.
 
63.
ECHO "%nochmal%" ist keine zulaessige Eingabe, bitte keine Plaudereien halten. 
64.
 
65.
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.
Bitte warten ..
Mitglied: Xaero1982
14.05.2014 um 13:07 Uhr
Das ist ja schön und gut 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ß
Bitte warten ..
Mitglied: Edaseins
14.05.2014 um 13:37 Uhr
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.
Bitte warten ..
Mitglied: Xaero1982
14.05.2014 um 14:06 Uhr
Tippfehler hin oder her

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?
Bitte warten ..
Mitglied: Edaseins
15.05.2014 um 12:42 Uhr
Vollkommen richtig. Funktioniert soweit erstmal ^.^
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
CMD cURL Access Token parsen (2)

Frage von maddig zum Thema Batch & Shell ...

Exchange Server
Exchange 2010 Akzeptierte Domäne löschen (4)

Frage von Rob1982 zum Thema Exchange Server ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

Exchange Server
gelöst SBS2011 - im Exchange mobile Geräte löschen (4)

Frage von MiSt zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (27)

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (20)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...