Why does a file get opened when I write its name, without extensions, in the command line?












41














On Windows 10, I have a file called truffle.js in my current folder.
I write truffle in the cmd window, expecting to invoke the truffle program which resides elsewhere on my path.



Instead, truffle.js is opened in my favorite IDE (.js files are associated with that IDE). I thought this behavior is only like this for executable files, .bat, .com and .exe. Why does it happen for a .js file?



Note: I subsequently discovered I have no truffle at all installed on my path, but my question remains: why is Windows completing the extension which I did not specify on a non-executable file?



Even after installing truffle and restarting cmd, I can't get the real truffle to run in a folder that contains a file truffle.js.










share|improve this question




















  • 1




    Server 2008 won't run executables from CMD prompt without .exe extension
    – phuclv
    Jun 11 at 14:57










  • Possible duplicate of Command prompt launches "java.exe" with .exe extension, but not without .exe extension
    – phuclv
    Jun 11 at 14:58










  • Because Windows will open any file with extensions that have an associated application. It's saving you from having to type c:pathapplication.exe c:pathfilename.ext rather than just filename.
    – ashleedawg
    Jun 13 at 4:53
















41














On Windows 10, I have a file called truffle.js in my current folder.
I write truffle in the cmd window, expecting to invoke the truffle program which resides elsewhere on my path.



Instead, truffle.js is opened in my favorite IDE (.js files are associated with that IDE). I thought this behavior is only like this for executable files, .bat, .com and .exe. Why does it happen for a .js file?



Note: I subsequently discovered I have no truffle at all installed on my path, but my question remains: why is Windows completing the extension which I did not specify on a non-executable file?



Even after installing truffle and restarting cmd, I can't get the real truffle to run in a folder that contains a file truffle.js.










share|improve this question




















  • 1




    Server 2008 won't run executables from CMD prompt without .exe extension
    – phuclv
    Jun 11 at 14:57










  • Possible duplicate of Command prompt launches "java.exe" with .exe extension, but not without .exe extension
    – phuclv
    Jun 11 at 14:58










  • Because Windows will open any file with extensions that have an associated application. It's saving you from having to type c:pathapplication.exe c:pathfilename.ext rather than just filename.
    – ashleedawg
    Jun 13 at 4:53














41












41








41


4





On Windows 10, I have a file called truffle.js in my current folder.
I write truffle in the cmd window, expecting to invoke the truffle program which resides elsewhere on my path.



Instead, truffle.js is opened in my favorite IDE (.js files are associated with that IDE). I thought this behavior is only like this for executable files, .bat, .com and .exe. Why does it happen for a .js file?



Note: I subsequently discovered I have no truffle at all installed on my path, but my question remains: why is Windows completing the extension which I did not specify on a non-executable file?



Even after installing truffle and restarting cmd, I can't get the real truffle to run in a folder that contains a file truffle.js.










share|improve this question















On Windows 10, I have a file called truffle.js in my current folder.
I write truffle in the cmd window, expecting to invoke the truffle program which resides elsewhere on my path.



Instead, truffle.js is opened in my favorite IDE (.js files are associated with that IDE). I thought this behavior is only like this for executable files, .bat, .com and .exe. Why does it happen for a .js file?



Note: I subsequently discovered I have no truffle at all installed on my path, but my question remains: why is Windows completing the extension which I did not specify on a non-executable file?



Even after installing truffle and restarting cmd, I can't get the real truffle to run in a folder that contains a file truffle.js.







windows cmd.exe






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jun 11 at 14:08









JakeGould

30.9k1093137




30.9k1093137










asked Jun 11 at 13:34









ripper234

4,3282973105




4,3282973105








  • 1




    Server 2008 won't run executables from CMD prompt without .exe extension
    – phuclv
    Jun 11 at 14:57










  • Possible duplicate of Command prompt launches "java.exe" with .exe extension, but not without .exe extension
    – phuclv
    Jun 11 at 14:58










  • Because Windows will open any file with extensions that have an associated application. It's saving you from having to type c:pathapplication.exe c:pathfilename.ext rather than just filename.
    – ashleedawg
    Jun 13 at 4:53














  • 1




    Server 2008 won't run executables from CMD prompt without .exe extension
    – phuclv
    Jun 11 at 14:57










  • Possible duplicate of Command prompt launches "java.exe" with .exe extension, but not without .exe extension
    – phuclv
    Jun 11 at 14:58










  • Because Windows will open any file with extensions that have an associated application. It's saving you from having to type c:pathapplication.exe c:pathfilename.ext rather than just filename.
    – ashleedawg
    Jun 13 at 4:53








1




1




Server 2008 won't run executables from CMD prompt without .exe extension
– phuclv
Jun 11 at 14:57




