一台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"
关于如何使用批处理文件执行此操作的任何想法?
答案 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
此批处理代码会跳过子文件夹Default
和Public
。
此批处理文件当然必须以管理员身份运行,否则该文件只能复制到%APPDATA%\Autodesk\AutoCAD 2011\R18.1\enu\Plotters
,即当前用户帐户的AutoCAD 2011的应用程序数据目录中的相应子目录。
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
copy /?
echo /?
endlocal /?
for /?
if /?
md /?
rem /?
set /?
setlocal /?