2014年10月20日月曜日

forfiles

@echo off

:: *********************************************************************************
::
:: target file listing only
:: target file listing and delete
::
:: *********************************************************************************

CALL :volumeinfo

SET FileAction_ACTION=LIST
SET FileAction_MINUS_DAYS=-149
SET FileAction_PATH=d:\test


IF NOT "%1"=="" (
SET FileAction_ACTION=%1
)


IF NOT "%2"=="" (
SET FileAction_MINUS_DAYS=%2
)

IF NOT "%3"=="" (
SET FileAction_PATH=%3
)

ECHO %date% %time% %0 %FileAction_ACTION% %FileAction_MINUS_DAYS% %FileAction_PATH%


IF /I %FileAction_ACTION% EQU LIST GOTO MAINST
IF /I %FileAction_ACTION% EQU ROTATE GOTO MAINST



EXIT /B 1


:MAINST

CALL :FileAction %FileAction_ACTION% %FileAction_PATH% %FileAction_MINUS_DAYS%
IF NOT %ERRORLEVEL% EQU 0 GOTO MAINNG
GOTO MAINOK

:MAINNG
ECHO %date% %time% MAINNG

EXIT /B 1

pause

:MAINOK
fsutil volume diskfree d:

ECHO %date% %time% MAINOK

EXIT /B 0


:: *********************************************************************************
:: FileAction
:: target file listing only rae
:: target file listing and delete
::
:: *********************************************************************************

:FileAction

SET FORFILES_ACTION=%1
SET FORFILES_PATH=%2
SET FORFILES_MINUS_DAYS=%3

IF /I %FORFILES_ACTION% EQU LIST GOTO SEC_LIST
IF /I %FORFILES_ACTION% EQU ROTATE GOTO SEC_ROTATE

:SEC_LIST
FORFILES /P %FORFILES_PATH% /D %FORFILES_MINUS_DAYS% /C "cmd /c echo @path @fsize @fdate @ftime"
IF NOT %ERRORLEVEL% EQU 0 GOTO SEC_NG
GOTO SEC_OK

:SEC_ROTATE

ECHO "AAA"
rem FORFILES /P %FORFILES_PATH% /D %FORFILES_MINUS_DAYS% /C "cmd /c del @path | echo @path @fsize @fdate @ftime"
rem FORFILES /P %FORFILES_PATH% /D %FORFILES_MINUS_DAYS% /C "cmd /c del @path"
FORFILES /P %FORFILES_PATH% /D %FORFILES_MINUS_DAYS% /C "cmd /c echo @path @fsize @fdate @ftimede l del @path"
IF NOT %ERRORLEVEL% EQU 0 GOTO SEC_NG
GOTO SEC_OK

:SEC_NG
ECHO SEC_NG %ERRORLEVEL%
EXIT /B 1

:SEC_OK

EXIT /B 0


:: *********************************************************************************
:: volume info
:: *********************************************************************************
:volumeinfo
for /F "tokens=1,2,*" %%I in ('fsutil volume diskfree D:') do (
if %%I==利用可能な空きバイト総数 (

echo %%K
set str=%%K
echo %str%
echo www
rem set num=%str:~0,-3%
rem set /a M=1024
rem set /a int=%num% / %M%
rem set free_k=%int%

rem call :trim %%K
rem set free_k=%%K
)

if %%I==バイト総数 (

echo %%K
set str=%%K
rem echo %str%
rem set num=%str:~0,-3%
rem set /a M=1024
rem set /a int=%num% / %M%
rem set all_k=%int%

rem call :trim %%K
rem set all_k=%%K
)

)

echo %free_k% %all_k%

:: *********************************************************************************
:: triming MB
:: *********************************************************************************
:trim
set str=%~1
set num=%str:~0,-3%
set /a M=1024
set /a int=%num% / %M%
set MB=%int%
echo %MB%MB
exit /b 0


rem *********************************************************************************
rem event log out
rem Input
rem Level
rem Description
rem *********************************************************************************

:SetEVNTLOG

SET event_Level=%1
SET event_ID=%2
SET event_Description=%3

SET event_Source="Acronis"
SET event_LogName=APPLICATION

EVENTCREATE /T %event_Level% /ID %event_ID% /D %event_Description% /SO %event_Source% /L %event_LogName%
IF %ERRORLEVEL% EQU 0 GOTO LOGEND

echo %ERRORLEVEL%
:LOGEND

EXIT /B