Server 2008 won't run executables from CMD prompt without .exe extension
– phuclv
Jun 11 at 14:57












Possible duplicate of Command prompt launches "java.exe" with .exe extension, but not without .exe extension
– phuclv
Jun 11 at 14:58




Possible duplicate of Command prompt launches "java.exe" with .exe extension, but not without .exe extension
– phuclv
Jun 11 at 14:58












Because Windows will open any file with extensions that have an associated application. It's saving you from having to type c:pathapplication.exe c:pathfilename.ext rather than just filename.
– ashleedawg
Jun 13 at 4:53




Because Windows will open any file with extensions that have an associated application. It's saving you from having to type c:pathapplication.exe c:pathfilename.ext rather than just filename.
– ashleedawg
Jun 13 at 4:53










1 Answer
1






active

oldest

votes


















75














Because %PATHEXT% is set to .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC by default. Note how it contains .js.



That means if you type a name, CMD will look for files with these extensions appended, in that order, in the current folder. Only after that will it consider what’s in %PATH%. This behavior cannot be changed. You can modify %PATHEXT% though, like any other environment variable.



You can use the WHERE command to check which path would be opened (e.g. where truffle), which will automatically search both %PATH% and %PATHEXT% the same way CMD would.






share|improve this answer



















  • 3




    To clarify, you mean that windows will take an input, add those file extensions to the input to see if it matches, before looking in the PATH.
    – TankorSmash
    Jun 11 at 16:22






  • 9




    Also note that OP's original logic holds - these are all executables (in some sense of the word...), some of them just happen to also be human readable.
    – Adonalsium
    Jun 11 at 19:33






  • 2




    @TankorSmash Windows, as in the CreateProcess and I think also the ShellExecute(Ex) APIs, doesn't look at PATHEXT. The extension search is only implemented within the default shells (cmd.exe and powershell.exe). That said, CreateProcess and ShellExecute(Ex) will append .exe specifically.
    – Bob
    Jun 12 at 7:02






  • 3




    @hBy2Py if an attacker has enough access to plant a file on your system and execute it, you're already screwed, no matter the file extension or the value of the %PATHEXT% environment variable.
    – zakinster
    Jun 12 at 16:40






  • 2




    @JustinC.B. Apples and oranges. Notepad++ is not a Microsoft product (and not bundled with Windows, etc.). Naming aside, it's as much (or little) of a replacement for Notepad as Sublime Text or even VSCode are. PowerShell, on the other hand, has first-party support and is increasingly becoming the (bundled) default over the legacy Command Prompt, and much of the new commands introduced over the last few years are PowerShell-only.
    – Bob
    Jun 15 at 1:24













Your Answer








StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "3"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1330358%2fwhy-does-a-file-get-opened-when-i-write-its-name-without-extensions-in-the-com%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









75














Because %PATHEXT% is set to .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC by default. Note how it contains .js.



That means if you type a name, CMD will look for files with these extensions appended, in that order, in the current folder. Only after that will it consider what’s in %PATH%. This behavior cannot be changed. You can modify %PATHEXT% though, like any other environment variable.



You can use the WHERE command to check which path would be opened (e.g. where truffle), which will automatically search both %PATH% and %PATHEXT% the same way CMD would.






share|improve this answer



















  • 3




    To clarify, you mean that windows will take an input, add those file extensions to the input to see if it matches, before looking in the PATH.
    – TankorSmash
    Jun 11 at 16:22






  • 9




    Also note that OP's original logic holds - these are all executables (in some sense of the word...), some of them just happen to also be human readable.
    – Adonalsium
    Jun 11 at 19:33






  • 2




    @TankorSmash Windows, as in the CreateProcess and I think also the ShellExecute(Ex) APIs, doesn't look at PATHEXT. The extension search is only implemented within the default shells (cmd.exe and powershell.exe). That said, CreateProcess and ShellExecute(Ex) will append .exe specifically.
    – Bob
    Jun 12 at 7:02






  • 3




    @hBy2Py if an attacker has enough access to plant a file on your system and execute it, you're already screwed, no matter the file extension or the value of the %PATHEXT% environment variable.
    – zakinster
    Jun 12 at 16:40






  • 2




    @JustinC.B. Apples and oranges. Notepad++ is not a Microsoft product (and not bundled with Windows, etc.). Naming aside, it's as much (or little) of a replacement for Notepad as Sublime Text or even VSCode are. PowerShell, on the other hand, has first-party support and is increasingly becoming the (bundled) default over the legacy Command Prompt, and much of the new commands introduced over the last few years are PowerShell-only.
    – Bob
    Jun 15 at 1:24


















75














Because %PATHEXT% is set to .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC by default. Note how it contains .js.



