我有各种各样的CD,上面有AutoRun.inf文件。众所周知,由于安全风险,AutoRun.inf在Windows7上已被禁用。我想知道是否可以创建并运行一个批处理文件,在open=之后提取.inf中的文本,然后运行应用程序,不管它的名称是什么。例如,如果我们有以下.inf文件:
[autorun]
open=Program1.exe请注意,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发布于 2013-12-04 06:36:58
像这样的东西应该可以帮你解决这个问题。尽管如此,我添加了很少的错误检查。
@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!
)
endlocalhttps://stackoverflow.com/questions/20362199
复制相似问题