robocopy批处理文件以获取所有本地磁盘和备份

时间:2016-09-23 01:27:09

标签: batch-file robocopy

我有这段代码,

For /F "tokens=1" %%I In ('wmic logicaldisk get DeviceID^,DriveType^|Findstr "3"') Do (
If Exist "%%I" robocopy %%I "%dest%\%%I"  /MIR /IS /XA:SH /XD "!dirs!" /XF "!files!" /R:3 /W:3 /TEE /log+:"%srclog%\%logfile%" /NP
)

然而,robocopy将源备份作为当前用户的配置文件路径读取,即源:C:\ Users \ Administrator而不是想要的C:\

另外,如何将变量设置为字母并使用:\?这是用于在备份目标中创建文件夹,因此我可以通过驱动器字母表对它们进行排序......

1 个答案:

答案 0 :(得分:1)

%%I收到DeviceID个磁盘,这只是驱动器号,后跟冒号,如C:。这构成了相对路径。要使它成为指向驱动器根目录的绝对命令,只需附加一个反斜杠,如C:\。因此,在您的代码中%%I变为%%I\

对于问题的其他部分,要仅提取纯驱动器号,您需要一个临时变量来执行此操作,例如drive,然后您可以应用sub-string expansion,如{ {1}}。 ,因为这是在代码块中发生的,您需要应用delayed expansion,例如%drive:~,1%(因为您已经使用!drive:~,1!的延迟扩展和{{ 1}},我假设你的脚本中已经有了命令行!dirs!

!files!