标题: [已结]关于xcopy使用for语句传回的变量的问题
[打印本页]
作者: flyerboys
时间: 2009-3-14 10:14
标题: [已结]关于xcopy使用for语句传回的变量的问题
XP下“我的文档”的路径为默认路径,想用批处理实现:自动定位“我的文档”的路径,并且复制其下的所有文件和目录到其他盘的一个文件夹。我写了一个,但是一老运行到xcopy处就出错,请教哪位能人可以指教一二。下面是我自己写的,请帮我看看哪里有问题?
我的批处理
for /f "tokens=2*" %%i in ('REG QUERY
"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /V
"Personal" ^| find /i "Personal"') do xcopy "%%j" e:\Mydoc\ /e /q /h /r /k /y
pause
运行后提示找不到 My Documents,%%j的值是“%USERPROFILE%\My Documents”。我单独运行:
xcopy "%USERPROFILE%\My Documents" e:\Mydoc\ /e /q /h /r /k /y
能够得出正确结果,但是放在for里面用%%j表示xcopy的源地址就不行,请问我的写法有什么问题。谢谢
Last edited by flyerboys on 2009-3-15 at 05:23 ]
作者: flyerboys
时间: 2009-3-14 16:47
等到快4点了,还是没有人回复,看来这个问题无解了,明天再来看看。郁闷~~
作者: netbenton
时间: 2009-3-14 23:42
我的机器上的“我的文档”是自定的,用你的代码可以通过测试。
for令牌得到的字符串,不会再次进行变量扩展了的(除开启变量延迟后的!),
字符串“%USERPROFILE%\My Documents”所指的路径当然是不存在的。
只有将变量%USERPROFILE%扩展后才是真正的路径。
不知道这样解释对不对。
但是:
像你的这种情况,在xcopy 前加个call 应该可以解决。
作者: flyerboys
时间: 2009-3-15 05:22
Originally posted by netbenton at 2009-3-14 23:42:
我的机器上的“我的文档”是自定的,用你的代码可以通过测试。
for令牌得到的字符串,不会再次进行变量扩展了的(除开启变量延迟后的!),
字 ...
加上call,就可以了,太感谢了!!至于为什么,我自己琢磨吧!再次感谢!