2016-08-07 14 views
1
私は5台の他のマシンにあるマシンから特定のファイルをコピーしたい

をコピーするので、私は、サーバーリストファイルのような各マシンのIPアドレスが含まれています:私のバッチファイルでNET USE複数のサーバは、ファイル

10.10.1.3 
10.10.1.4 
10.10.1.5 
10.10.1.6 
10.10.1.7 

を:

SET File=C:\Files\servers.txt 
SET User=user 
SET Password=pass 

     IF EXIST b:\ (
     NET USE b: /DELETE /Y 
    ) 

     FOR /F %%A IN (%File%) DO (
       START /WAIT NET USE b: \\%%A\C$\Temp /user:%User% %Password% 

       COPY C:\Logs\L1.log b:\L1.log /Y   

      IF EXIST b:\ (
        NET USE b: /DELETE /Y 
       ) 
     ) 

問題が最初のサーバーに表示されるエラーメッセージが表示されます。システムは指定されたドライブを見つけることができませんが、他のサーバーではすべてがうまく動作します。 私はそれがNET USEを使って何かだと思うかもしれません。

いくつかのサーバーをループし、各サーバーのマップネットワークコピーファイルをコピーして次のサーバーに移動するまで待機する方法はありますか?

EDIT:

私はこの問題を更新する: ソースマシンとターゲットマシンの異なるドメインの両方です。 私は両方のマシンでadminとしてユーザーを定義しています。 マシンは互いに知っています(\ server \ C $ \ tempのようなソースマシンでターゲットフォルダを開き、そこに必要なものを貼り付けることができます)

net useを使わずにファイルをコピーしようとしましたが、 C:¥file.log¥server¥c $¥temp¥file.log(各サーバー)(5つ)と3台のサーバーで動作し、残りの2つはエラーが発生しました:ログオン失敗:不明なユーザー名またはパスワードが間違っています

FOR /F %%A IN (%File%) DO (
     COPY C:\temp\file.log \\server\c$\temp\file.log /Y 
) 

何が問題になりますか?

助けてください? ありがとうございます。

+0

'NET USE b:/ DELETE/Y'ではなく' NET USE b:/ DELETE:Y [ES] 'ではありませんか? – aschipfl

+0

netコマンドでstartコマンドを使用する必要はありません。バッチファイルは順次処理です。次のコマンドは、前のコマンドが終了するまで実行されません。 – Squashman

+1

@aschipfl:それは単なる 'net use b:/ delete'です。 – Stephan

答えて

0

STARTコマンドを使用する場合、新しいウィンドウ名を指定するか、同じ開いたCMDウィンドウで実行する場合は、二重引用符で空白のままにする必要があります。ただし、この場合はSTARTを使用する必要はありません。第一またはリスト内のすべてのサーバー接続のタイムアウトを追加してみてください:ユーザー/パスワードがすべてのマシンで同じである場合

IF EXIST b:\null NET USE b: /DELETE 
:: more code here 

NET USE b: \\%%A\C$\Temp /user:%User% %Password% 
if "%%A"=="10.10.1.3" timeout 5 >nul 
+3

、なぜ 'start'を使うのですか? 'NET USE'だけで大丈夫です。 –

+0

'/ DELETE:YES'は構文エラーを生成します。 '/ delete'だけです。 – Stephan

0

最良の方法は次のようになり、その中

(credientalsは、ドメイン全体で共有します)場合、NET USEの必要は、ちょうど直接

FOR /F %%A IN (C:\Files\servers.txt) DO COPY /Y C:\Logs\L1.log \\%%A\C$\Temp\L1.log 

UNCパスにコピーし、私はあなたがマシンの管理者でない場合は、C $直接アクセスすることはできません5のうち2台のマシン上の問題を持って理解していません。

チェック:(リモートマシン上のecho %USERDOMAIN%

  • ドメイン:あなたがマウントできない:リモートマシンの管理者であるかどうか、それは
  • を動作させるためのすべてのマシンが同じドメイン上にある必要がありますあなたが管理者でない場合、C$のトリックでドライブします。これがうまくいかない場合

あなたのための代替ソリューションがあります:

シェアC:\TEMP(読み取り/書き込み)同じ名前の例として:5台のマシン上sharedtemp(または管理者に尋ねます

は、このようなスクリプトを適応させる)ことを行うために:

FOR /F %%A IN (C:\Files\servers.txt) DO COPY /Y C:\Logs\L1.log \\%%A\sharedtemp\L1.log 

をあなたが管理者でない場合でも、あなたは株をそのようにアクセスできるようになります。

+0

ソースマシンがターゲットマシンと異なるドメインにある – user3132295

関連する問題