2016-05-19 14 views
1

AutoRun.exeという名前のファイルを含むISOを作成しました。マウントされたドライブ文字をletter.txtに保存するPowerShellスクリプトを作成しました。ファイルパス内のドライブ文字変数

$Mounted= Mount-DiskImage -PassThru "C:\Users\Skulliam\Documents\DiskImage.iso" 
$DriveLetter = ($Mounted | Get-Volume).DriveLetter 
$DriveLetter | Out-File letter.txt 

次に、ドライブ文字にletter.txtからアクセスしようとしました。たとえば、ISOをFドライブにマウントした場合、バッチはF:\Autorun.exeになります。

for /f "Delims=" %%a in (letter.txt) do (
    set DRIVE=%%a 
) 
START %DRIVE%:\AutoRun.exe 
pause 

エラー状態

Windowsは見つけることができません ':\ setup.exeと入力します'。

答えて

0

Out-Fileは、バッチスクリプトで処理できない出力ファイルをUnicode形式で作成します。なぜあなたはその上に二つの異なるスクリプト、および異なる言語を使用しない、と述べたことで

... | Out-File 'letter.txt' -Encoding Ascii 

Asciiへの出力エンコーディングを変更しますか?あなたはそれぞれ別々のスクリプトを実行する必要がある場合は、このような第二のPowerShellスクリプトでドライブを得ることができる

& "${DriveLetter}:\Autorun.exe" 

:あなたはこのようにPowerShellのから実行可能ファイルを実行することができ

$DriveLetter = Get-Content 'letter.txt' 
& "${DriveLetter}:\Autorun.exe" 
+0

これはうまくいくはずですが、サポートファイル(ini、cfg)がPowershellが実行された場所(この場合は私のデスクトップ)になると期待しています。どのような回避策ですか? – Skulliam

+0

「サポートファイル」とは何ですか? –

+0

"autorun.inf"と "AutoRunGUI.dll" – Skulliam

0

バッチコードが正しい。 C:\ AutoRun.exeで始まる新しいletter.txtファイル

これを試しましたか?動作している場合、問題はPowerShellスクリプト内にあります。

システムで「Mount-DiskImage」と「GetVolume」が認識されないため、このPowerShellスクリプトを実行できません。

+0

PowerShellの作品うまくいく。テキスト文書を実際のisoドライブレターと比較することができ、それらは等しいです。どこか、何かが実行ファイル自体を実行すると間違っている... – Skulliam

+0

多分あなたは実行パスを設定する必要がありますか? – kamp

関連する問題