if sys.argv[0] != '%windir%\\blabla.exe'
Что вы пытаетесь сделать здесь?
argv[0]
- это, как правило, имя файла сценария, который вы вызываете. Казалось бы, вряд ли это будет blabla.exe
, если только вы не используете какой-то инструмент для упаковки, чтобы скомпилировать себя в EXE. Если вы хотите посмотреть на первый аргумент, переданный скрипту, см. sys.argv[1]
.
Кроме того, когда вы используете %EnvironmentVariable%
из консоли, оболочка Windows заменит имя переменной на ее содержимое. Поэтому, когда вы наберете myscript.py %windir%\blabla.exe
, Windows заменит его на myscript.py C:\Windows\blabla.exe
(или аналогичный) до того, как ваш скрипт увидит, и ваше сравнение не удастся, потому что имя переменной больше не существует.
Вы можете использовать os.path.expandvars
, чтобы сделать такую же замену своим собственным строкам (или просто прочитать os.environ
самостоятельно). Вы также можете абсолютизировать путь, чтобы сравнить реальный эффективный путь, не беспокоясь об относительных путях:
blapath= os.path.expandvars(r'%WinDir%\blabla.exe')
if os.path.abspath(sys.argv[1])==os.path.abspath(blapath):
...
В этом случае вы также можете рассмотреть os.path.normcase
использование обоих путей, чтобы учесть нечувствительность к регистру Windows.