如何解决批处理文件,用于将文件从一台服务器复制到另一台服务器,并在此过程中将远程目录添加到文件名
|| 我已经编写了一个批处理文件,将文件从一台服务器复制到另一台服务器,但是,我需要能够重命名刚复制的文件以包含文件夹路径。我想出的代码来完成这项工作是:ECHO OFF
SETLOCAL EnableDelayedExpansion
set include=*.log
FOR /L %%i IN (1,2,3) DO (
net use i: \\\\my-server%%i\\d$\\IISLogs
FOR /R i:\\ %%G IN (%include%) DO (
XCOPY %%G D:\\ServerLogsAndBackups\\IIS\\w%%i\\
)
7z a -t7z D:\\ServerLogsAndBackups\\IIS\\w%%i\\files%%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%%i\\d$\\IISLogs
FOR /R i:\\ %%G IN (%include%) DO (
FOR /F \"tokens=1-2 delims=\\\" %%H IN (\"%%~pnxG\") DO (
XCOPY %%G D:\\ServerLogsAndBackups\\IIS\\w%%i\\%%H_%%I
)
)
7z a -t7z D:\\ServerLogsAndBackups\\IIS\\w%%i\\files%%i.7z *.log -mx9
net use i: /delete
)
如果文件是固定数量的深度文件夹,则可以根据需要调整令牌,并在XCOPY命令的末尾添加其他字母(即,深度为5个文件夹:tokens = 6,在XCOPY命令中它将为%% H_% %I _ %% J _ %% K _ %% L _ %% M)
但是,如果混合使用不同的文件夹深度,则最好使用批处理脚本以外的方法来完成此任务。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。