我已经编写了一个批处理文件来将文件从一台服务器复制到另一台服务器,但是,我需要能够重命名刚刚复制的文件以包含文件夹路径。我想出的代码是:
ECHO OFF
SETLOCAL EnableDelayedExpansion
set include=*.log
FOR /L %%i IN (1,2,3) DO (
net use i: \my-server%%id$IISLogs
FOR /R i: %%G IN (%include%) DO (
XCOPY %%G D:ServerLogsAndBackupsIISw%%i
)
7z a -t7z D:ServerLogsAndBackupsIISw%%ifiles%%i.7z *.log -mx9
net use i: /delete
)
该文件可能来自以下内容:
i: \w3svc98435783475\ex110430.log
我想做的是将其复制到D:\ServerLogsAndBackups\IIS\w1\w3svc98435783475_ex110430.log中。我不确定如何获取远程上的目录路径以放入文件名中。
非常感谢
如果你知道文件的深度只有1个文件夹,你可以使用以下
ECHO OFF
SETLOCAL EnableDelayedExpansion
set include=*.log
FOR /L %%i IN (1,2,3) DO (
net use i: \my-server%%id$IISLogs
FOR /R i: %%G IN (%include%) DO (
FOR /F "tokens=1-2 delims=" %%H IN ("%%~pnxG") DO (
XCOPY %%G D:ServerLogsAndBackupsIISw%%i%%H_%%I
)
)
7z a -t7z D:ServerLogsAndBackupsIISw%%ifiles%%i.7z *.log -mx9
net use i: /delete
)
如果文件是一组文件夹深度,您可以根据需要调整标记,并在XCOPY命令的末尾添加额外的字母(即5个文件夹深度:标记=6,在XCOPY命令中,它将是%%H_%%i_%%J_%%K_%%L_%%M)
但是,如果存在文件夹深度的混合,您最好考虑使用批处理脚本以外的其他方法来实现这一点。