netwok路径上的批处理文件

时间:2015-04-23 10:34:13

标签: batch-file network-programming

我有以下批处理脚本,可以让工作更轻松。

这是它应该起作用的:

1-将一些文件拖放到.bat上 2-在“菜单”上选择文件的目的地
3-脚本副本的文件到目标文件夹
4-脚本执行远程程序(即PSexec行)
5-脚本副本是远程过程到其他文件夹的结果。

这样做很好......除了“小”细节,我需要一些帮助。

当我尝试复制网络位置\ 10.250.39.116 \ d%...如果我以前没有登录过那台机器它就行不通。

我一直在研究'net use'命令来克服这个问题,但我不确定它是否适合我的需求。

我需要验证4台不同的机器,具体取决于菜单的选择。

实际问题:

我可以使用批处理登录到这样的计算机,并避免每次运行脚本时都创建重复的连接吗?如果是这样,怎么样?

感谢您的时间! :)

我知道我所有的路径都指向同一个地方:)

@echo off

setlocal enabledelayedexpansion



ECHO.
ECHO ...............................................
ECHO PRESS 1, 2 OR 3 to select your task, or 4 to EXIT.
ECHO ...............................................
ECHO.
ECHO 1 - Compilar em Qualidade
ECHO 2 - Compilar na HSDEV
ECHO 3 - Compilar nas DEMOS
ECHO 4 - EXIT
ECHO.
SET /P M=Type 1, 2, 3, or 4 then press ENTER:
IF %M%==1 GOTO :QUAL
IF %M%==2 GOTO :HSDEV
IF %M%==3 GOTO :DEMO
IF %M%==4 GOTO EOF


:QUAL
set "PathForms6=\\10.250.39.116\d$\GLINTTHSIAS\GLINTTHS\compilador\fmb6i\GH\"
set "PathForms10=\\10.250.39.116\d$\GLINTTHSIAS\GLINTTHS\compilador\fmb10\GH\"
set PathCompilador=\\10.250.39.116 -u Administrator -p Password1 cmd "/C d: & cd d:\GLINTTHSIAS\GLINTTHS\compilador & GH_PRIV_10_02_Forms.bat"
set PathDestinoPriv=\\10.250.39.116\d$\GLINTTHSIAS\GLINTTHS\PRIV\GH
set PathDestinoPub=\\10.250.39.116\d$\GLINTTHSIAS\GLINTTHS\PUB\GH
goto :PROCESSA
goto EOF


:HSDEV
set "PathForms6=\\10.250.39.116\d$\GLINTTHSIAS\GLINTTHS\compilador\fmb6i\GH\"
set "PathForms10=\\10.250.39.116\d$\GLINTTHSIAS\GLINTTHS\compilador\fmb10\GH\"
set PathCompilador=\\10.250.39.116 -u Administrator -p Password1 cmd "/C d: & cd d:\GLINTTHSIAS\GLINTTHS\compilador & GH_PRIV_10_02_Forms.bat"
set PathDestinoPriv=\\10.250.39.116\d$\GLINTTHSIAS\GLINTTHS\PRIV\GH
set PathDestinoPub=\\10.250.39.116\d$\GLINTTHSIAS\GLINTTHS\PUB\GH
goto :PROCESSA
goto EOF

:DEMO
set "PathForms6=\\10.250.39.116\d$\GLINTTHSIAS\GLINTTHS\compilador\fmb6i\GH\"
set "PathForms10=\\10.250.39.116\d$\GLINTTHSIAS\GLINTTHS\compilador\fmb10\GH\"
set PathCompilador=\\10.250.39.116 -u Administrator -p Password1 cmd "/C d: & cd d:\GLINTTHSIAS\GLINTTHS\compilador & GH_PRIV_10_02_Forms.bat"
set PathDestinoPriv=\\10.250.39.116\d$\GLINTTHSIAS\GLINTTHS\PRIV\GH
set PathDestinoPub=\\10.250.39.116\d$\GLINTTHSIAS\GLINTTHS\PUB\GH
goto :PROCESSA
goto EOF



:PROCESSA
set argCount=0
for %%x in (%*) do (
   set /A argCount+=1
   set "argVec[!argCount!]=%%~nx"
   set "pathVec[!argCount!]=%%~dpx"

)


rem echo Number of processed arguments: %argCount%


for /L %%i in (1,1,%argCount%) do (

    echo Vou compilar %%i - "!argVec[%%i]!"

if exist %PathForms6%!argVec[%%i]!.* del /q %PathForms6%!argVec[%%i]!.*
if exist %PathForms10%!argVec[%%i]!.* del /q %PathForms10%!argVec[%%i]!.*

robocopy "!pathVec[%%i]!." %PathForms6% !argVec[%%i]!.fmb > nul

) 

c:
cd  c:\pstools
psexec %PathCompilador%


 for /L %%i in (1,1,%argCount%) do (

if exist "%PathForms10%!argVec[%%i]!.fmx" (
 xcopy  %PathForms10%!argVec[%%i]!.fmx %PathDestinoPriv% /y
 xcopy  %PathForms10%!argVec[%%i]!.fmx %PathDestinoPub% /y)
 )

pause

1 个答案:

答案 0 :(得分:0)

您对net use进行了多少测试?尝试在命令行运行两次。注意输出在第二次运行时如何变化:

session output for net use

如您所见,在已建立连接的地方,net use将输出连接摘要,而不是创建重复连接。

如果您愿意,可以使用conditional execution或错误级别检查。使用此方法,您可以避免在net use失败之前调用xcopy,这应该是第一次。这是一个简短的例子,仅仅是为了说明机制:

@echo off
setlocal

ping -n 1 10.250.39.116 | find /i "TTL=" >NUL || (
    echo 10.250.39.116 is offline.  Unable to continue.  Press any key to exit.
    pause >NUL
    goto :EOF
)

call :xcopy "%~1" "destination"

echo Press any key to exit.
pause >NUL
net use \\10.250.39.116\d$ /delete >NUL 2>NUL
goto :EOF

:xcopy <source> <dest_dir>
xcopy /L "%~1" "%~2" 2>NUL || (
    net use \\10.250.39.116\d$ /user:username password >NUL 2>NUL
    xcopy /L "%~1" "%~2"
)
goto :EOF