@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 "StartupFolder=%UserProfile%\Startup"
echo Startup folder is: "%StartupFolder%"
endlocal
1条答案
按热度按时间nukf8bse1#
可以使用.NET's
Environment.SpecialFolder
。此PowerShell命令将为您提供启动文件夹的路径如果你真的想使用cmd,那么你可以这样调用上面的命令
并使用use
for /f
将其保存到一个变量中或者使用混合Batch/VBS解决方案
或混合批次/Js
0x 07这里是Shell Special Folder Constant for startup
只需将上面的2个片段保存为 *.bat文件并运行。或者剥离批料部分并使其成为纯VBS/Js溶液。
事实上,这些代码段使用COM对象,因此它们可以用任何支持COM对象的语言编写,例如PowerShell:
或
使用纯批处理获得路径是可能的,而不求助于PowerShell、VBS或Js,但要棘手得多
注册表中包含特殊文件夹路径的2个键:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
和HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
。下面是从this answer中解析它们的方法: