以下代码可以正常工作 - 但我经常遇到映射到驱动器或其他问题的问题。有没有办法可以看看我的代码并帮助改进它?
此代码允许您将文件从本地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
答案 0 :(得分:0)
如果第一个net use
失败,则此例程应该
copying link
并删除l mapping。如果第一个net use
成功,则此例程应转到mappingerror
,报告并退出。
所以 - 很难看出它是如何运作的。如果第一次尝试映射copy
,它 只能1>才能进入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
。