2017-06-08 42 views
-2

我正在將批處理文件的功能集成到一個更大的PowerShell文件中(這也起到了其他作用),所以我最終可以刪除一些較小的批處理文件。調用沒有擴展名的.exe文件,但是使用-i

我通過管道,看起來像這樣走過來:

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

@TessellatingHeckler該文件夾中該名稱的唯一另一件事是'thing.exe.config'。它如何知道要引用哪個? – jdope

+4

它會在'%PATHEXT%'中找到擴展名。但爲什麼你在乎它在做什麼?只要檢查二進制文件的存在,然後像在批處理文件中一樣運行''C:\ path \ thing「-i」C:\ otherpath \ something.dll「。第一個參數後面的所有東西都與用exe調用文件無關 –

+0

@LưuVĩnhPhúc你說得對。我只是想確定它沒有做一些特別的事情,我可能會在將它轉換爲PowerShell時錯過。另外,我不知道是否在PowerShell中運行沒有擴展的'thing'。 – jdope

回答

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沒有指定的文件夾。

+0

有趣。謝謝(你的)信息! – jdope

1

當執行不包含一個擴展的命令時,cmd.exe使用%PATHEXT%變量的值(一個或多個):

SET PATHEXT 

將補充列爲更換延伸直到成功或順序中的每個條目都已經嘗試過了。

正如您將會注意到,第一個條目不太可能會顯示爲.EXE,因此我建議您的新方法恢復爲擴展名爲thing.exe的全名。

相關問題