标题: [文本处理] 批处理如何将一个文件名有一定规律的文件的内容输出? [打印本页]
作者: hello163mailcom 时间: 2015-1-31 15:28 标题: 批处理如何将一个文件名有一定规律的文件的内容输出?
情况是这样的,有一个程序每天都会在一个文件目录,如(文件名有空格):E:\MS SQL\Plan Logs\,里生成一个文件,文件名形式大概是这样的:Plan Logs_2015013015210022,前面的Plan LOGS_是固定的,接下来是日期(当天日期的前一天),时分秒。每天一般只生成一个,时分秒不确定。
现在我希望实现,把这个文件里的内容输出来,该如何实现呢?- @echo off
- set prefilename="Plan Logs_"
- set yyyy=%date:~0,4%
- set mm=%date:~5,2%
- set dd=%date:~8,2%
- set filename=%prefilename%%yyyy%%mm%%dd%
-
- for /f "usebackq" %%i in ( 'E:\MS SQL\Plan Logs\%filename%*') do
- echo %%i
- )
- pasuse
复制代码
但是这样有问题:
1、日期是当天的,而不是前一天的
2、无法识别E:\MS SQL\Plan Logs\%filename%*
3、还有个问题是我尝试用for输出这个文件的内容后,发现中文都变成乱码了
作者: pcl_test 时间: 2015-1-31 15:45
回复 1# hello163mailcom - @echo off
- >dstdate.vbs echo LastDate=date()-1
- >>dstdate.vbs echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
- >>dstdate.vbs echo wscript.echo FmtDate
- for /f %%a in ('cscript /nologo dstdate.vbs') do set "dstdate=%%a"
- del dstdate.vbs /f /q >nul
- for /f "delims=" %%i in ('type "E:\MS SQL\Plan Logs\Plan Logs_%dstdate%*"') do echo %%i
- pause
复制代码
作者: hello163mailcom 时间: 2015-1-31 15:56
回复 2# pcl_test
太牛逼了,可以详细解释下吗
作者: hello163mailcom 时间: 2015-1-31 16:22
回复 2# pcl_test
这个txt是utf-8格式的文件,该怎么处理呢
作者: pcl_test 时间: 2015-1-31 17:17
回复 4# hello163mailcom - @echo off
- ::获取前一天日期
- >dstdate.vbs echo LastDate=date()-1
- ::设置日期格式
- >>dstdate.vbs echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
- ::输出日期
- >>dstdate.vbs echo wscript.echo FmtDate
- ::批处理获取VBS输出的日期并赋值
- for /f %%a in ('cscript /nologo dstdate.vbs') do set "dstdate=%%a"
- del dstdate.vbs /f /q >nul
- copy "E:\MS SQL\Plan Logs\Plan Logs_%dstdate%*" "Plan Logs_%dstdate%_temp.txt" >nul
- ::转换编码
- iconv.exe -f utf-8 -t gbk "Plan Logs_%dstdate%_temp.txt" >> $
- for /f "delims=" %%i in ('type $') do echo %%i
- del "Plan Logs_%dstdate%_temp.txt"
- del $
- pause
复制代码
批处理跟iconv放在一起运行,需下载iconv
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |