How to detect if a file is executable on Windows?

Chris Angelico rosuav at gmail.com
Tue Feb 19 13:13:04 EST 2019


On Wed, Feb 20, 2019 at 5:05 AM Dennis Lee Bieber <wlfraed at ix.netcom.com> wrote:
>
> On 19 Feb 2019 13:58:18 GMT, jureq <jureq at nowhere.no> declaimed the
> following:
>
> >> I could also use the 2 first bytes of a file and determine if the file
> >> is a binary because on Windows, the executable files start with b'MZ'.
> >
> >Is .bat executable?
>
>         Or any of the extensions on
> PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.py;.pyw
>

I guess you have to define the question better for Windows, since
there's no single definition of "executable". If you mean "typing just
the base name of this file at the shell will result in it being run",
then PATHEXT is the correct answer. If you mean "this thing is
actually inherently executable", then you probably want to check if it
begins MZ, but that's not certain (COM files still seem to be
supported, and they have no header whatsoever). If you mean
"double-clicking this thing will run it", I think there are tools that
allow you to do the registry lookup conveniently to see if something's
associated.

ChrisA


More information about the Python-list mailing list