[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复  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

TOP

回复 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

评分人数

TOP

回复  ygqiang

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


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




2* 和 2,*
有啥差别?

有人说:“有人的桌面路径是在别的盘符的”。

TOP

回复 1# ygqiang

都一样哟,在注册表中这两个项是要一致的,所以取哪个项的值一样

TOP

注册表读取shell的为止不一样。其他相同

TOP

返回列表