我要写一个批处理文件BAT,会把一个文件夹复制到我的文档下,怎么写?

, 我的文档的路径 每台电脑都可能会不一样,要怎样找到我的文档路径?HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
里面的Personal就是“我的文档”路径,这是我查出来的 ,我的文档的注册表位置

注册表查询的话有2个键值的,一个是你所的位置,另一个在
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
所以2楼那样查询,通用性不强
@echo off
>tmp.vbs echo WScript.Echo CreateObject("Shell.Application").Namespace(^&H5^&).Self.Path
for /f "delims=" %%i in ('cscript.exe //nologo tmp.vbs') do set PersonalPath=%%i& del tmp.vbs
xcopy /e/r/h/y/c "你欲复制文件" "%PersonalPath%"
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-22
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders">%Temp%\Temp.txt
FOR /F "TOKENS=2* DELIMS= " %%I IN ('TYPE %Temp%\Temp.txt^|FINDSTR /I "Personal"') DO ( SET "Personal=%%~J" )
del %Temp%\Temp.txt
xcopy /i /y /s /c "你欲复制的文件夹" "%Personal%"
pause追问

好像不行啊。。。。 运行以后在BAT的目录里面出现一个%%USERPROFILE%%,是哪里出错了??

追答

REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders">%Temp%\Temp.txt
FOR /F "TOKENS=2* DELIMS= " %%I IN ('TYPE %Temp%\Temp.txt^|FINDSTR /I "Personal"') DO ( SET "Personal=%%~J" )
del %Temp%\Temp.txt
xcopy /i /y /s /c "你欲复制的文件夹" "%Personal%"
pause

本回答被网友采纳
第2个回答  2012-05-22
给出2段代码,请根据需要选择:
1.================================
@echo off
for /f "tokens=3 delims= " %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"^|FIND /i "Personal"') DO ( xcopy /i /y /s /c "目标文件夹" "%%i" )
pause

以上代码请根据实际目标文件夹地址修改,并保存为bat文件。
如:想把D盤下的test文件夹拷贝到我的文档,那麼目标文件夹就是 D:\test 。

2.=====================================
@echo off
set /p Folder=请拖入目标文件夹,然後回车:
for /f "tokens=3 delims= " %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"^|FIND /i "Personal"') DO ( xcopy /i /y /s /c %Folder% "%%i" )
pause

以上代码保存为bat文件,启动後,将要拷贝的文件夹拖进窗口即可完成拷贝:
第3个回答  2012-05-22
@echo off
for /f "skip=2 tokens=2*" %%i in ('reg query "HKEY_CURRENT_USER\Software\Micr
osoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v personal') do set d=%%j
xcopy /s "d:\test" "%d%\test"
第4个回答  2012-05-22
修改后缀名为.bat
相似回答