鉴于 Raymond Chen's description 和传统智慧,我对一些观察结果很好奇:
首先,如果我在启动时在批处理窗口中快速运行 set
(最新的 Windows 10 家庭版),那么我会得到我希望建立的环境变量的列表。
但稍等片刻,其他一些变量会在进一步的 cmd
实例 FPS_BROWSER_APP_PROFILE_STRING
和 FPS_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
实例中可用。
我正在寻找对我的观察的确认以及可能适用的规则。