无忧启动论坛

标题: 检测文本的批处理 [打印本页]

作者: freesoft00    时间: 2020-7-13 16:55
标题: 检测文本的批处理
需要是这样的。
我用批处理命令检测系统,有没有问题都会生成一个以日期命名的%date:~0,4%%date:~5,2%%date:~8,2%%time:~,2%%time:~3,2%%time:~6,2%".txt
没有问题,这个文件是空的,有问题里面就有内容。
如果没有内容就提示  没有错误
如果有内容就提示 有错误。

这个判断txt文本有没有内容的判断怎么写。一直不写批处理都忘光了。
开始想使用dir if 判断文件大小,好像没有成功,
type txt这个文本,然后再判断?


作者: 2010hook    时间: 2020-7-13 17:37
本帖最后由 2010hook 于 2020-7-13 21:28 编辑

比较数值大小,不该带双引号。
  1. @echo off
  2. for %%a in ("%~f0") do ( set "var=%%~za")
  3. if %var% equ 0 echo 没有错误
  4. pause
复制代码


作者: nttwqz    时间: 2020-7-13 19:25
你这确定忘得挺光的。。。

  1. @echo off
  2. pushd %~dp0

  3. ::不使用find,多行空格算文件内容为空
  4. for /f "delims=" %%a in (txt.txt) do if not defined txtstr set "txtstr=%%a" && goto next

  5. :next
  6. if not defined txtstr (echo txt.txt文件内容为空) else echo txt.txt文件内容非空

  7. ::使用find,多行空格算文件内容非空
  8. find "" /v txt.txt >nul 2>&1
  9. if %errorlevel%==1 (echo txt.txt文件内容为空) else echo txt.txt文件内容非空
  10. pause
复制代码

作者: freesoft00    时间: 2020-7-13 19:53
东西不用就还回去了。
搜索了一下,以前问过这个问题
  1. for %%a in ("1.txt") do (
  2.     if "%%~za" equ "0" (
  3.         goto noerr
  4.     ) else (
  5.         goto err
  6.     )

  7. )
复制代码
  1. findstr "." 1.txt>nul 2>nul&&goto err||goto noerr
复制代码

作者: 2010hook    时间: 2020-7-13 21:26
本帖最后由 2010hook 于 2020-7-13 22:20 编辑

比较数值大小时,如果是equ或neq,可以用带双引号,视作普通字符串。但最好不要这么使用,否则大于小于是无法比较的,导致结果错误。
作者: freesoft00    时间: 2020-7-13 21:51
2010hook 发表于 2020-7-13 21:26
比较数值大小时,如果“equ”或“neq”,可以用带双引号,视作普通字符串。但最好不要这么使用,否则大于小 ...

好的。
原来的代码没有改直接贴上来了。
回头把双引号去掉。
作者: nttwqz    时间: 2020-7-14 08:17
2010hook 发表于 2020-7-13 21:26
比较数值大小时,如果是equ或neq,可以用带双引号,视作普通字符串。但最好不要这么使用,否则大于小于是无 ...

后来我也发现了这个问题,不带反而更准确
作者: 江南一根葱    时间: 2020-7-15 19:55
我比较简单粗暴
type 1.txt |findstr "."
if errorlevel 1 echo 没有错误!&&pause
if errorlevel 0 echo 有错误!&&pause
作者: wom087    时间: 2021-2-26 23:04
谢谢楼主分享
作者: 15226587328    时间: 2021-2-28 14:29
好啊啊啊啊啊




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3