1

現在持っているログ ファイルの出力ファイル名に日付を追加するにはどうすればよいでしょうか。1 つまたは 2 つの日付コマンドを見つけましたが、既に持っているものでそれらを動作させることができないようです。

いいえ:ECHO %time:~0,2%%time:~3,2%%time:~6,2%_%date:~-10,2%%date:~-7,2%%date:~-4,4%

@echo off
net use y: \\server_name\shared_folder_name /USER:admin password /persistent:yes
wmic nteventlog where filename='application' backupeventlog C:\Users\Public\Desktop\Application.evt
wmic nteventlog where filename='security' backupeventlog C:\Users\Public\Desktop\Security.evt
wmic nteventlog where filename='system' backupeventlog C:\Users\Public\Desktop\System.evt
wmic nteventlog where filename='application' cleareventlog
wmic nteventlog where filename='system' cleareventlog
wmic nteventlog where filename='security' cleareventlog
exit
4

2 に答える 2

1

foxidriveの回答を受け取り(ありがとう、wmiから時間を取得できることを覚えていません)、コードを再編成します(コードに問題はありません。タスクの構成をタスクの実行から分離することを好みます)

@echo off
    rem prepare environment
    setlocal enableextensions

    rem configuration
    set _logPath=C:\Users\Public\Desktop
    set _eventLogs=Application Security System "Internet Explorer"

    rem call subroutine for each of the event logs
    for %%e in (%_eventLogs%) do call :backupClearLog %%e "%_logPath%"

    rem cleanup
    endlocal 

    rem end of the work. exit batch file
    exit /b

:backupClearLog
    rem retrieve timestamp
    for /f "tokens=2 delims==.," %%a in ('wmic OS Get localdatetime /value') do set _timeStamp=%%a

    rem %~1 = log name, without quotes
    set _eventLog=%~1

    rem %~2 = directory to store backup, without quotes
    set _output="%~2\%_timeStamp%_%_eventLog%.evt"

    rem if you prefer timestamp as a suffix, use the following line instead
    set _output="%~2\%_eventLog%_%_timeStamp%.evt"

    rem Save Event Logs - Remove echo to make it work
    echo wmic nteventlog where filename='%_eventLog%' backupeventlog %_output%
    echo wmic nteventlog where filename='%_eventLog%' cleareventlog

    goto :EOF

名前にスペースが含まれるログの場合の使用法を反映するために、イベント ログのリストに "Internet Explorer" を含めました。

于 2013-10-18T06:22:27.580 に答える