0

AutoRun.inf ファイルを含むさまざまな CD があります。ご存知のように、AutoRun.inf はセキュリティ リスクのために Windows 7 では無効になっています。open= の後に .inf 内のテキストを抽出し、名前が何であれ、アプリケーションを実行するバッチ ファイルを作成して実行できるかどうかを知りたいです。たとえば、次の .inf ファイルがあるとします。

[autorun]
open=Program1.exe

テキスト Program1.exe を抽出し、D:\Program1.exe を実行してバッチからプログラムを実行するバッチを作成することは可能でしょうか (D:\ が CD: ドライブであると仮定します)。

Program1.exe は変数であり、常に変化することに注意してください。唯一の定数は、CD が入っているドライブ文字 (例では D:\) です。

明確化が必要な場合、これが可能である場合、または私が提示したシナリオを解決するためのその他の提案があればお知らせください。助けてくれてありがとう!:)

< 編集 >

返信ありがとうございます。私はあなたのコードを試し、Cd ドライブのドライブを F:\ に変更しました。以下を参照してください。プログラムを実行することができず、ドライブ文字以外にもう 1 つの不一致があることに気付きました。一部の .inf ファイルでは、open= ファイルの後に追加の行があります。以下に例を示します。

[autorun]
open=Program1.exe
additional text 1
additional text 2

あなたが提供したコードを変更して、コードが最後の行の情報を取得しないようにする必要がありますか?

これは D:\ ドライブから F:\ ドライブへの編集です。すべて取得できましたか?

@echo on
setlocal ENABLEDELAYEDEXPANSION

set _drive=F:

cd /f !_drive!\
for /f "tokens=1,2* delims==" %%i in ('type autorun.inf') do (
  if "%%i"=="open" set _cmd=%%j
)
if not defined _cmd (
  echo Unable to parse autorun.inf and find 'open='
) else (
  !_drive!\!_cmd!
)


endlocal
4

1 に答える 1

1

このようなものがうまくいくはずです。ただし、エラー チェックはほとんど追加しませんでした。

@echo off
setlocal ENABLEDELAYEDEXPANSION

set _drive=F:
set _cmd=

cd /d !_drive!\
for /f "tokens=1,2* delims==" %%i in (autorun.inf) do (
  if "%%i"=="open" set _cmd=%%j
  if "%%i"=="Open" set _cmd=%%j
  if "%%i"=="OPEN" set _cmd=%%j
)
if not defined _cmd (
  echo Unable to parse autorun.inf and find 'open='
) else (
  !_drive!\!_cmd!
)

endlocal
于 2013-12-03T22:36:58.160 に答える