2011-06-29 1 views
3

Je possède déjà un fichier de commandes qui affiche la liste des fichiers dans le dossier commandé par type de fichier:Besoin d'un fichier batch à la liste des fichiers d'image avec des dimensions

dir /b /o:gen>filelisting.txt 

Je voudrais créer un fichier .bat cela affichera également la largeur et la hauteur des images. Est-ce que quelqu'un a du code qui va faire cela ou comprend ce type de programmation mieux que je peux?

+0

Ce n'est pas quelque chose que vous pouvez faire avec un simple fichier batch. Vous avez besoin d'un autre programme pour lire les informations sur l'image. – Brad

Répondre

1

Essayez d'enregistrer ceci sous le nom xxx.bat;

Dim oDir: Set oDir = CreateObject("Shell.Application").Namespace(Wscript.Arguments.Item(0)) 
For Each oFile In oDir.Items 
    wscript.echo oFile & " " & replace(oDir.GetDetailsOf(oFile,26), "x", "") 
Next 

Ensuite, à partir de la ligne de commande:

cscript c:\xxx.vbs "C:\whatever\My Pictures" 

Pour moi, produit;

a926_thumb 180 180 
abstract1 2197 1374 
backscreen 1024 1024 
burgin_small 207 205 

Lorsque le 1er numéro est la largeur & la hauteur 2e.

+0

pour moi, il affiche toujours seulement les fichiers. je devais aussi l'enregistrer comme un fichier vbs au lieu d'un fichier bat qui allait bien – WPAflight

2

est ici un tooltipInfo.bat (JScript \ hybride de chauve-souris qui peut être utilisé comme .bat) qui prend les informations tooptip pour un fichier et ne nécessite aucun logiciel externe:

@if (@X)==(@Y) @end /* JScript comment 
    @echo off 

    rem :: the first argument is the script name as it will be used for proper help message 
    cscript //E:JScript //nologo "%~f0" %* 

    exit /b %errorlevel% 

@if (@X)==(@Y) @end JScript comment */ 

////// 
FSOObj = new ActiveXObject("Scripting.FileSystemObject"); 
var ARGS = WScript.Arguments; 
if (ARGS.Length < 1) { 
WScript.Echo("No file passed"); 
WScript.Quit(1); 
} 
var filename=ARGS.Item(0); 
var objShell=new ActiveXObject("Shell.Application"); 
///// 


//fso 
ExistsItem = function (path) { 
    return FSOObj.FolderExists(path)||FSOObj.FileExists(path); 
} 

getFullPath = function (path) { 
    return FSOObj.GetAbsolutePathName(path); 
} 
// 

//paths 
getParent = function(path){ 
    var splitted=path.split("\\"); 
    var result=""; 
    for (var s=0;s<splitted.length-1;s++){ 
     if (s==0) { 
      result=splitted[s]; 
     } else { 
      result=result+"\\"+splitted[s]; 
     } 
    } 
    return result; 
} 


getName = function(path){ 
    var splitted=path.split("\\"); 
    return splitted[splitted.length-1]; 
} 
// 

function main(){ 
    if (!ExistsItem(filename)) { 
     WScript.Echo(filename + " does not exist"); 
     WScript.Quit(2); 
    } 
    var fullFilename=getFullPath(filename); 
    var namespace=getParent(fullFilename); 
    var name=getName(fullFilename); 
    var objFolder=objShell.NameSpace(namespace); 
    var objItem=objFolder.ParseName(name); 
    //https://msdn.microsoft.com/en-us/library/windows/desktop/bb787870(v=vs.85).aspx 
    WScript.Echo(fullFilename + " : "); 
    WScript.Echo(objFolder.GetDetailsOf(objItem,-1)); 

} 

main(); 

sortie si elle est utilisée contre une image:

C:\TEST.PNG : 
Item type: PNG image 
Dimensions: ?871 x 836? 
Size: 63.8 KB 

vous pouvez donc:

for %%# in (*.jpg *.png *.tiff *.gif *.bmp) do (
    echo %%# 
    for /f "delims=? tokens=2" %%a in ('toolTipInfo.bat "%%~#" ^|find "Dimensions:"') do echo %%a 
) 

OU avec imgInfo.bat

Questions connexes