That means if you type a name, CMD will look for files with these extensions appended, in that order, in the current folder. Only after that will it consider what’s in %PATH%. This behavior cannot be changed. You can modify %PATHEXT% though, like any other environment variable.



You can use the WHERE command to check which path would be opened (e.g. where truffle), which will automatically search both %PATH% and %PATHEXT% the same way CMD would.






share|improve this answer



















  • 3




    To clarify, you mean that windows will take an input, add those file extensions to the input to see if it matches, before looking in the PATH.
    – TankorSmash
    Jun 11 at 16:22






  • 9




    Also note that OP's original logic holds - these are all executables (in some sense of the word...), some of them just happen to also be human readable.
    – Adonalsium
    Jun 11 at 19:33






  • 2




    @TankorSmash Windows, as in the CreateProcess and I think also the ShellExecute(Ex) APIs, doesn't look at PATHEXT. The extension search is only implemented within the default shells (cmd.exe and powershell.exe). That said, CreateProcess and ShellExecute(Ex) will append .exe specifically.
    – Bob
    Jun 12 at 7:02






  • 3




    @hBy2Py if an attacker has enough access to plant a file on your system and execute it, you're already screwed, no matter the file extension or the value of the %PATHEXT% environment variable.
    – zakinster
    Jun 12 at 16:40






  • 2




    @JustinC.B. Apples and oranges. Notepad++ is not a Microsoft product (and not bundled with Windows, etc.). Naming aside, it's as much (or little) of a replacement for Notepad as Sublime Text or even VSCode are. PowerShell, on the other hand, has first-party support and is increasingly becoming the (bundled) default over the legacy Command Prompt, and much of the new commands introduced over the last few years are PowerShell-only.
    – Bob
    Jun 15 at 1:24
















75












75








75






Because %PATHEXT% is set to .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC by default. Note how it contains .js.



That means if you type a name, CMD will look for files with these extensions appended, in that order, in the current folder. Only after that will it consider what’s in %PATH%. This behavior cannot be changed. You can modify %PATHEXT% though, like any other environment variable.



You can use the WHERE command to check which path would be opened (e.g. where truffle), which will automatically search both %PATH% and %PATHEXT% the same way CMD would.






share|improve this answer














Because %PATHEXT% is set to .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC by default. Note how it contains .js.



That means if you type a name, CMD will look for files with these extensions appended, in that order, in the current folder. Only after that will it consider what’s in %PATH%. This behavior cannot be changed. You can modify %PATHEXT% though, like any other environment variable.



You can use the WHERE command to check which path would be opened (e.g. where truffle), which will automatically search both %PATH% and %PATHEXT% the same way CMD would.







share|improve this answer














share|improve this answer



share|improve this answer








edited Dec 9 at 13:35









grawity

231k35486544




231k35486544










answered Jun 11 at 14:02









Daniel B

33.2k76087




33.2k76087








  • 3




    To clarify, you mean that windows will take an input, add those file extensions to the input to see if it matches, before looking in the PATH.
    – TankorSmash
    Jun 11 at 16:22






  • 9




    Also note that OP's original logic holds - these are all executables (in some sense of the word...), some of them just happen to also be human readable.
    – Adonalsium
    Jun 11 at 19:33






  • 2




    @TankorSmash Windows, as in the CreateProcess and I think also the ShellExecute(Ex) APIs, doesn't look at PATHEXT. The extension search is only implemented within the default shells (cmd.exe and powershell.exe). That said, CreateProcess and ShellExecute(Ex) will append .exe specifically.
    – Bob
    Jun 12 at 7:02






  • 3




    @hBy2Py if an attacker has enough access to plant a file on your system and execute it, you're already screwed, no matter the file extension or the value of the %PATHEXT% environment variable.
    – zakinster
    Jun 12 at 16:40






  • 2




    @JustinC.B. Apples and oranges. Notepad++ is not a Microsoft product (and not bundled with Windows, etc.). Naming aside, it's as much (or little) of a replacement for Notepad as Sublime Text or even VSCode are. PowerShell, on the other hand, has first-party support and is increasingly becoming the (bundled) default over the legacy Command Prompt, and much of the new commands introduced over the last few years are PowerShell-only.
    – Bob
    Jun 15 at 1:24
















  • 3




    To clarify, you mean that windows will take an input, add those file extensions to the input to see if it matches, before looking in the PATH.
    – TankorSmash
    Jun 11 at 16:22






  • 9




    Also note that OP's original logic holds - these are all executables (in some sense of the word...), some of them just happen to also be human readable.
    – Adonalsium
    Jun 11 at 19:33






  • 2




    @TankorSmash Windows, as in the CreateProcess and I think also the ShellExecute(Ex) APIs, doesn't look at PATHEXT. The extension search is only implemented within the default shells (cmd.exe and powershell.exe). That said, CreateProcess and ShellExecute(Ex) will append .exe specifically.
    – Bob
    Jun 12 at 7:02






  • 3




    @hBy2Py if an attacker has enough access to plant a file on your system and execute it, you're already screwed, no matter the file extension or the value of the %PATHEXT% environment variable.
    – zakinster
    Jun 12 at 16:40






  • 2




    @JustinC.B. Apples and oranges. Notepad++ is not a Microsoft product (and not bundled with Windows, etc.). Naming aside, it's as much (or little) of a replacement for Notepad as Sublime Text or even VSCode are. PowerShell, on the other hand, has first-party support and is increasingly becoming the (bundled) default over the legacy Command Prompt, and much of the new commands introduced over the last few years are PowerShell-only.
    – Bob
    Jun 15 at 1:24










