2009-06-05 112 views
1

我需要一個批處理文件,將本地目錄中的文件(8)複製到網絡上的機器列表(主機名或IP)或讓我提示輸入下一個文件主機名/ IP將文件複製到多臺機器的批處理文件

我寧願不要有過度運行該腳本,並重新進入下一個主機名/ IP

我還需要看到的輸出爲每個系統,以確保它連接正確併成功複製。也許是「準備好接下來處理?」每臺機器之後?

我不知道如何有一個批處理文件做的STDIN等價,所以請原諒?STDIN?佔位

到目前爲止,我已經是

net use S: \\?STDIN?\C$ /user:domain\myusername mypassword 

copy %~file01.txt S:\%SystemRoot%\system32 /y 
copy %~file02.txt S:\%SystemRoot%\system32 /y 
copy %~file03.txt S:\%SystemRoot%\system32 /y 
copy %~file04.txt S:\%SystemRoot%\system32 /y 
copy %~file05.txt S:\%SystemRoot%\system32 /y 
copy %~file06.txt S:\%SystemRoot%\system32 /y 
copy %~file07.txt S:\%SystemRoot%\system32 /y 
copy %~file08.txt S:\%SystemRoot%\system32 /y 

net use :s /delete 

do it again 
+0

我最終使用「windows」而不是systemroot,並且還刪除了%〜(它允許它在系統上下文下運行,而不是從命令行運行) – Mathew 2009-06-05 17:22:10

回答

1

,您可以提示用戶爲輸入(並將其存儲到一個環境變量)與set /p命令:

set /p HOST=Machine? 
net use S: \\%HOST%\C$ ... 

通過使用可循環一個標籤並跳轉到它。您應該提供一種方式來退出,但:

:loop 
set /p HOST=Machine? (leave blank to exit) 
if [%HOST%]==[] goto :EOF 
net use S: \\%HOST%\C$ ... 
copy ... 
... 
goto loop 

如果你不想單獨輸入每個主機名,你也可以遍歷所有的參數傳遞給批處理文件:

:loop 
if [%1]==[] goto :EOF 
net use S: \\%1\C$ ... 
copy ... 
... 
shift 
goto loop 

可以可以調用它,如下所示,然後:

my_batch machine1 machine2 192.168.12.14 ... 

HTH

0

您可以使用 「如果ERRORLEVEL 1」 看如果副本中出現錯誤,可以讓您陷入複製問題。除了用「if EXIST」來檢查文件是否在那裏,你可能會得到一些零長度的文件。

雖然,您可能希望調查PowerShell作爲一項更有能力的工具。

相關問題