返回列表 发帖
回复 13# 灯塔彭于晏


顶楼代码第7行改成这样试试呢:
(for /f "delims=" %%a in ('dir /b /od *.jpg,*.bmp,*.png,*.gif') do (

或者这样:
(for /f "delims=" %%a in ('dir /b /o-d *.jpg,*.bmp,*.png,*.gif') do (
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 16# Batcher


    谢谢您。可以的。

TOP

本帖最后由 WHY 于 2021-1-3 14:42 编辑

如果确定是按创建时间排序,这样应该可以
Test.js
var Img = new ActiveXObject('WIA.ImageFile');
var fso = new ActiveXObject('Scripting.FileSystemObject');
Date.prototype.format = function(){
    var yy = this.getFullYear();
    var MM = ( '' + (101 + this.getMonth())).substr(1);
    var dd = ( '' + (100 + this.getDate())).substr(1);
    var hh = ( '' + (100 + this.getHours())).substr(1);
    var mm = ( '' + (100 + this.getMinutes())).substr(1);
    var ss = ( '' + (100 + this.getSeconds())).substr(1);
    return yy + MM + dd + hh + mm + ss;
}
var arr = [];
var e = new Enumerator( fso.GetFolder('.').Files );
for(;!e.atEnd();e.moveNext()){
    var file = e.item().Name;
    if( !/\.(?:jpg|bmp|png|gif)$/i.test(file) ) continue;
    Img.LoadFile(file);
    var dt = new Date(e.item().DateCreated).format();
    arr.push( dt + ' ' + file + ' ' + Img.Width + "x" + Img.Height + "x" + Img.HorizontalResolution );
}
arr.sort();  //正序
//arr.sort().reverse();  //逆序
fso.OpenTextFile('图片信息.txt', 2, true).WriteLine( arr.join('\r\n').replace(/^\d+ /gm, '') );
WSH.Echo('Done');COPY
修改顶楼的:
@echo off
set Pic=*.jpg,*.jpeg,*.png,*.bmp,*.gif
call :CreatVBS
dir /b /od /tc %Pic% | cscript //nologo "%tmp%\GetImgInfo.vbs" > PicInfo.txt
pause & exit
:CreatVBS
(
    echo '获取图片文件的宽、高、DPI
    echo On Error Resume Next
    echo Dim Img, file
    echo Set Img = CreateObject("WIA.ImageFile"^)
    echo while Not WSH.StdIn.AtEndOfStream
    echo     file = WSH.StdIn.ReadLine
    echo     Img.LoadFile file
    echo     WSH.Echo file ^& " " ^& Img.Width ^& "x" ^& Img.Height ^& "x" ^& Img.HorizontalResolution
    echo wend
)>"%tmp%\GetImgInfo.vbs"COPY
1

评分人数

TOP

我只写一部分代码
第一种用重定向最后面  >1.txt
第二种powershell输出到文本.size -join ' ' | out-file 1.txt
1

评分人数

#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

@set @i=0 /* & @echo off
dir /b /a-d /od *.jpg *.bmp *.png *.gif | cscript -nologo -E:JScript %0
pause
exit
*/
var img=new ActiveXObject("WIA.ImageFile");
while(!WScript.StdIn.AtEndOfStream) {
    var file = WScript.StdIn.ReadLine();
    img.LoadFile(file);
    WSH.Echo(file, img.Height+'x'+img.Width+'x'+img.HorizontalResolution);
}COPY
1

评分人数

TOP

如果确定是按创建时间排序,这样应该可以
Test.js修改顶楼的:
WHY 发表于 2020-12-29 19:04



    谢谢~谢谢~ 这个效率真的高,顶楼的代码会有几秒的处理时间,不如你的代码。

想额外咨询个小问题,您的JS代码能否这样改:
根据文本B.TXT里的内容,内容如下:
c:\1.jpg
c:\2.jpg
……
是完整的电脑中图片的路径。

根据这个路径,分别去提取宽高呢,从而完美一对一对应呢。

因为我发现,按照时间排序,最快也就是按照“秒”来算,但一秒内存了2个图,也是可以的,现在的浏览器插件太迅速了。所以还是有几率导致和桌面顺序不一样。

降低保存速度也是可以的,就是好奇,能否改成 像上面说的那样一对一。 谢谢您了。

TOP

回复 21# 灯塔彭于晏


    Test.js
var listFile = 'B.txt';   //列表文件
var Img = new ActiveXObject('WIA.ImageFile');
var fso = new ActiveXObject('Scripting.FileSystemObject');
var objFile = fso.OpenTextFile(listFile, 1);
var arr = [];
while( !objFile.AtEndOfStream ){
    var file = objFile.ReadLine().replace(/^\s+|\s+$/g, '');
    if(file == '') continue;
    try {
        Img.LoadFile(file);
        arr.push(file + ' ' + Img.Width + 'x' + Img.Height + 'x' + Img.HorizontalResolution);
    } catch(e) {
        WSH.Echo(file + ' ' + e.message);
    }
}
fso.OpenTextFile('图片信息.txt', 2, true).WriteLine( arr.join('\r\n') );
WSH.Echo('Done');COPY

TOP

返回列表