找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 33901|回复: 5

[系统相关] [已解决]xp/win7系统下,各种不同情况,获取桌面路径。通用性比较强的bat命令是?

[复制链接]
发表于 2015-1-31 22:48:42 | 显示全部楼层 |阅读模式
本帖最后由 ygqiang 于 2015-2-1 00:22 编辑

[已解决]xp/win7系统下,各种不同情况,获取桌面路径。通用性比较强的bat命令是?
  1. @echo off
  2. for /f "tokens=2,*" %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Desktop"') do set "desktop_dir=%%j"
  3. echo %desktop_dir%
  4. pause

  5. for /f "tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') do set "dktop2=%%b"
  6. echo %Desktop2%
  7. pause
复制代码
这2个命令,有3个不同的地方。都有啥差别?
xp/win7系统、各种不同环境/不同情况下,获取桌面路径通用性比较强的命令,应该如何写?



————————————————————————————————————
更新下:win7 64系统下,    刚测试了下。。只有下面这个代码好用。
  1. @echo off
  2. for /f "tokens=2,*" %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Desktop"') do set "desktop_dir=%%j"
  3. echo %desktop_dir%
  4. copy  "%desktop_dir%\*.*" c:\000
  5. pause
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-1-31 23:27:11 | 显示全部楼层
注册表读取shell的为止不一样。其他相同
发表于 2015-1-31 23:29:49 | 显示全部楼层
回复 1# ygqiang

都一样哟,在注册表中这两个项是要一致的,所以取哪个项的值一样
 楼主| 发表于 2015-1-31 23:37:02 | 显示全部楼层
回复  ygqiang

都一样哟,在注册表中这两个项是要一致的,所以取哪个项的值一样
pcl_test 发表于 2015-1-31 23:29


注册表读取shell的为止不一样。其他相同
zhangzsky 发表于 2015-1-31 23:27




2* 和 2,*
有啥差别?

有人说:“有人的桌面路径是在别的盘符的”。
发表于 2015-2-1 00:18:25 | 显示全部楼层
回复 4# ygqiang

以获取注册表中的值来取得桌面的路径就是为了保证就算改了桌面路径也可正确获取到更改后的桌面路径

至于2* 和 2,*,都是表示取第2列其后的列给第二个变量,在这里表示方法可以有多种
tokens=有时表示提取全部
tokens=m表示提取第m列
tokens=m,n表示提取第m列和第n列
tokens=m-n表示提取第m列至第n列
tokens=*表示删除每行前面的空格,忽略行首的所有空格
tokens=m*提取第m列以后的所有字符,星号表示剩余的字符
tokens=m,*提取第m列以后的所有字符,星号表示剩余的字符
输出变量的个数由定义了的tokens决定

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-2-1 00:21:19 | 显示全部楼层
回复  ygqiang

以获取注册表中的值来取得桌面的路径就是为了保证就算改了桌面路径也可正确获取到更改后 ...
pcl_test 发表于 2015-2-1 00:18



win7 64系统下,    刚测试了下。。只有这个代码好用。

@echo off
for /f "tokens=2,*" %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Desktop"') do set "desktop_dir=%%j"
echo %desktop_dir%
copy  "%desktop_dir%\*.*" c:\000
pause
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 19:07 , Processed in 0.018447 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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