You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批处理文件中通过reg query获取OneDrive for Business文档路径异常求助

解决OneDrive for Business默认文档路径批处理获取不全的问题

问题描述

直接在命令提示符执行:

reg query "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Personal

能得到完整路径:C:\Users\*username*\OneDrive - *companyName*\Documents,但使用以下批处理代码时,只能得到C:\Users\*username*\OneDrive:

for /f "tokens=3" %%i in ('reg.exe query "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Personal"')do (set ValueValue=%%i)
@echo Value Value = %ValueValue%

问题原因

reg query的输出中,目标路径包含空格,tokens=3仅提取了空格分隔的第三个字段,后续的- companyName\Documents被当作独立字段未被捕获,导致路径被截断。

修正方法

方法一:用tokens=3*捕获剩余所有内容

修改for循环的tokens参数,3*表示将第三个字段赋值给%%i,剩余的所有内容(包括空格)赋值给%%j,再将两者拼接得到完整路径:

@echo off
for /f "tokens=3*" %%i in ('reg.exe query "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Personal"')do (
    set "ValueValue=%%i %%j"
)
@echo Value Value = %ValueValue%

方法二:取消分隔符捕获整行,再提取路径

通过delims=取消空格分隔规则,捕获整行内容后,用字符串替换去掉路径前的无关部分:

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('reg.exe query "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Personal"')do (
    set "line=%%a"
    set "ValueValue=!line:*Personal    =!"
)
@echo Value Value = %ValueValue%
endlocal

注:需要启用延迟变量扩展(setlocal enabledelayedexpansion),因为循环内修改并读取变量依赖该特性。

内容的提问来源于stack exchange,提问作者fureelmusic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 03:52:15