为一个目录生成文件列表页面 echo off set /p dirname="请输入目录名: " dir %dirname% /b >filelist.tmp setlocal enabledelayedexpansion for /f "delims=" %%i in (filelist.tmp) do ( set /a b+=1 echo ^<li class="li-st"^>^<a href="%%i"^>%%i^<^/a^>^</li^> >>filelist.html.tmp ) del filelist.tmp echo 临时文件删除成功:filelist.tmp echo 文件列表生成成功:filelist.html.tmp set /p dirname="按任意键退出 ... ..." 读取带空格的行 for /f "delims=[" %%a in (tmp_filelist.txt) do ( cmd转义符 ^ 获取当前目录 echo 当前路径是:%~dp0 ::为了防止路径中有空格,一般加上"",无论在不在根目录下最后都有\ dir "%~dp0" pause>nul 判断是否存在传入参数 @echo off set "p1=%~1" if not defined p1 ( echo not def ) else ( echo def ) bat日期时间方面的陷阱 1、hour为个位数时前面没有自动补零,有些情况下会产生意想不到的麻烦,例如文件名: 2013-10-09_ 358.txt 给hour补0需要自己手工完成: if %time:~0,2% leq 9 ( set CUR_HOUR=0%time:~1,1% ) else ( set CUR_HOUR=%time:~0,2% ) 2、有些系统设置的日期时间格式分隔符是/,这样如果将日期用到路径中,将会出现意料之外的状况 如:X:\2013-10-09\test 实际路径可能为:X:\2013/10/09\test 所以比较靠谱的提取日期的方式是: set CUR_DATE=%date:~0,4%-%date:~5,2%-%date:~8,2% 分别提取日期的各部分值,然后自己决定用什么分隔符。