返回列表 发帖

[注册表类] 【已解决】批处理CD /D 无法进入变量路径的吗?

本帖最后由 hztccy 于 2024-12-31 16:38 编辑
  1. @echo off
  2. ren 查询注册表并获取桌面路径
  3. for /f "tokens=3" %%i in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v desktop') do (    Set DesktopPath=%%i)
  4. rem 进入目标
  5. CD /D "%DesktopPath%"
  6. ren 确认变量路径已被获取
  7. echo "%DesktopPath%"
复制代码
有意思的来了,我在有的电脑可以直接使用这样的方法CD进入,但是有的电脑却会提示【系统找不到制定的路径】。

通过echo "%DesktopPath%"是确实获取了路径的,说有空格吧,但是我已经用了双引号,说获取不到位置吧我用echo已经确认了变量的路径。

懵逼了

call set 或者call cd /d
77七 发表于 2024-12-30 17:10



    在我自己家里的电脑加入了call cd /d确实成功获取路径了。明天到其他地方试试

TOP

直接这样不行吗?


echo "%USERPROFILE%\Desktop"
pause >nul
ygqiang 发表于 2024-12-30 20:33



    我一楼的帖子已经写了,在一部分电脑是可以获取成功的,一部分电脑是不可以获取的,目前我正在观测是什么引起的这一个现象,大概率就如二楼的大哥说的,可能需要加入call调用以确保在每一部电脑都可以成功获取。目前我在我自己家里,不管是否加入call都可以成功获取路径,所以这才是我纠结的。

TOP

回复  hztccy

   采用 for /f ... %%i in () do ... 句式获取的返回值其实质是管道文件数据流,如同采用 ...
aloha20200628 发表于 2024-12-30 21:07



    哥,你的太复杂了,就我着榆木脑袋想不出这么详细的公式方法,因为我习惯了直接for 。。快捷高效。233

TOP

回复 2# 77七


    哥,能帮我解释一下为啥添加了一个call 引用就可以正常获取了。我测试了大概7-8台电脑都正产了。

TOP

回复 9# 77七


    原来如此,感谢大佬解释

TOP

返回列表