我有各种各样的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
答案 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