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:\。

请让我知道是否需要任何澄清,如果可能,或任何其他建议来解决我目前的情况。感谢您的任何帮助!:)

< 编辑 >

感谢您的回复。我尝试了您的代码并将驱动器更改为 F:\ 用于 Cd 驱动器,请参见下文。我无法让它运行程序,并注意到驱动器号以外的另一个差异。在某些 .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 回答