Kl. Frage: Log-File schreiben per Batch
Hey ihr Genies. =))
Ich habe ein kleines Problem beim Schreiben eines Logs:
( Unterschied nur in der ersten Zeile: )
Klappt, Log-File wird als *.txt unter gewünschtem Pfad und Namen abgelegt:
Klappt nicht, kein Log:
Sobald ich eine zweite Variable in den Titel der *.txt schreibe, bekomme ich:
„The filename, directory name, or volume label syntax is incorrect.”
Ich blicke da nicht durch. Ich habe andere gesehen, die zwei Variablen in den Dateinamen aufnehmen, z.B. %IP% und %date% aber ich kann nicht Datum und Zeit aufnehmen, weil incorrect Syntax?
Was ist die Logik dahinter?
Auch %GesuchteDatei% funktioniert im Dateinamen nicht, %%~nxi dafür schon.
Könnte mir jemand die Regel erklären, die vermutlich Variablen im Dateinamen zugrunde liegt?
Danke, LG,
Yauhun (schon wieder)
Ich habe ein kleines Problem beim Schreiben eines Logs:
( Unterschied nur in der ersten Zeile: )
Klappt, Log-File wird als *.txt unter gewünschtem Pfad und Namen abgelegt:
set log="C:\Users\%username%\Desktop\SarchThrough-Suche %date%.txt"
for /F "delims=" %%i in ('dir /b /s "c:\%GesuchteDatei%" ^2^>Nul') do (
set "GefundenerPfad=ja"
REM Ausgabe in cmd:
echo Gesuchter Inhalt "%GesuchteDatei%" gefunden als "%%~nxi" unter "%%~dpi".
REM Ausgabe zusätzlich im Log:
echo Gesuchter Inhalt "%GesuchteDatei%" gefunden als "%%~nxi" unter "%%~dpi". > %log%
)
Klappt nicht, kein Log:
set log="C:\Users\%username%\Desktop\SarchThrough-Suche %date% (%time%).txt"
for /F "delims=" %%i in ('dir /b /s "c:\%GesuchteDatei%" ^2^>Nul') do (
set "GefundenerPfad=ja"
REM Ausgabe in cmd:
echo Gesuchter Inhalt "%GesuchteDatei%" gefunden als "%%~nxi" unter "%%~dpi".
REM Ausgabe zusätzlich im Log:
echo Gesuchter Inhalt "%GesuchteDatei%" gefunden als "%%~nxi" unter "%%~dpi". > %log%
)
Sobald ich eine zweite Variable in den Titel der *.txt schreibe, bekomme ich:
„The filename, directory name, or volume label syntax is incorrect.”
Ich blicke da nicht durch. Ich habe andere gesehen, die zwei Variablen in den Dateinamen aufnehmen, z.B. %IP% und %date% aber ich kann nicht Datum und Zeit aufnehmen, weil incorrect Syntax?
Was ist die Logik dahinter?
Auch %GesuchteDatei% funktioniert im Dateinamen nicht, %%~nxi dafür schon.
Könnte mir jemand die Regel erklären, die vermutlich Variablen im Dateinamen zugrunde liegt?
Danke, LG,
Yauhun (schon wieder)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 319402
Url: https://administrator.de/contentid/319402
Ausgedruckt am: 24.11.2024 um 10:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Yauhun,
Alternativ geht's auch so:
Mehr Infos zu String Manipulation kannst du bei DOSTips nachlesen:
http://www.dostips.com/DtTipsStringManipulation.php
Grüße Uwe
set log="C:\Users\%username%\Desktop\SarchThrough-Suche %date% (%time%).txt"
„The filename, directory name, or volume label syntax is incorrect.”
das liegt daran das %time% Doppelpunkte enthält welche in Dateinamen nicht erlaubt sind (illegales Zeichen). Also ersetzte diese z.B. durch Punkte oder Unterstriche.„The filename, directory name, or volume label syntax is incorrect.”
set t=%time:~0,-3%
set t=%t::=_%
set log="C:\Users\%username%\Desktop\SarchThrough-Suche %date% (%t%).txt"
set "t=%time:~0,2%_%time:~3,2%_%time:~6,2%"
set log="C:\Users\%username%\Desktop\SarchThrough-Suche %date% (%t%).txt"
http://www.dostips.com/DtTipsStringManipulation.php
Grüße Uwe
Hallo Yauhun.
Macht man natürlich trotzdem nicht so. Im allgemeinen wird die Ansicht im Explorer so eingestellt sein, dass nach Dateinamen sortiert angezeigt wird. (Ich gehe nicht davon aus dass du die Logs auf Dauer auf deinem Desktop liegen hast.) Dann sollte das Datum in der Reihenfolge yyyymmdd vorliegen. Dazu kommt noch, dass das Format von %date% und %time% mit gebietsabhängigen Einstellungen bestimmt wird.
Zieh dir die Information mit WMIC und bau dir deinen Timestamp. Dann musst du dir keine Gedanken machen.
Grüße
rubberman
Macht man natürlich trotzdem nicht so. Im allgemeinen wird die Ansicht im Explorer so eingestellt sein, dass nach Dateinamen sortiert angezeigt wird. (Ich gehe nicht davon aus dass du die Logs auf Dauer auf deinem Desktop liegen hast.) Dann sollte das Datum in der Reihenfolge yyyymmdd vorliegen. Dazu kommt noch, dass das Format von %date% und %time% mit gebietsabhängigen Einstellungen bestimmt wird.
Zieh dir die Information mit WMIC und bau dir deinen Timestamp. Dann musst du dir keine Gedanken machen.
@echo off &setlocal
for /f %%i in ('WMIC OS GET LocalDateTime /value') do for /f "tokens=2 delims==" %%j in ("%%i") do set "ldt=%%j"
set "timestamp=%ldt:~,8%T%ldt:~8,6%"
echo %timestamp%
:: oder
set "timestamp=%ldt:~,4%-%ldt:~4,2%-%ldt:~6,2%_%ldt:~8,2%-%ldt:~10,2%-%ldt:~12,2%"
echo %timestamp%
pause
rubberman