用于在 SMB\CIFS 协议中复制文件的批处理脚本

用于在 SMB\CIFS 协议中复制文件的批处理脚本

我正在尝试使用类似这样的构造从远程机器复制文件

copy smb://DOMAIN;USERLOGIN:[email protected]/folder/ C:/tmp/

它显示下一条消息 -

The filename, directory name, or volume label syntax is incorrect.

我猜测 win 命令“copy”只适用于目录...其主要思想是通过 SMB 协议在用户登录名和密码内精确复制文件。

因此,我浏览互联网时发现“USE NET”可能对我有帮助。当我尝试使用它时,它告诉我同一资源上有多个连接。然后我尝试“USE NET \COMPNAME\folder DELETE”,它显示操作已成功执行,但在再次尝试使用“USE NET”时,有关多个连接的消息仍然相同。

此外 - 如果我可以制作这样的 NET 资源,我是否可以从中复制\删除文件?

提前致谢。

PS:抱歉我的英语不好。

- - - - -更新 - - - - - - - - - - - -

正如 Somesh 提到的,我曾使用 USE NET 从多个地方下载文件,但不幸的是,登录和密码中的多个连接问题仍然存在。我无法通过使用不带参数的 USE NET 在当前机器上找到任何活动。类似的问题在这里:发生系统错误 1219

如果有人感兴趣的话这是我的示例脚本:

@echo off
@echo initializing loop.
set disk="T"
set destination="D:\downloads\temp"
REM set user = "USER"
REM set password = "PASS"
REM set domain = "DOMAIN"

for /F %%S in (shares.txt) do (
    @echo start of performing: %%S

    @echo next step: mount network disk %disk%:
    pause
    DIR %disk%: 1>NUL && net use %disk%: /delete
    net use %disk%: %%S /persistent:no
        REM net use %%S /USER:%domain%\%user% %password% /persistent:no
    @echo next step: copy all files from %disk%: to %destination%

    pause
    xcopy %disk%:\* %destination% /s /i /c
    @echo next step: dismount network disk %disk%:
    pause
    net use %disk%: /delete
)
pause

答案1

在脚本中,使用 net 命令挂载 SMB/CIFS 共享。

net use \\computername\sharename /persistent:no

您可以使用 xcopy 将文件复制到 SMB/CIFS 共享或从 SMB/CIFS 共享复制文件。复制完成后,您可以选择从 Windows 工作站删除共享。

net use \\computername\sharename /delete

您可以通过运行获取 net 命令的完整选项net help use

相关内容