如何将一个文件复制到C:\ Users中所有应用程序数据目录中的特定子目录?

时间:2016-08-08 14:47:21

标签: file batch-file directory copy

一台Windows 7 x64我正在尝试将一个文件复制到

C:\users\profilename\AppData\Roaming\Autodesk\AutoCAD 2011\R18.1\enu\Plotters

我希望批处理将此文件无提示地静默复制到客户端PC上存在的所有用户配置文件。

到目前为止,我尝试过的代码没有运气:

@echo off
xcopy /I /Y "%~dp0myfile.pc3" "C:\Users\*\Appdata\Roaming\Autodesk\AutoCAD 2011\R18.1\enu\Plotters"

关于如何使用批处理文件执行此操作的任何想法?

1 个答案:

答案 0 :(得分:1)

通配符不能在文件夹路径中使用。 Windows命令解释器确实支持它。

您可以使用以下代码:

@echo off
setlocal EnableExtensions
set "TargetPath=AppData\Roaming\Autodesk\AutoCAD 2011\R18.1\enu\Plotters"

rem Get path of folder containing the users' profile folders.
for /F %%I in ("%PUBLIC%") do set "UsersFolder=%%~dpI"

rem Copy file into a subdirectory of each non standard user profile folder.
for /D %%I in (%UsersFolder%*) do (
    if /I not "%%I" == "%PUBLIC%" (
        if /I not "%%~nxI" == "Default" (
            if not exist "%%I\%TargetPath%\*" md "%%I\%TargetPath%"
            copy /B /Y "%~dp0myfile.pc3" "%%I\%TargetPath%\" >nul
        )
    )
)
endlocal

此批处理代码会跳过子文件夹DefaultPublic

此批处理文件当然必须以管理员身份运行,否则该文件只能复制到%APPDATA%\Autodesk\AutoCAD 2011\R18.1\enu\Plotters,即当前用户帐户的AutoCAD 2011的应用程序数据目录中的相应子目录。

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • copy /?
  • echo /?
  • endlocal /?
  • for /?
  • if /?
  • md /?
  • rem /?
  • set /?
  • setlocal /?