freesoft00 发表于 2020-7-13 16:55:46

检测文本的批处理

需要是这样的。
我用批处理命令检测系统,有没有问题都会生成一个以日期命名的%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:52

本帖最后由 2010hook 于 2020-7-13 21:28 编辑

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

nttwqz 发表于 2020-7-13 19:25:52

你这确定忘得挺光的。。。

@echo off
pushd %~dp0

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

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

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

freesoft00 发表于 2020-7-13 19:53:21

东西不用就还回去了。
搜索了一下,以前问过这个问题
for %%a in ("1.txt") do (
    if "%%~za" equ "0" (
      goto noerr
    ) else (
      goto err
    )

)
findstr "." 1.txt>nul 2>nul&&goto err||goto noerr

2010hook 发表于 2020-7-13 21:26:35

本帖最后由 2010hook 于 2020-7-13 22:20 编辑

比较数值大小时,如果是equ或neq,可以用带双引号,视作普通字符串。但最好不要这么使用,否则大于小于是无法比较的,导致结果错误。

freesoft00 发表于 2020-7-13 21:51:10

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

好的。
原来的代码没有改直接贴上来了。
回头把双引号去掉。

nttwqz 发表于 2020-7-14 08:17:19

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

后来我也发现了这个问题,不带反而更准确

江南一根葱 发表于 2020-7-15 19:55:12

我比较简单粗暴
type 1.txt |findstr "."
if errorlevel 1 echo 没有错误!&&pause
if errorlevel 0 echo 有错误!&&pause

wom087 发表于 2021-2-26 23:04:08

谢谢楼主分享

15226587328 发表于 2021-2-28 14:29:45

好啊啊啊啊啊
页: [1]
查看完整版本: 检测文本的批处理