Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Нужна помощь в написании скрипта работы с файлами.

Ответить
Настройки темы
CMD/BAT - [решено] Нужна помощь в написании скрипта работы с файлами.

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток господа форумчане! Требуется помощь в написании скрипта. Имеем следующее : программа 3D съемки дает на выходе 32 .jpg файла в папку с рандомным названием (эта папка создается всегда в одном месте скажем в D:/Photo) . Задача состоит в том , что бы переименовать эти .jpg фалы по очереди , начиная с 0 до 31(тоесть должно получиться 0.jpg.....31.jpg) и запаковать их в архив с помощью 7zip под названием photo.zip . Заранее спасибо за помощь.

Отправлено: 09:28, 20-08-2019

 

Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 22-08-2019 в 12:52.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:46, 22-08-2019 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Тогда примерно так:
Скрытый текст
Код: Выделить весь код
$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
}


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

Отправлено: 12:50, 22-08-2019 | #22


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 13:11, 22-08-2019 | #23


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
$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

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 22-08-2019 в 15:44.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:20, 22-08-2019 | #24



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Нужна помощь в написании скрипта работы с файлами.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Помощь в написании скрипта.. Boris81G Программирование в *nix 1 09-10-2015 12:46
PowerShell - Помощь в написании скрипта IVa_ Скриптовые языки администрирования Windows 3 10-07-2015 14:12
VBS/WSH/JS - Нужна помощь в написании скрипта автологина через веб-форму сайта Rampages Скриптовые языки администрирования Windows 4 08-03-2014 04:50
Нужна снова ваша помощь в написании интересного скрипта Magnus Вебмастеру 2 09-06-2005 20:26
Нужна помощь в написании скрипта Magnus Вебмастеру 7 06-05-2005 10:53




 
Переход