Batch file AutoRun.inf的批处理文件
我有各种各样的CD,上面有AutoRun.inf文件。众所周知,由于存在安全风险,Windows 7上已禁用AutoRun.inf。我想知道是否有可能创建并运行一个批处理文件,在open=之后提取.inf中的文本,然后运行应用程序,不管它的名称是什么。例如,如果我们有以下.inf文件:Batch file AutoRun.inf的批处理文件,batch-file,inf,Batch File,Inf,我有各种各样的CD,上面有AutoRun.inf文件。众所周知,由于存在安全风险,Windows 7上已禁用AutoRun.inf。我想知道是否有可能创建并运行一个批处理文件,在open=之后提取.inf中的文本,然后运行应用程序,不管它的名称是什么。例如,如果我们有以下.inf文件: [autorun] open=Program1.exe 是否可以编写一个批处理来提取文本Program1.exe,然后使用运行的D:\Program1.exe(假设D:\是CD:驱动器)从批处理中执行程序 请注
[autorun]
open=Program1.exe
是否可以编写一个批处理来提取文本Program1.exe,然后使用运行的D:\Program1.exe(假设D:\是CD:驱动器)从批处理中执行程序
请注意,Program1.exe是一个变量,并且不断变化,唯一的常量是CD所在的驱动器号,在示例中为D:\
请让我知道是否需要任何澄清,如果这是可能的,或任何其他建议,以解决我目前的情况。谢谢你的帮助!:)
[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
像这样的东西应该对你有用。尽管如此,我添加了很少的错误检查
@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
你试过什么了吗?最好将您尝试过的代码发布,然后提问。这一个很简单,所以我可能只是键入一个答案。。。但是如果你提供最初的代码并询问相关问题,这仍然是最好的。我还没有尝试过任何东西,我只熟悉最基本的知识。请参阅主帖子。你应该在我的回答中添加你的问题--“它会忽略
附加文本1
和附加文本2
”答案是肯定的。它将仅在打开=
后拉取信息以执行。但是,Open=
与Open=
不同,因此如果不进行额外编码,它将无法处理该变量或任何其他变量。您应该在CMD提示符下键入for/?
以了解有关for
命令的详细信息。这样,您就可以了解批处理文件在做什么,并可能根据您的特殊需要对其进行自定义。我调整了代码以处理open
、open
和open
。有很多方法可以检查这三种情况。我这样做也许是最容易阅读/理解的…太棒了,谢谢你的帮助!我要进去看看/?这是一个巨大的帮助和伟大的开始,我可以参考你写的和学到的,非常感谢我的朋友!愿你的好意得到多次回报