为一个目录生成文件列表页面
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%
分别提取日期的各部分值,然后自己决定用什么分隔符。