3




3




To clarify, you mean that windows will take an input, add those file extensions to the input to see if it matches, before looking in the PATH.
– TankorSmash
Jun 11 at 16:22




To clarify, you mean that windows will take an input, add those file extensions to the input to see if it matches, before looking in the PATH.
– TankorSmash
Jun 11 at 16:22




9




9




Also note that OP's original logic holds - these are all executables (in some sense of the word...), some of them just happen to also be human readable.
– Adonalsium
Jun 11 at 19:33




Also note that OP's original logic holds - these are all executables (in some sense of the word...), some of them just happen to also be human readable.
– Adonalsium
Jun 11 at 19:33




2




2




@TankorSmash Windows, as in the CreateProcess and I think also the ShellExecute(Ex) APIs, doesn't look at PATHEXT. The extension search is only implemented within the default shells (cmd.exe and powershell.exe). That said, CreateProcess and ShellExecute(Ex) will append .exe specifically.
– Bob
Jun 12 at 7:02




@TankorSmash Windows, as in the CreateProcess and I think also the ShellExecute(Ex) APIs, doesn't look at PATHEXT. The extension search is only implemented within the default shells (cmd.exe and powershell.exe). That said, CreateProcess and ShellExecute(Ex) will append .exe specifically.
– Bob
Jun 12 at 7:02




3




3




@hBy2Py if an attacker has enough access to plant a file on your system and execute it, you're already screwed, no matter the file extension or the value of the %PATHEXT% environment variable.
– zakinster
Jun 12 at 16:40




@hBy2Py if an attacker has enough access to plant a file on your system and execute it, you're already screwed, no matter the file extension or the value of the %PATHEXT% environment variable.
– zakinster
Jun 12 at 16:40




2




2




@JustinC.B. Apples and oranges. Notepad++ is not a Microsoft product (and not bundled with Windows, etc.). Naming aside, it's as much (or little) of a replacement for Notepad as Sublime Text or even VSCode are. PowerShell, on the other hand, has first-party support and is increasingly becoming the (bundled) default over the legacy Command Prompt, and much of the new commands introduced over the last few years are PowerShell-only.
– Bob
Jun 15 at 1:24






@JustinC.B. Apples and oranges. Notepad++ is not a Microsoft product (and not bundled with Windows, etc.). Naming aside, it's as much (or little) of a replacement for Notepad as Sublime Text or even VSCode are. PowerShell, on the other hand, has first-party support and is increasingly becoming the (bundled) default over the legacy Command Prompt, and much of the new commands introduced over the last few years are PowerShell-only.
– Bob
Jun 15 at 1:24




















draft saved

draft discarded




















































Thanks for contributing an answer to Super User!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1330358%2fwhy-does-a-file-get-opened-when-i-write-its-name-without-extensions-in-the-com%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

flock() on closed filehandle LOCK_FILE at /usr/bin/apt-mirror

Mangá

 ⁒  ․,‪⁊‑⁙ ⁖, ⁇‒※‌, †,⁖‗‌⁝    ‾‸⁘,‖⁔⁣,⁂‾
”‑,‥–,‬ ,⁀‹⁋‴⁑ ‒ ,‴⁋”‼ ⁨,‷⁔„ ‰′,‐‚ ‥‡‎“‷⁃⁨⁅⁣,⁔
⁇‘⁔⁡⁏⁌⁡‿‶‏⁨ ⁣⁕⁖⁨⁩⁥‽⁀  ‴‬⁜‟ ⁃‣‧⁕‮ …‍⁨‴ ⁩,⁚⁖‫ ,‵ ⁀,‮⁝‣‣ ⁑  ⁂– ․, ‾‽ ‏⁁“⁗‸ ‾… ‹‡⁌⁎‸‘ ‡⁏⁌‪ ‵⁛ ‎⁨ ―⁦⁤⁄⁕