最近在学习写批处理文件,感觉批处理文件语法和其他语言语法相差不是一般的大。
我把最近写的一个自动添加昨日修改文件日志的批处理程序放在这儿:
set path=F:\xumingxsh\
set upath=F:\xumingxshother\
set index=0
@echo off&setlocal enabledelayedexpansion
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
set /a od=!dd!-1
if !od!==0 call :dd0
if !mm!==0 call :mm0
set kk=!yyyy!-!mm!-!od!
set fd=F:\xumingxsh\ivsmlog\!kk!.txt
if exist !fd! (
rem echo 完成昨日工作备份
rem goto :eof
del !fd!
)
DIR /A:D /B >>F:\xumingxsh\ivsmlog\!kk!.txt
echo 查找文件夹%path%中!kk:~0,10!修改的文件:>>!fd!
echo 查找文件夹%path%中!kk:~0,10!
call :ForeachDirf %path% !fd! !kk:~0,10!
echo "\r\n"
echo "\r\n"
echo 查找文件夹%upath%中!kk:~0,10!修改的文件:>>!fd!
echo 查找文件夹%upath%中!kk:~0,10!修改的文件:
call :ForeachDirf %upath% !fd! !kk:~0,10!
echo !fd!
if not exist !fd! (
echo 文件不存在
)
start notepad !fd!
pause
:ForeachDirf:
for /D %%a in (%1\*) do (
if not "%%a" equ ".svn" (
set dt1=%%~ta&set t1=!dt1:~0,10!
if "!t1!" equ "%3" (
echo %%a
echo %%a !dt1!>>%2
)
for %%s in (%%a\*.*) do (
set dt=%%~ts&set t=!dt:~0,10!
call :WriteFile %%~nxs %2 !t! "!dt!" %3 %%~xs %%~as
)
call :ForeachDirf %%a %2 %3
)
)
goto :eof
rem 1 文件名 2 写入文件 3 10位日期 4 全日期 5 比较日期 6 后缀
:WriteFile
if not "%3" equ "%5" (
goto :eof
)
if not "%6" equ ".svn-base" (
if not "%6" equ ".obj" (
if not "%6" equ ".dll" (
if not "%6" equ ".idb" (
if not "%6" equ ".pdb" (
if not "%6" equ ".ncb" (
if not "%6" equ ".exe" (
echo %1 %4
set /a index=%index% + 1
echo %index% %1 %4 %7 >>%2
)))))))
goto :eof