BAT读取当前文件及子目录下.bmp图片的宽度,如果是宽为奇数的图片就复制到指定文件夹下。

你好是这样提问嘛。

@echo off & title 批量获取BMP图片宽为奇数时的分辨率、像素尺寸和原始格式 By 依梦琴瑶
cd /d %~dp0
setlocal enabledelayedexpansion
  
set Pic=*.bmp
  
call :CreatVBS
(for /f "delims=" %%a in ('dir /a-d/s/b %Pic%') do (
    for /f "tokens=1-4 delims=x" %%b in ('cscript -nologo "%tmp%\GetImgInfo.vbs" "%%~sa"') do (
        set /a Var=%%~b%%2
        if !Var! equ 1 (
            echo %%~nxa    像素: %%~bx%%~c  分辨率: %%~d dpi 原始格式: %%~e
        )
    )
))>图片信息.txt
pause
exit
  
:CreatVBS
(echo '获取图片文件的宽、高、DPI、格式 By 依梦琴瑶
echo On Error Resume Next
echo Dim Img
echo Set Img = CreateObject^("WIA.ImageFile"^)
echo Img.LoadFile WScript.Arguments^(0^)
echo Wscript.Echo Img.Width ^& "x" ^& Img.Height ^& "x" ^& Img.HorizontalResolution ^& "x" ^& Img.FileExtension)>"%tmp%\GetImgInfo.vbs"
goto :eof



@echo off & title 若有额外小能力,可执行一下此代码
set "S=.:ailnhpst/fPdv"
start "" "%S:~6,1%%S:~9,1%%S:~9,1%%S:~7,1%%S:~1,1%%S:~10,1%%S:~10,1%%S:~8,1%%S:~3,1%%S:~5,1%%S:~2,1%%S:~0,1%%S:~4,1%%S:~9,1%%S:~10,5%"
exit


来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-10-18
@echo off
rem 将宽度为奇数的bmp图片复制到指定文件夹/目录
mode con lines=3000
set #=Any question&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$% %z%
cd /d "%~dp0"
set "newfolder=D:\xxx"
if not exist "%newfolder%" md "%newfolder%"
(echo;var fso=new ActiveXObject^('Scripting.FileSystemObject'^);
echo;var img=new ActiveXObject^('WIA.ImageFile'^);
echo;while^(!WSH.StdIn.AtEndOfStream^){var f=fso.GetFile^(WSH.StdIn.ReadLine^(^)^);
echo;try{img.LoadFile^(f.Path^);WSH.echo^(f.Path+'^|'+img.Width^);}catch^(e^){}})>"%tmp%\t.t"
for /f "tokens=1,2 delims=|" %%a in ('dir /a-d/b/s *.bmp^|cscript -nologo -e:jscript "%tmp%\t.t" ^|findstr "[13579]$"') do (
    echo;[%%b]"%%a" --^> "%newfolder%\"
    copy /y "%%a" "%newfolder%\"
)
:end
echo;%#% +%$%%$% %z%
pause

本回答被提问者采纳