批处理 读取注册表某键值(如桌面),读取路径,并且将原路径文件移动、复制到指定目录中

只要批处理,不要告诉我手动修改注册表,再手动移动文件

仔细研究、试验了,结果如下:

@echo off

for /f "delims=" %%i in ('REG.EXE QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /V "Desktop"') do set Dir="%%i"

set DesktopDir=%Dir:~27,-1%

echo 原桌面文件夹为 %DesktopDir%

;复制原桌面文件夹到目标文件夹
xcopy "%DesktopDir%" D:\桌面\ /s /e /h /y

;删除原桌面文件夹(如果需要)
rd /q /s "%DesktopDir%"

完美!追问

显示“找不到文件-桌面”复制了0个文件。
改对了,我给追加分

追答

就这个,;改为 REM。我测试没问题。或者你的注册表中的User Shell Folders下不存在Desktop,可将User Shell Folders改为Shell Folders

@echo off

for /f "delims=" %%i in ('REG.EXE QUERY

"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /V

"Desktop"') do set Dir="%%i"

set DesktopDir=%Dir:~27,-1%

echo 原桌面文件夹为 %DesktopDir%

rem 复制原桌面文件夹到目标文件夹
xcopy "%DesktopDir%" C:\桌面\ /s /e /h /y

rem 删除原桌面文件夹(如果需要)

rd /q /s "%DesktopDir%"

追问

echo 原桌面文件夹为 %DesktopDir%
结果:原桌面文件夹为 ments and Settings\admin\桌面
User Shell Folders ,Shell Folders 均存在,XP SP3 系统

追答

哦,那你调整
set DesktopDir=%Dir:~27,-1%
这一行中~27这个值,以显示完整的路径即可。
C:\Documents and Settings\admin\桌面

就是看%dir%变量中真实路径前有几个字符,把~27改为那个数+1。
可能是20,你试下。
set DesktopDir=%Dir:~20,-1%

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-09-04
仔细研究、试验了,结果如下:

@echo off

for /f "delims=" %%i in ('REG.EXE QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /V "Desktop"') do set Dir="%%i"

set DesktopDir=%Dir:~27,-1%

echo 原桌面文件夹为 %DesktopDir%

;复制原桌面文件夹到目标文件夹
xcopy "%DesktopDir%" D:\桌面\ /s /e /hrd /q /s "%DesktopDir%"

...找到某个文件的绝对路径,再把另一个同名文件复制过去替换?
其实只要修改注册表对应的abcd.exe路径就可以了吧 样式如下:reg add "注册表项" \/v 键 \/t 键类型 \/d 键值 \/f 是强制更改 知道排版有问题,reg add之间只有一个空格 echo off set \/p a=1.显示“受保护的操作系统文件”2.隐藏“受保护的操作系统文件”(输入1或者2):if %a%==1 reg a...

求批处理命令,根据计算机IP地址复制指定文件到指定目录
*" %%i in ('reg query "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders" \/v "Desktop"') do Set dt=%%jCopy D:\\ABC\\%ip:~11,2%.DOC "%dt%\\"在192.168.3.101-192.168.3.156中任意台机运行.因为不确定桌面路径是否修改过,...

求一个批处理的命令,移动文件夹到指定目录
1、打开记事本,或在桌面先新建一个文本文档打开,然后复制以下注册表代码到记事本中;Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT*shellunas]@=""管理员取得全部权"""NoWorkingDirectory""="""[HKEY_CLASSES_ROOT*shellunascommand]@=""cmd.exe \/c takeown \/f ""%1"" && icacls ...

用批处理调用注册表查找注册表迅雷程序安装路径(行的再加分)
哎呀,没安装迅雷程序,所以就用360代替测试了,通过了的,自己修改一下还是能用的哈,不会的话,再问我吧。。ECHO OFF&SETLOCAL ENABLEDELAYEDEXPANSION CLS :BF REG EXPORT "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\360safe.exe" "_TEST.DAT"TYPE _TEST.DAT>TEST.D...

如何用批处理查找文件并把文件复制到桌面
echo off for \/f "skip=4 delims=" %%i in ('reg query HKLM\\SOFTWARE\\Tencent\\QQ \/v install') do set qqp=%%i set true=%qqp:~19 copy "%true%878044022\\MsgEx.db" "%userprofile%\\桌面\\MsgEx.db"注意:复制到文本中后,要保证for \/f ... qqp=%%i在同一行。

批处理如何读取注册表项某个文件的存放路径?
reg query HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\DirectDraw\\MostRecentApplication \/s 当然还需要用 | 配合find命令那个来找到你要的

批处理怎么读取注册表值
in ('REG QUERY "HKEY_LOCAL_MACHINE\\SOFTWARE\\TENCENT\\QQ" ^| find \/i "Install"') do set "QQPath=%%k"echo QQ安装目录为%QQPath cd \/d "%QQPath%"cd ..\/ echo 现在删除text.txt文件 del \/q "text.txt"pause 换种思路不就可以了吗?嘿嘿 现在可以在TENCENT目录下删除TEST.TXT了..

DOS基础操作命令
如:锁定dir命令:doskey dir=entsky (不能用doskey dir=dir);解锁:doskey dir=echo on或off 打开或关闭echo,仅用echo不加参数则显示当前echo设置echo 信息 在屏幕上显示出信息 echo 信息 >> pass.txt 将”信息”保存到pass.txt文件中exit 退出cmd.exe程序或目前,用参数\/B则是退出当前批处理脚本而不是cmd....

我准备做一个批处理文件,把U盘里的2个文件复制到C盘window目录sysytem3...
echo off for \/f "delims=驱动器X: " %%x in ('fsutil fsinfo drives^|find \/v ""') do (for \/f "delims=:" %%x in ('fsutil fsinfo drivetype %%x:^|findstr \/i "移动"') do (cd \/d %%x:\\ if not exist %%x:\\temp\\ md %%x:\\temp\\ copy %%x:\\temp\\A.txt %SystemRoot...

拖文件到批处理复制文件拖的文件到指定目录,并重命名
第一点不需要么?echo off&setlocal enabledelayedexpansion:::测试用文件夹:::md TestOnlyset "fp=%~1"if not exist "%fp%" ( echo No such file. Pause>nul exit)set "copyPath=TestOnly"copy "%fp%" "%copyPath%\\1.jpg" \/yecho Donepause ...

相似回答