环境变量 - 时间和原因

时间:2021-03-20 13:29:14

标签: batch-file

鉴于 Raymond Chen's description 和传统智慧,我对一些观察结果很好奇:

首先,如果我在启动时在批处理窗口中快速运行 set(最新的 Windows 10 家庭版),那么我会得到我希望建立的环境变量的列表。

但稍等片刻,其他一些变量会在进一步的 cmd 实例 FPS_BROWSER_APP_PROFILE_STRINGFPS_BROWSER_USER_PROFILE_STRING 上创建 - 显然是由 Edge 浏览器创建的。

我有一个由启动目录中的链接执行的初始化批处理。此批处理备份一些重要目录并执行一些其他任务。其中一项任务是删除 DROPBOX 烦人地强加在图标上的图标 zapiconoverlays

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

:: Get rid of dropbox-generated icon overlays
:: Provide a parameter to NOT restart explorer

SET "spaces=                                    "
(
ECHO Windows Registry Editor Version 5.00
ECHO/
FOR /L %%I IN (0,1,10) DO (
 FOR /L %%L IN (101,1,110) DO (
  SET /a iter=%%L
  FOR %%K IN (WOW6432Node\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers
              Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers
             ) DO (
   ECHO [-HKEY_LOCAL_MACHINE\SOFTWARE\%%K\!spaces:~0,%%I!DropboxExt!iter:~-2!]
  )
 )
)
)>u:\zapiconoverlays.REG

regedit /s u:\zapiconoverlays.REG
del u:\zapiconoverlays.REG

SET "spaces=%~1"
SET "iter="
IF NOT DEFINED spaces CALL restartexplorer
GOTO :eof

我通常不带参数运行,所以执行 restartexplorer

@ECHO OFF
taskkill /f /im explorer.exe
DEL %userprofile%\AppData\Local\IconCache.db /a 2>nul
START explorer.exe

奇怪的是,在执行 restartexplorer 时在本地环境中建立的变量然后被传播到进一步的 cmd 实例。例如,我将当前日期/时间处理为各种环境变量。如果我在初始化批处理中运行 zapiconoverlays 的第一件事(在 setlocal 之后),那么一切都按我的预期运行,但是如果我在建立日期时间变量之后调用 zapiconoverlays,那么日期时间变量在更多 cmd 实例中可用。

我正在寻找对我的观察的确认以及可能适用的规则。

0 个答案:

没有答案
相关问题