【问题标题】:Copying a file to mapped drive not working将文件复制到映射驱动器不起作用
【发布时间】:2015-09-12 00:55:56
【问题描述】:

我正在尝试连接到网络驱动器,复制文件并将其移动到另一个位置,并记录是否成功。这是我到目前为止得到的:

@echo off
@setlocal enableextensions enabledelayedexpansion

if exist Transfer_logfile.txt (
    ECHO Y | del Transfer_logfile.txt
)

set LogFile=_logfile.txt
set logg=^> _^&^& type _^&^&type _^>^>%LogFile%


for /F "tokens=*" %%A in (ipaddresses.txt) do (

    net use \\%%A\c$\test  /USER:test %logg%
    echo copying files across to %%A... %logg%
    COPY -f -R -Y C:\test\test.exe \\%%A\c$\test\test.exe %logg%
    echo Copy completed.. %logg%
    net use \\%%A\c$\test /delete /Y %logg%
)

pause

任何有关如何完成此任务的帮助将不胜感激。

我正在努力保存输出中的任何错误。如果它出错,我希望它只是保存它在输出中失败并继续到 IP 地址文本文件中的下一个 IP。

我认为,我需要在网络使用中包装一个 if,以检查 IP 地址是否首先 ping。但是这不起作用。

@echo off
@setlocal enableextensions enabledelayedexpansion

if exist Transfer_logfile.txt (
    ECHO Y | del Transfer_logfile.txt
)

set LogFile=_logfile.txt
set logg=^> _^&^& type _^&^&type _^>^>%LogFile%

for /F "tokens=*" %%A in (ipaddresses.txt) do (

ping -n %%A > NUL
IF ERRORLEVEL 0 (
    echo
ELSE goto :skipcopyhost1
net use \\%%A\c$\test  %logg%
echo copying files across to %%A... %logg%

COPY -f -R -Y C:\test\test.exe \\%%A\c$\test\test.exe %logg%
echo Copy completed.. %logg%

net use \\%%A\c$\test /delete /Y %logg%
)

pause

【问题讨论】:

  • 你希望log的内容代表什么?此外,您的复制标志不是窗口。

标签: windows batch-file cmd


【解决方案1】:

试试这个未经测试的批处理代码:

@echo off
if not exist ipaddresses.txt goto :EOF
setlocal
del /F Transfer_logfile.txt 2>nul
set "LogFile=Transfer_logfile.txt"

for /F %%A in (ipaddresses.txt) do (
    %SystemRoot%\System32\ping.exe -n %%A >nul
    if errorlevel 1 (
        echo %%A is not available in network.>>%LogFile%
    ) else (
        echo Connecting to %%A ...>>%LogFile%
        %SystemRoot%\System32\net.exe use X: \\%%A\c$\test /persistent:no /Y 2>&1 >>%LogFile%
        echo Copying file to %%A ...>>%LogFile%
        copy /B /V /Y C:\test\test.exe X:\test.exe 2>&1 >>%LogFile%
        echo Disconnecting from %%A ...>>%LogFile%
        %SystemRoot%\System32\net.exe use X: /delete /Y 2>&1 >>%LogFile%
    )
    echo.>>%LogFile%
)
endlocal
pause

要了解所使用的命令及其工作原理,请打开命令提示符窗口,在其中执行以下命令,并仔细阅读每个命令显示的所有帮助页面。

  • copy /?
  • del /?
  • for /?
  • goto /?
  • if /?
  • net /?
  • net use /?
  • set /?

进一步阅读微软文章:

我不会解释代码中的所有错误,因为它们太多了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 2010-10-04
    相关资源
    最近更新 更多