这是我关于StackOverflow的第一个问题,所以请善待;);我有几台计算机在不同的时间备份,每台计算机有2到30个用户,我想备份网络中特定计算机的桌面,文档和收藏夹文件夹。
最初,我尝试使用XCOPY
,但由于文件夹路径的长度无法完成,所以我使用了ROBOCOPY
,但我被卡住了。这就是我所拥有的:
SET source=c:\testA\Users
SET dest=c:\testB
rem Desktop folder backup
for /D %%G in (%source%\*) DO (
if exist "%%G\Desktop" ROBOCOPY /e /s /MIR /copyall "%%G\Desktop" "%dest%\%%G\Desktop" )
此命令无法在运行时创建目标文件夹%dest%\%%G\Desktop
,如:c:\testb\c:\testA\Users\"current username from for index %%G"\Desktop
。
它给出了目标文件夹错误:"文件名,目录名或卷名的语法不正确。"
从理论上讲,除了dest文件夹之外,命令本身也可以工作,但也许我错过了一些东西。有什么想法吗?
答案 0 :(得分:0)
由于代码的长度,我想回答我自己的问题。 我设法让事情有效,除了排除我想被排除的目录......
这里我从用户输入获取源和目的地:
SET /p source="Hostname : "
SET /p dest="Destination path : "
SET /p _OS="a for XP b for W7 backup : "
echo "you chose %_OS%"
IF条件根据先前的选择获取正确的Windows7文件夹路径:
IF %_OS%==b (
SET source=%source%\c$\Users
pause
echo !source!
echo %dest%
pause
FOR条件循环用户文件夹:
FOR /D %%G in (!source!\*) DO (
if exist %%G\Desktop ROBOCOPY %%G\Desktop %dest%\%%G\Desktop /XD !source!\admin /e /s /copy:datsou
)
PAUSE
代码执行时!source!\ admin获取要排除的正确路径,但robocopy无论如何都只是复制它。 我还尝试指定路径:" \ computer1 \ c $ \ Users \ admin"有或没有引号,相同的效果,路径不被驱逐。
任何想法???