Windows 10 在 CMD 中查找启动文件夹

问题描述

我想通过 CMD 在 Windows 10 中找到 Autorun-Folder 的位置。 我试过了

dir /AD Startup

但我收到以下错误

Volume in drive C has no label.
Volume Serial Number is $here_is_the_serial_number
File Not Found

我知道还有其他方法可以找到自动运行文件夹,但我需要通过 CMD 找到它。

有谁知道我如何找到它?

解决方法

NV。我知道了。如果您有同样的问题,以下命令对我有用:

dir Startup /s
,

无需在驱动器的所有目录中搜索名为 Startup 的文件夹。

从 Windows Vista 开始,默认

  • %ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Startup
    这是所有用户在开始菜单中的公共启动文件夹。
  • %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
    这是当前用户开始菜单中的启动文件夹。

获取当前用户真正使用的Startup文件夹的批处理文件是:

@echo off
setlocal EnableExtensions DisableDelayedExpansion

set "StartupFolder="
for /F "skip=1 tokens=1,2*" %%I in ('%SystemRoot%\System32\reg.exe QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Startup 2^>nul') do if /I "%%I" == "Startup" if not "%%~K" == "" if "%%J" == "REG_SZ" (set "StartupFolder=%%~K") else if "%%J" == "REG_EXPAND_SZ" call set "StartupFolder=%%~K"
if not defined StartupFolder for /F "skip=1 tokens=1,2*" %%I in ('%SystemRoot%\System32\reg.exe QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Startup 2^>nul') do if /I "%%I" == "Startup" if not "%%~K" == "" if "%%J" == "REG_SZ" (set "StartupFolder=%%~K") else if "%%J" == "REG_EXPAND_SZ" call set "StartupFolder=%%~K"
if not defined StartupFolder set "StartupFolder=\"
if "%StartupFolder:~-1%" == "\" set "StartupFolder=%StartupFolder:~0,-1%"
if not defined StartupFolder set "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup"

echo Startup folder of current user is:
echo "%StartupFolder%"

endlocal

有关此代码的完整说明,请阅读 this answer,其中包含用于获取当前用户的真实 Desktop 文件夹的相同批处理文件代码。我刚刚将所有出现的 Desktop 替换为 Startup 以更改 Startup shell 文件夹的代码。

获取所有用户真正使用的通用启动文件夹的批处理文件是:

@echo off
setlocal EnableExtensions DisableDelayedExpansion

set "StartupFolder="
for /F "skip=1 tokens=2,3*" %%I in ('%SystemRoot%\System32\reg.exe QUERY "HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Common Startup" 2^>nul') do if /I "%%I" == "Startup" if not "%%~K" == "" if "%%J" == "REG_SZ" (set "StartupFolder=%%~K") else if "%%J" == "REG_EXPAND_SZ" call set "StartupFolder=%%~K"
if not defined StartupFolder for /F "skip=1 tokens=2,3*" %%I in ('%SystemRoot%\System32\reg.exe QUERY "HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Common Startup" 2^>nul') do if /I "%%I" == "Startup" if not "%%~K" == "" if "%%J" == "REG_SZ" (set "StartupFolder=%%~K") else if "%%J" == "REG_EXPAND_SZ" call set "StartupFolder=%%~K"
if not defined StartupFolder set "StartupFolder=\"
if "%StartupFolder:~-1%" == "\" set "StartupFolder=%StartupFolder:~0,-1%"
if not defined StartupFolder set "StartupFolder=%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Startup"

echo Common startup folder for all users is:
echo "%StartupFolder%"

endlocal

两个 FOR 命令行也可以是:

for /F "skip=1 tokens=1-3*" %%I in ('%SystemRoot%\System32\reg.exe QUERY "HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Common Startup" 2^>nul') do if /I "%%I %%J" == "Common Startup" if not "%%~L" == "" if "%%K" == "REG_SZ" (set "StartupFolder=%%~L") else if "%%K" == "REG_EXPAND_SZ" call set "StartupFolder=%%~L"
if not defined StartupFolder for /F "skip=1 tokens=1-3*" %%I in ('%SystemRoot%\System32\reg.exe QUERY "HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Common Startup" 2^>nul') do if /I "%%I %%J" == "Common Startup" if not "%%~L" == "" if "%%K" == "REG_SZ" (set "StartupFolder=%%~L") else if "%%K" == "REG_EXPAND_SZ" call set "StartupFolder=%%~L"

这两个批处理文件解决方案也适用于 Windows XP,因为默认情况下文件夹名称取决于 Windows XP 的语言。

在驱动器上搜索 shell 文件夹始终是获取 shell 文件夹路径的错误方法。 Microsoft 编写的任何 Windows 应用程序都不会这样做,因此任何批处理脚本都不应该这样做。