Найти файл независимо от его расширения - PullRequest
0 голосов
/ 10 сентября 2018

Я немного застрял.Я пытаюсь создать скрипт, который извлекает сжатые файлы ISO и воспроизводит их на эмуляторе.У меня так далеко:

param (    
    [string]$7zPath, # File location of 7z
    [string]$emulatorPath, # File location of the Emulator exe
    [string]$filePath # File location of the compressed file
)

$7zArgList = @(
    "e", # 7z arguments go here
    $filePath
)

# Location of the decompressed game <<< This is what is incorrect!!!
$decompressedFile = $filePath.Substring(0, $filePath.LastIndexOf("."))

# Start 7z and print the output in the console
"Starting decompression using 7z"
& $7zPath $7zArgList | Out-Host

# Start Emulator
"Starting Emulator"
Start-Process $emulatorPath -ArgumentList """$decompressedFile""" -Wait

# Remove the decompressed file when Emulator closes
"Removing the decompressed file"
Remove-Item $decompressedFile

"Done"

Так что моя команда запустить игру (после преобразования этого .ps1 в .exe) будет выглядеть примерно так:

"ThisCode.exe" "7zip.exe" "Emulator.exe" "Path2Rom"

Так что дляпример

"C:\7zPrepper.exe" "C:\Program Files\7-Zip\7z.exe" "C:\Program Files (x86)\PCSX2\pcsx2.exe" "C:\Roms\Game 1.7z"

Я определил, где мне нужно изменить мой скрипт, чтобы он выглядел в нужном месте для моего извлеченного файла ... Имя файла несжатого файла всегда совпадает с именем архивакроме как с расширением .ISO или .BIN.В идеале я бы хотел, чтобы скрипт сначала проверил наличие .ISO, а если не нашел, то проверил наличие .BIN, но там мы достигли уровня моих знаний ... Любая помощь очень ценится!

1 Ответ

0 голосов
/ 10 сентября 2018
$filepath_without_ext = [System.IO.Path]::ChangeExtension($filepath,$null)
# or
$filepath_without_ext = $filePath.Substring(0, $filePath.LastIndexOf("."))

$decompressedFile = Get-Item -Path "$filepath_without_ext*" | Where-Object -Property Extension -Match -Value 'BIN|ISO' | Select-Object -Last 1 -ExpandProperty FullName
...