Batch file 调用不带扩展名但带-i的.exe
我正致力于将批处理文件的功能集成到一个更大的PowerShell文件中(这也可以做其他事情),以便最终摆脱一些较小的批处理文件 我遇到了这样一条线:Batch file 调用不带扩展名但带-i的.exe,batch-file,cmd,Batch File,Cmd,我正致力于将批处理文件的功能集成到一个更大的PowerShell文件中(这也可以做其他事情),以便最终摆脱一些较小的批处理文件 我遇到了这样一条线: if exist "C:\path\thing.exe" ("C:\path\thing" -i "C:\otherpath\something.dll") 当第二行显示.exe名称但没有文件扩展名时,它引用的是什么 编辑:我在.exe上运行了一个/?,我认为这可能是相关的: /i <assembly_path> [ /r <
if exist "C:\path\thing.exe"
("C:\path\thing" -i "C:\otherpath\something.dll")
当第二行显示.exe名称但没有文件扩展名时,它引用的是什么
编辑:我在.exe上运行了一个/?
,我认为这可能是相关的:
/i <assembly_path> [ /r <...> ] [ /f ]
Installs an assembly to the global assembly cache. <assembly_path> is the
name of the file that contains the assembly manifest.
Example: /i myDll.dll /r FILEPATH c:\projects\myapp.exe "My App"
/i[/r][f]
将程序集安装到全局程序集缓存。是
包含程序集清单的文件的名称。
示例:/i myDll.dll/r文件路径c:\projects\myapp.exe“我的应用”
因此,我猜
-I
正在运行.exe,使用.dll文件作为某种配置文件?在Windows上,您可以运行可执行文件(带有.exe后缀),而无需命令行的扩展名
所以这是完全正确的:
"C:\path\thing" -i "C:\otherpath\something.dll"
在此命令中,-i
是可执行文件的参数。正确的语法可能是-i path\to\a\file.dll
,因此可执行文件使用dll。由于你的问题很笼统,很难说得更多
要理解,请尝试在CMD或PowerShell中运行xcopy:
xcopy /?
在本例中,xcopy是可执行文件,对应于C:\System32\xcopy.exe,/?
是命令的参数,解释了xcopy支持的所有可能参数
事实上,这也是可行的:
C:\Windows\System32\xcopy.exe /?
但是,由于C:\Windows\System32列在%Path%环境变量中,您可以直接调用xcopy,而无需指定其文件夹。当执行不包含扩展名的命令时,
cmd.exe
使用%PATHEXT%
变量的值:
SET PATHEXT
它将补充列为替换扩展的顺序中的每个条目,直到成功或全部尝试
正如您所注意到的,第一个条目不太可能显示为
.EXE
,因此我建议您的新方法恢复为扩展名为thing.EXE@TessellatingHeckler的全名。文件夹中唯一具有该名称的是thing.EXE.config
。它如何知道引用哪个?它将在%PATHEXT%
中找到扩展。但你为什么在乎它在做什么?只需检查二进制文件是否存在,然后像批处理文件一样运行“C:\path\thing”-i“C:\otherpath\something.dll”
。第一个are参数之后的所有内容都与使用exe或not@L你说得对。我只是想确定它没有做一些我在将其转换为PowerShell时可能会错过的花哨事情。我也不知道在PowerShell中是否可以不带扩展运行东西。@tessellingheckler为什么会这样?如果存在“thing1.exe”(somethingelse.exe),我可以说。我的意思是,为什么在没有扩展名的情况下,它会自动转到thing.exe
而不是thing.exe.config
,或者如果有类似thing.bat
或thing?并向下滚动至“命令搜索序列”标题。PowerShell命令解析记录在这里:有趣。谢谢你的信息!