Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file AutoRun.inf的批处理文件_Batch File_Inf - Fatal编程技术网

Batch file AutoRun.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:驱动器)从批处理中执行程序 请注

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

像这样的东西应该对你有用。尽管如此,我添加了很少的错误检查

@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
。有很多方法可以检查这三种情况。我这样做也许是最容易阅读/理解的…太棒了,谢谢你的帮助!我要进去看看/?这是一个巨大的帮助和伟大的开始,我可以参考你写的和学到的,非常感谢我的朋友!愿你的好意得到多次回报