【问题标题】:.BAT copying files from user's documents directory.BAT 从用户的文档目录中复制文件
【发布时间】:2014-12-01 05:00:44
【问题描述】:

我正在尝试获取一个 .bat 脚本来将文件从用户的文档复制到闪存驱动器,但是当然并不是我们所有人都在我们的用户目录中拥有我们的文档 - 以下是我们所拥有的:

for %%a in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
IF EXIST %%a:\STUDYvault.id SET drive=%%a:\ && GOTO Meep:
)
xcopy "%USERPROFILE%\Documents\ExampleFolder" "%drive%Backup\ExampleFolder" /S /D /Y /I

我们可以用 %userdocumentsdir% 之类的东西替换“%USERPROFILE%\Documents”吗?通过 google 找不到任何东西。

感谢您的宝贵时间!

【问题讨论】:

  • 刚刚注意到(在回答后)这可能是this question的副本

标签: batch-file xcopy


【解决方案1】:

没有这样的环境值,你必须从注册表中获取它。

你可以这样做:

FOR /F "tokens=3 " %%G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal"') DO (SET userdocumentsdir=%%G)

echo %userdocumentsdir%

请注意,代码旨在在 .bat 文件上运行。

来源:this discussion(我猜这不应该是服务器故障)

【讨论】:

  • 您应该在返回的路径中留有空格 - 无论是 XP、自定义还是本地化系统。 FOR /F "skip=4 tokens=2,*" %%G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal"') DO (SET userdocumentsdir="%%H")
【解决方案2】:

这段代码可以解决问题。

@echo off
echo Tested and worrking in win XP, vista, 7, 8, 8.1 and 10
    for /f "skip=2 tokens=2*" %%c in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal"') do @set "docs=%%d" && echo WIN XP - 10
    xcopy "%docs%\test.txt" "I:\" /f /y
    xcopy "%docs%\test folder" "I:\test folder\" /d /e /y
echo %docs%
pause
EXIT

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    相关资源
    最近更新 更多