AutoRun.inf的批处理文件

时间:2013-12-03 21:36:54

标签: batch-file inf

我有各种各样的CD,上面有AutoRun.inf文件。众所周知,在Windows 7上已禁用AutoRun.inf以应对安全风险。我想知道是否可以创建并运行批处理文件,该文件将在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

1 个答案:

答案 0 :(得分: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