我正在努力将批处理文件的功能集成到一个更大的PowerShell文件中(也可以做其他事情),这样我最终可以摆脱一些较小的批处理文件。
我遇到了这样的一行:
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
使用.dll文件作为某种配置文件运行.exe吗?
答案 0 :(得分:2)
在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而不指定其文件夹。
答案 1 :(得分:1)
执行不包含扩展名的命令时,cmd.exe
使用%PATHEXT%
变量的值:
SET PATHEXT
它将补充所列顺序中的每个条目作为替换扩展名,直到成功或全部尝试。
正如您将注意到,第一个条目不太可能显示为.EXE
,因此我建议您的新方法恢复为扩展名为thing.exe
的全名。