我有这段代码,
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:\
另外,如何将变量设置为字母并使用:\?这是用于在备份目标中创建文件夹,因此我可以通过驱动器字母表对它们进行排序......
答案 0 :(得分:1)
%%I
收到DeviceID
个磁盘,这只是驱动器号,后跟冒号,如C:
。这构成了相对路径。要使它成为指向驱动器根目录的绝对命令,只需附加一个反斜杠,如C:\
。因此,在您的代码中%%I
变为%%I\
。
对于问题的其他部分,要仅提取纯驱动器号,您需要一个临时变量来执行此操作,例如drive
,然后您可以应用sub-string expansion,如{ {1}}。 但,因为这是在代码块中发生的,您需要应用delayed expansion,例如%drive:~,1%
(因为您已经使用!drive:~,1!
的延迟扩展和{{ 1}},我假设你的脚本中已经有了命令行!dirs!
:
!files!