Войти

Показать полную графическую версию : [решено] Нужна помощь в написании скрипта работы с файлами.


Страниц : 1 [2]

megaloman
22-08-2019, 12:46
@Echo Off
cls
Set "BoxIn=D:\Photo"
Set "FileOut=D:\Photo\Photo.zip"

Set "Arc="C:\Program Files\7-Zip\7z.exe" a -mx0 -sdel --"

If Not Exist "%BoxIn%\" (Echo !!! Folder "%BoxIn%\" not exists. Script Exit. &Pause &Exit /B 2)
If Exist "%FileOut%" (Echo !!! File "%FileOut%" already exists. Script Exit. &Pause &Exit /B 2)

FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxIn%\" /B /A:D /O:-D`) DO (
If Exist "%BoxIn%\%%d\0??_001.jpg" (
2>nul Md "%BoxIn%\%%d\%~n0.tmp"

FOR /L %%i IN (1001,1,1032) DO (
Set /A N=%%i
Set /A M=%%i-1001
>nul Call Move /Y "%BoxIn%\%%d\%%N:~1,3%%_001.jpg" "%BoxIn%\%%d\%~n0.tmp\%%M%%.jpg"||Call Echo "%BoxIn%\%%N:~1,3%%_001.jpg"
)
If Exist "%BoxIn%\%%d\%~n0.tmp\*.jpg" %Arc% "%FileOut%" "%BoxIn%\%%d\%~n0.tmp\*.*" &&(Rd /S /Q "%BoxIn%\%%d" &Exit /B)
)
)
Echo !!! In Subfolders of Folder "%BoxIn%\" files 0??_001.jpg not found. Script Exit. &Pause &Exit /B 2)
Exit /B

Iska
22-08-2019, 12:50
Тогда примерно так:
$sRootFolder = 'C:\Мои проекты\0273\Photo'
$sArchiveFile = "$sRootFolder\Photo.zip"
$sExtension = 'jpg'

if([System.IO.Directory]::Exists($sRootFolder)) {
$oDirectoryInfo = Get-ChildItem -Path $sRootFolder -Directory

if($oDirectoryInfo -is [System.IO.DirectoryInfo]) {
$aFileInfo = @(Get-ChildItem -Path "$($oDirectoryInfo.FullName)\*" -Include "*.$sExtension" -File) | Sort-Object -Property 'Name'

if($aFileInfo.Count -eq 32) {
$aFileInfo | ForEach-Object -Begin {
$iCount = 0
} -Process {
[System.IO.File]::Move($_.FullName, "$($oDirectoryInfo.FullName)\$(($iCount++).ToString())$($_.Extension)")
}

$aFileInfo = @(Get-ChildItem -Path "$($oDirectoryInfo.FullName)\*" -Include "*.$sExtension" -File) | Sort-Object -Property 'Name'
try {
Compress-Archive -Path $aFileInfo -DestinationPath $sArchiveFile -CompressionLevel NoCompression -Force -ErrorAction SilentlyContinue
Write-Host "Archive file [$sArchiveFile] created." -ForegroundColor Green
$oDirectoryInfo.Delete($true)
Write-Host "Folder [$($oDirectoryInfo.FullName)] deleted." -ForegroundColor Green
} catch {
Write-Host "Can't create archive file [$sArchiveFile]." -ForegroundColor Red
}
} else {
Write-Host "Need exactly 32 $sExtension files in subfolder [$($oDirectoryInfo.FullName)]." -ForegroundColor Red
}
} else {
Write-Host "Need at least one (and no more) subfolder in root folder [$sRootFolder]." -ForegroundColor Red
}
} else {
Write-Host "Can't find root folder [$sRootFolder]." -ForegroundColor Red
}

С EXIF тоже не всё так радужно, остались ещё устройства, которые и не думают писать эту инфу, а именно дату... да и пользователи не всегда настраивают её так, чтобы она не показывала начало прошлого века, например. »
Это да :).

nik123456654321
22-08-2019, 13:11
megaloman, Огромное Вам спасибо за помощь и терпение ! Все работает , надеюсь больше никаких неполадок со стороны программы 3d съемки не будет .

DJ Mogarych
22-08-2019, 15:20
$folder = gci "D:\Photo"
$zip = $folder.BaseName + '.zip'
$count = 0

cd $folder.FullName

gci |sort |% {
Rename-Item $_.FullName -NewName "$count.jpg"
$count++
}

gci |Compress-Archive -DestinationPath ..\$zip
cd ..
rm $folder.FullName -Recurse -Force -Confirm:$false




© OSzone.net 2001-2012