könnten Sie eine .NET-Methode verwenden um die Bildmaße zu erhalten. Dann müssten Sie sich nicht auf Tools oder Bibliotheken von Drittanbietern verlassen. Hier ist ein Beispiel, das PowerShell-Hybridcode verwendet, um [System.Drawing.Image]::FromFile()
aufzurufen, um eine System.Drawing.Image object zu erstellen und auf seine Dimensionen zuzugreifen. Speichern Sie es mit einer BAT-Erweiterung und sehen Sie, was Sie denken.
<# : Batch portion (PowerShell multi-line comment)
@echo off & setlocal
rem # move landscape pics to what directory?
2>NUL md landscape
for %%I in (*.jpg *.bmp *.gif *.png) do (
call :isLandscape "%%~fI" && (
rem # remove "echo" when satisfied that this works as desired
echo move "%%~fI" landscape\
) || (
echo %%~fI was portrait
)
)
goto :EOF
:isLandscape <imgfile>
rem # function sets errorlevel 0 if landscape, 1 if portrait or square
setlocal disabledelayedexpansion
set "img=%~1"
powershell -noprofile -noninteractive "iex (${%~f0} | out-string)"
endlocal & exit /b %errorlevel%
: end batch/begin PowerShell hybrid code #>
add-type -Assembly System.Windows.Forms
$size = [Drawing.Image]::FromFile((gi $env:img)).Size
exit ($size.Width -le $size.Height) # 0 = false, 1 = true
Eigentlich, wenn Sie nicht, dass an einer Weiterverarbeitung der Dateien im Batch-Kontext sind, wird es sehr viel schneller eine Schleife durch die Dateien in einer einzigen Powershell-Sitzung sein. Speichern Sie dies mit einer .bat- oder einer .ps1-Erweiterung, und Sie werden den Unterschied sehen.
<# : batch portion
@echo off & setlocal
powershell -noprofile -noninteractive "iex (${%~f0} | out-string)"
goto :EOF
: end batch/begin PowerShell #>
add-type -Assembly System.Windows.Forms
$newdir = "landscape"
if (-not (test-path $newdir)) { md $newdir }
gci | ?{ $_.Name -match "\.(jpe?g|bmp|gif|png)$" } | %{
$size = [Drawing.Image]::FromFile($_).Size
if ($size.Width -gt $size.Height) {
# remove the -whatif flag to enable moves
mv $_.FullName $newdir -whatif
} else {
write-host ("{0} was portrait. Not moving." -f $_.FullName) -f cyan
}
}
Bitte formulieren Sie Ihre Frage um nur Details über (2) – knocte