今天想复制一些文件,需要先判断文件的大小,小的肯定是有问题的不需要复制,经过大量测试终于找到了比较好的方法,需要的朋友可以参考下
先来点简单的一句话代码:
for /f %i in ('dir /b c:450010.jpg') do echo %~zi
完整的判断代码:
@echo off
::每5分钟复制以下首页
for /f %%i in ('dir /b c:index2.htm') do (
set indexdx=%%~zi
)
if %indexdx% gtr 5120 (
echo y | xcopy c:index2.htm /d /r /k c:index.htm
)
pause
dos下判断文件大小
纯dos下恐怕不行,视窗下bat还马马虎虎,当c:1.txt大于3.999G失效。大约20秒检查一次。
@echo off&setlocal Enabledelayedexpansion
set R=c:1.txt
:1
ping -n 20 127.0 >nul
for /f "tokens=1-3 delims= " %%a in ('dir "%R%"^|find /i "1 个文件"') do (
set Q=%%c
set /a Q=!Q:,=!
if !Q! lss 2048start "" "1.exe"
)
goto 1
Dos脚本判断文件大小
@echo off & setlocal EnableDelayedExpansion
del 1.txt /q
del 2.txt /q
for %%i in (*) do (echo %%~fzi >>1.txt) rem 将文件大小存储到1.txt
for /f "tokens=1* delims= " %%a in (1.txt) do (
set "zer=%%a"
set "pat=%%b"
if !zer! gtr 5120 (
if not "!pat:~0,-1!"=="%~0" echo "!pat:~0,-1!"& echo "!pat!" >> 2.txt rem 将大于5KB的文件名称放到2.txt中
)
)
echo "done."
【备注】if常用的判断语句
1、if exist d:test.txt (echo D盘下有test.txt存在) else (echo D盘下不存在test.txt)
2、if "abc"=="xyz" (echo 字符串abc等于字符串xyz) else (echo 字符串abc不等于字符串xyz)
3、if 1 equ 2 (echo 1等于2) else (echo 1不等于2)
4、if defined str (echo 变量str已经被赋值,其值为%str%) else (echo 变量str的值为空)
中文含义 关系符 英文解释
等于 equ equal
大于 gtr greater than
大于或等于 geq greater than or equal
小于 lss less than