Fehlersuche in Batch
Brauche hilfe ich find den fehler einfach nicht
würd mich sehr freuen wenn mir jemand helfen könnte...
würd mich sehr freuen wenn mir jemand helfen könnte...
:start
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDATE=08%%b
findstr /c:"name1" C:\WINDOWS\system32\LogFiles\IN%cdate%.log
IF %ERRORLEVEL% == 0 goto netsend1
findstr /c:"name2" C:\WINDOWS\system32\LogFiles\IN%cdate%.log
IF %ERRORLEVEL% == 0 goto netsend2
findstr /c:"name3" C:\WINDOWS\system32\LogFiles\IN%cdate%.log
IF %ERRORLEVEL% == 0 goto netsend3
findstr /c:"name4" C:\WINDOWS\system32\LogFiles\IN%cdate%.log
IF %ERRORLEVEL% == 0 goto netsend4
goto :start
:netsend1
for /f "tokens=1" %%i in (c:\achtung1.log) do call :netsendall %%i
goto :copypaste
:netsend2
for /f "tokens=1" %%i in (c:\achtung2.log) do call :netsendall %%i
goto :copypaste
:netsend3
for /f "tokens=1" %%i in (c:\achtung3.log) do call :netsendall %%i
goto :copypaste
:netsend4
for /f "tokens=1" %%i in (c:\achtung4.log) do call :netsendall %%i
goto :netsendall
:netsendall
net send * %1
:copypaste
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDATE=08%%b
findstr "name1" C:\WINDOWS\system32\LogFiles\IN%cdate%.log > C:\zugriffe.log
findstr "name2" C:\WINDOWS\system32\LogFiles\IN%cdate%.log > C:\zugriffe.log
findstr "name3" C:\WINDOWS\system32\LogFiles\IN%cdate%.log > C:\zugriffe.log
findstr "name4" C:WINDOWS\system32\LogFiles\IN%cdate%.log > C:\zugriffe.log
delete C:\WINDOWS\system32\LogFiles\IN%cdate%.log
start c:\vpnueberwachung.bat
exit
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 92672
Url: https://administrator.de/contentid/92672
Ausgedruckt am: 25.11.2024 um 09:11 Uhr
35 Kommentare
Neuester Kommentar
1. Zwischen Befehl/Programm und Parameter gehört normalerweise ein Leerzeichen.
2. date /t kannst du ersetzen durch %date%
3. was soll 08%%b ergeben? Wenn du ein normal formatiertes in DE übliches Datum verwendest,
würde dabei 0822.07.08 bzw. 08.22.07.2008 rauskommen.
2. date /t kannst du ersetzen durch %date%
3. was soll 08%%b ergeben? Wenn du ein normal formatiertes in DE übliches Datum verwendest,
würde dabei 0822.07.08 bzw. 08.22.07.2008 rauskommen.
moin tim1986,
ändert sich das Verhalten des Schnipsels, wenn Du
Und wenn Du dem DEL einen Parameter /Y mitgibst, weil Du ein Wildcard-Löschen versuchst?
Und ist es sinnvoll, jedesma, mit " > C:\zugriffe.log " die Datei Zugiffe.log neu zu erzeugen?
Ginge nicht auch ein Anfügen mit ">>"?
Und würde nicht auch ein
Grüße
Biber
ändert sich das Verhalten des Schnipsels, wenn Du
del C:\WINDOWS\system32\LogFiles\IN%cdate%.log
statt wie obendelete C:\WINDOWS\system32\LogFiles\IN%cdate%.log
... schreibst?Und wenn Du dem DEL einen Parameter /Y mitgibst, weil Du ein Wildcard-Löschen versuchst?
Und ist es sinnvoll, jedesma, mit " > C:\zugriffe.log " die Datei Zugiffe.log neu zu erzeugen?
Ginge nicht auch ein Anfügen mit ">>"?
Und würde nicht auch ein
FOR /F "tokens=2 delims=/. " %a in ("%date%") do whatever mit %a
reichen?Grüße
Biber
08%%b ergibt "0807"
Stimmt, mein Fehler. Ich habe delims nicht beachtet.
@Biber:
Ist irgendwie komisch - in machen Situationen muss es tatsächlich %%a heissen - da reicht ein %a nicht. Warum habe ich noch nicht begriffen, doch MS schreibt das auch so im Technet .... Hm ...
Grüße Mathias
Ist irgendwie komisch - in machen Situationen muss es tatsächlich %%a heissen - da reicht ein %a nicht. Warum habe ich noch nicht begriffen, doch MS schreibt das auch so im Technet .... Hm ...
Grüße Mathias
Schreib die Ausgabe des del/delete-Befehls doch auch in eine Logdatei, dann siehst du, was dabei rauskommt und warum die nicht gelöscht wird.
%% muss man bei Schleifenvariablen immer einsetzen, wenn sie im Batch verwendet werden, in der Konsole eingegeben gehört da nur ein %-Zeichen hin.
%% muss man bei Schleifenvariablen immer einsetzen, wenn sie im Batch verwendet werden, in der Konsole eingegeben gehört da nur ein %-Zeichen hin.
@Nailara
<OT>
<grins>
ich wollte eher auf die "Tokens=2" statt "tokens=1-5"
und das "%date%" statt 'date /T' hinaus...
Ich mache einen proof-of-concept eher am CMD-Prompt bevor ich mich an so einen Vielzeiler wie oben herantraue...
... wenn ich das überhaupt jemals wagen würde..
DAHER DAS %a statt %%a
</OT>
Grüße
Biber
<OT>
<grins>
ich wollte eher auf die "Tokens=2" statt "tokens=1-5"
und das "%date%" statt 'date /T' hinaus...
Ich mache einen proof-of-concept eher am CMD-Prompt bevor ich mich an so einen Vielzeiler wie oben herantraue...
... wenn ich das überhaupt jemals wagen würde..
DAHER DAS %a statt %%a
</OT>
doch MS schreibt das auch so im Technet...
Ich gebe zur Not sogar M$ Recht, wenn sie es tatsächlich mal haben sollten...Grüße
Biber
Probiere das mal und erzähle, was in der fehler.log steht.
del C:\WINDOWS\system32\LogFiles\IN0807.log > c:\fehler.log 2>&1
Eine Fehlermeldung bekommst du doch sicher, wenn du händisch das Löschen versuchst?
Und die ist streng geheim?
Welcher Dienst?
del C:\WINDOWS\system32\LogFiles\IN0807.log > c:\fehler.log 2>&1
Eine Fehlermeldung bekommst du doch sicher, wenn du händisch das Löschen versuchst?
Und die ist streng geheim?
Welcher Dienst?
Dann stoppe doch den Dienst kurzzeitig, kopiere die Logdatei woanders hin und starten den Dienst wieder, dann greifst du auf die Kopie zu.
Vielleicht kannst du auch mit Unlocker eine kurzzeitige Freigabe des Handles erreichen, ohne STOP und START.
Vielleicht kannst du auch mit Unlocker eine kurzzeitige Freigabe des Handles erreichen, ohne STOP und START.
Guck dir im Taskmanager an, wie die Auslastung ist und wieviel Speicher verbraten wird.
Ich blick da sowieso nicht durch, was du mit der Batch eigentlich bezweckst, mal ganz abgesehen davon, dass ich das Lesen dieser auseinandergezogenen Texte nicht als besonders übersichtlich ansehe.
Aus den Zeilen
findstr /c:"name1" C:\WINDOWS\system32\LogFiles\IN%cdate%.log
IF %ERRORLEVEL% == 0 goto netsend1
kannst du beispielsweise eine machen:
findstr /c:"name1" C:\WINDOWS\system32\LogFiles\IN%cdate%.log && goto :netsend1
Ich blick da sowieso nicht durch, was du mit der Batch eigentlich bezweckst, mal ganz abgesehen davon, dass ich das Lesen dieser auseinandergezogenen Texte nicht als besonders übersichtlich ansehe.
Aus den Zeilen
findstr /c:"name1" C:\WINDOWS\system32\LogFiles\IN%cdate%.log
IF %ERRORLEVEL% == 0 goto netsend1
kannst du beispielsweise eine machen:
findstr /c:"name1" C:\WINDOWS\system32\LogFiles\IN%cdate%.log && goto :netsend1
Wieso ist der nicht effektiv?
Unlocker Objektname -S
Unlocker Objektname -S
Dieser Unlocker?
http://ccollomb.free.fr/unlocker/
Der wird doch mit der Maus bedient oder deute ich jetzt die Screenshots falsch???? Die Anleitung sagt: "1. Simply right click the folder or file and select Unlocker" .... Mausbedienung im Batch würde ich als schlecht ansehen - kann aber auch am Wetter liegen ....
http://ccollomb.free.fr/unlocker/
Der wird doch mit der Maus bedient oder deute ich jetzt die Screenshots falsch???? Die Anleitung sagt: "1. Simply right click the folder or file and select Unlocker" .... Mausbedienung im Batch würde ich als schlecht ansehen - kann aber auch am Wetter liegen ....
Könnte Dir das Tool vielleicht helfen?
http://www.microsoft.com/technet/scriptcenter/tools/logparser/default.m ...
Dann brauchst Du möglicherweise nix umkopieren ...
http://www.microsoft.com/technet/scriptcenter/tools/logparser/default.m ...
Dann brauchst Du möglicherweise nix umkopieren ...
Dieser Unlocker?
Genau der.Unlocker /? schon mal probiert?
Jetzt steige ich aus. Das wird heute nichts mehr.
Nein - nicht probiert weil nicht installiert - erstmal nur den Hinweis in meine Lösungbibliothek aufgenommen und die Webseite überflogen - ein Bild sagt mehr als 1000 Worte.
Erst die FAQ hat den entscheidenden Hinweis enthalten und den habe ich zu spät - nämlich gerade eben erst auf der Suche nach dem richtigen Programm - gelesen. Muss wohl doch am Wetter liegen - ich geh gleich in den Schatten....
Erst die FAQ hat den entscheidenden Hinweis enthalten und den habe ich zu spät - nämlich gerade eben erst auf der Suche nach dem richtigen Programm - gelesen. Muss wohl doch am Wetter liegen - ich geh gleich in den Schatten....
Das Tool gehört imo auf jeden Rechner, genauso wie die Sysinternals-Suite.
Help FOR. Da findest du dann unten die Variablen, die dir die Zeitangaben für eine existierende Datei liefern. Die aktuelle Zeit bekommt man mit %time%
HELP SET erklärt dir, wie man die Variablen beackert, also nur bestimmte Stellen verwenden kann.
HELP SET erklärt dir, wie man die Variablen beackert, also nur bestimmte Stellen verwenden kann.