批量改进

时间:2016-03-13 16:52:36

标签: batch-file cmd

以下代码可以正常工作 - 但我经常遇到映射到驱动器或其他问题的问题。有没有办法可以看看我的代码并帮助改进它?

此代码允许您将文件从本地PC复制​​到另一台远程计算机。

@echo off
if [%1]==[] goto usage
@echo mapping l: to %1\c$
net use * /delete /y
net use l: \\%1\c$ password /user:%1\administrator

if ERRORLEVEL 1 (
echo failed

 net use l: \\%1\c$ password /user:%1\administrator

) else (
goto mappingError

) > command.txt
​    
:: ---------------------------------------------

@echo copying link file to C: Drive
copy "c:\_\CopyFileToHost\logoff.cmd" l:\
​​    
:: ---------------------------------------------

@echo deleting l: mapping
net use l: /delete /y

@echo off
goto :eof

:usage
@echo Usage: %0 hostname
exit /B 1

:mappingError
@echo Error mapping remote drive, exiting
exit /B 1

1 个答案:

答案 0 :(得分:0)

如果第一个net use失败,则此例程应该

  1. echo failed
  2. 再试一次
  3. 转到copying link并删除l mapping。
  4. 如果第一个net use成功,则此例程转到mappingerror,报告并退出。

    所以 - 很难看出它是如何运作的。如果第一次尝试映射copy,它 只能才能进入L:如果第二次尝试成功,则应该进行复制。如果没有,则应尝试复制,但由于未映射L:,因此会失败。

    所以 - 很难说,因为您没有提供报告或描述您的批次的目的。

    但是,在可靠的水晶球的帮助下,我建议(我无法测试这个):

    @echo off
    if [%1]==[] goto usage
    echo mapping l: to %1\c$
    net use * /delete /y
    net use l: \\%1\c$ password /user:%1\administrator
    
    (
    if ERRORLEVEL 1 (
     echo failed
     net use l: \\%1\c$ password /user:%1\administrator
    )
    if ERRORLEVEL 1 (
     echo Error mapping remote drive, exiting
     exit /B 1
    )
    ) > command.txt
    ​    
    :: ---------------------------------------------
    
    echo copying link file to C: Drive
    copy "c:\_\CopyFileToHost\logoff.cmd" l:\
    ​​    
    :: ---------------------------------------------
    
    echo deleting l: mapping
    net use l: /delete /y
    
    goto :eof
    
    :usage
    echo Usage: %0 hostname
    exit /B 1
    

    请注意,执行echo off后,将关闭命令回显,直到过程结束或执行echo on为止。 @仅表示don't echo this command