问题描述
我想通过 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 应用程序都不会这样做,因此任何批处理脚本都不应该这样做。