无忧启动论坛

 找回密码
 注册
搜索

关于"我的文档"路径问题[已解决]

查看数: 7060 | 评论数: 19 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-9-3 20:02

正文摘要:

本帖最后由 Bluebells 于 2020-9-12 20:08 编辑 例如我要删除"我的文档"路径下的 Test 文件夹, 使用如下批处理代码: @echo off for /f "skip=2 tokens=2* delims= " %%i in ('reg query "HKCU\Software ...

回复

pznpt 发表于 2020-10-18 15:24:23
  1. @echo off
  2. for /f "skip=2 tokens=2*" %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Personal') do call echo,%%j
  3. pause
复制代码
quya 发表于 2020-10-12 15:50:18
本帖最后由 quya 于 2020-10-12 15:52 编辑

我也来贡献一下, 其实呢,不用再用一次for , 只需要call就可以了

例如 echo “有变量” 和 call  echo “有变量” 在没有变量的时候是一样的, 但有变量的时候后者会先把变量转换的。

所以也可以这么写

  1. @echo off
  2. for /f "skip=2 tokens=2* delims= " %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Personal') do call set Personal=%%j
  3. rd /s/q "%Personal%\Test"
复制代码



sairen139 发表于 2020-9-22 15:02:41
收藏,有点启发意义!
极度凶残 发表于 2020-9-14 18:54:42
magicgenius 发表于 2020-9-12 20:38
你真是不懂批处理啊!这能直接放在CMD中运行吗?得在批处理文件中!要不得去掉一个%.

哈哈!是不懂这些东西,平时只是拿那些大神分享的,没想到批处理和CMD是不一样。
magicgenius 发表于 2020-9-12 20:38:11

你真是不懂批处理啊!这能直接放在CMD中运行吗?得在批处理文件中!要不得去掉一个%.

点评

哈哈!是不懂这些东西,平时只是拿那些大神分享的,没想到批处理和CMD是不一样。  详情 回复 发表于 2020-9-14 18:54
Bluebells 发表于 2020-9-12 20:09:21

查询的注册表项根本不是同一个,你那个默认是使用绝对路径而不是存在变量的相对路径
807979023 发表于 2020-9-12 19:23:46
  1. @echo off&color 1f
  2. for /f "tokens=2,*" %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal"') do set Personal=%%j
  3. cd /d "%Personal%"
  4. dir
  5. pause
复制代码


点评

查询的注册表项根本不是同一个,你那个默认是使用绝对路径而不是存在变量的相对路径  详情 回复 发表于 2020-9-12 20:09
极度凶残 发表于 2020-9-12 17:11:53
magicgenius 发表于 2020-9-11 06:31
你没测试就瞎回复?我当然是测试过了!!!


试过好像出错


点评

你真是不懂批处理啊!这能直接放在CMD中运行吗?得在批处理文件中!要不得去掉一个%.[attachimg]464968[/attachimg]  详情 回复 发表于 2020-9-12 20:38
magicgenius 发表于 2020-9-11 06:31:25

你没测试就瞎回复?我当然是测试过了!!!

点评

试过好像出错 [attachimg]464962[/attachimg]  详情 回复 发表于 2020-9-12 17:11
极度凶残 发表于 2020-9-10 21:37:09
magicgenius 发表于 2020-9-4 14:03
@echo off
for /f "skip=2 tokens=2* delims= " %%i in ('reg query "HKCU\Software\Microsoft\Windows\Cu ...

没测试就发上来?

点评

你没测试就瞎回复?我当然是测试过了!!!  详情 回复 发表于 2020-9-11 06:31
Bluebells 发表于 2020-9-4 14:50:21
dos时代菜鸟 发表于 2020-9-4 08:31
这样就可以了,
就是再用一次 for 转换下。

正解,感谢指教!
magicgenius 发表于 2020-9-4 14:03:07
@echo off
for /f "skip=2 tokens=2* delims= " %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Personal') do set Personal=%%j
cd /d "%Personal%"
rd /q /s test

点评

没测试就发上来?  详情 回复 发表于 2020-9-10 21:37
dos时代菜鸟 发表于 2020-9-4 08:31:29
本帖最后由 dos时代菜鸟 于 2020-9-4 08:35 编辑


这样就可以了,
就是再用一次 for 转换下。

具体自己研究。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "skip=2 tokens=2* delims= " %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Personal') do (
  4.           for /f "delims=" %%c in ('echo %%j') do echo %%c
  5. )
  6. pause
复制代码


点评

正解,感谢指教!  详情 回复 发表于 2020-9-4 14:50

评分

参与人数 1无忧币 +5 收起 理由
Bluebells + 5 赞一个!

查看全部评分

窄口牛 发表于 2020-9-4 06:58:59
本帖最后由 窄口牛 于 2020-9-4 07:07 编辑
  1. @echo off
  2. SET SF="HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
  3. FOR /F "tokens=2,*" %%I IN ('REG QUERY %SF% /v Personal 2^>NUL^|FIND /I "Personal"') DO SET "myDoc=%%~J"
  4. SET SF="HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
  5. FOR /F "tokens=2,*" %%I IN ('REG QUERY %SF% /v Personal 2^>NUL^|FIND /I "Personal"') DO SET "pth=%%~J"
  6. del /q /a:h "%myDoc%\Default.rdp"
  7. del /q /a:h "%pth%\Default.rdp"
  8. reg delete "HKCU\Software\Microsoft\Terminal Server Client\Default" /f
  9. reg delete "HKCU\Software\Microsoft\Terminal Server Client\LocalDevices" /f
  10. reg delete "HKCU\Software\Microsoft\Terminal Server Client\Servers" /f
复制代码
清理远程桌面记录。修改用户目录,可能会导致注册表里这两个路径不一致。
黑中见白 发表于 2020-9-3 22:12:58
用用户环境变量啊
都市浪子666 发表于 2020-9-3 22:06:41
Bluebells 发表于 2020-9-3 20:59
添加了 setlocal enabledelayedexpansion 语句后, 执行结果并没有变化

我这执行正常

2010feicool 发表于 2020-9-3 22:01:02
@echo off
set "str=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
for /f "tokens=2*" %%a in ('reg query "%str%" /v Personal 2^>nul') do set "a=%%b"

rd /s/q "%a%\Test"

Bluebells 发表于 2020-9-3 20:59:07
都市浪子666 发表于 2020-9-3 20:48
要开启延迟变量   
@echo off

添加了 setlocal enabledelayedexpansion 语句后, 执行结果并没有变化

点评

我这执行正常 [attachimg]464467[/attachimg]  详情 回复 发表于 2020-9-3 22:06
都市浪子666 发表于 2020-9-3 20:48:13
本帖最后由 都市浪子666 于 2020-9-3 20:49 编辑
  1. <span style="background-color: rgb(255, 255, 255);">
  2. </span>
复制代码
要开启延迟变量   
@echo off

setlocal enabledelayedexpansion
for /f "skip=2 tokens=2* delims= " %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Personal') do set Personal=%%j
rd /s/q "%Personal%\Test"


点评

添加了 setlocal enabledelayedexpansion 语句后, 执行结果并没有变化  详情 回复 发表于 2020-9-3 20:59

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-8 17:40

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表