Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


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

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


Tosyk, указать в скрипте? Тогда в чём смысл перетаскивания файла на скрипт? Совершенно не понимаю.

Впрочем, как скажете. Можете задавать путь к файлам *.chunk тупо в скрипте (умолчанием второго аргумента).
C:\Мои проекты\0167\Sample.ps1
Код: Выделить весь код
param(
    [Parameter(Mandatory = $true)][System.String]$SourceFile, 
    [System.String]$sCHUNKFolder = 'C:\Мои проекты\0167\CHUNK'
)

$aByte4Find = [System.Byte[]](0xFF, 0xFF, 0xFF, 0xFF)

if(Test-Path -Path $SourceFile -PathType Leaf) {
    $oSourceFile = [System.IO.FileInfo]$SourceFile
    
    if(Test-Path -Path $sCHUNKFolder -PathType Container) {
        Write-Host "[$($oSourceFile.FullName)]" -ForegroundColor Yellow

        $aByteContent = [System.IO.File]::ReadAllBytes($oSourceFile.FullName)
        $iCount = 0

        for($i = 0; $i -le $aByteContent.Length - $aByte4Find.Length - 1; $i++) {
            $bFound = $true

            for($j = 0; $j -le $aByte4Find.Length - 1; $j++) {
                if($aByteContent[$i + $j] -ne $aByte4Find[$j]) {
                    $bFound = $false
                    break
                }
            }

            if($bFound) {
                $sFoundFileName = [System.BitConverter]::ToString($aByteContent[$($i - 16) .. $($i - 1)]) -replace '-', ''

                Write-Host "`tOffset:          $i"
                Write-Host "`tFound file name: $sFoundFileName"
                
                $sChunkFile = "$sCHUNKFolder\$sFoundFileName.chunk"

                if(Test-Path -Path $sChunkFile -PathType Leaf) {
                    Write-Host "`tFile    [$sChunkFile] found!" -ForegroundColor Green
                    Write-Host "`tCopy to [$($oSourceFile.DirectoryName)] as [$($oSourceFile.BaseName)_$($iCount.ToString("00")).chunk]." -ForegroundColor Green
                    $iCount++
                    [System.IO.File]::Copy($sChunkFile, "$($oSourceFile.DirectoryName)\$($oSourceFile.BaseName)_$($iCount.ToString("00")).chunk", $true)
                } else {
                    Write-Host "`tFile [$sChunkFile] not found!" -ForegroundColor Red
                }
                Write-Host ''
            }
        }
    } else {
        Write-Host "Can't find CHUNK folder [$sCHUNKFolder]." -ForegroundColor Red
    }
} else {
    Write-Host "Can't find source file [$SourceFile]." -ForegroundColor Red
}

C:\Мои проекты\0167\RunPowerShell.vbs
Код: Выделить весь код
Option Explicit

Dim i
Dim sArguments


sArguments = ""

For i = 0 To WScript.Arguments.Count - 1
	sArguments = sArguments & " """ & WScript.Arguments.Item(i) & """"
Next

WScript.CreateObject("WScript.Shell").Run """powershell.exe"" -File ""C:\Мои проекты\0167\Sample.ps1"" " & sArguments, 1, False

WScript.Quit 0

Поскольку умолчальным глаголом для .ps1 является отнюдь не «Выполнить с помощью PowerShell» (и что я менять, в общем-то, не советую), то используем промежуточный скрипт WSH, на который и надо перетаскивать файл .MeshSet. Не забудьте поправить все пути в скриптах и сами имена скриптов на свои.
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:25, 28-06-2018 | #18