2009-06-05 6 views
1

내 로컬 디렉터리의 파일 (8)을 네트워크상의 컴퓨터 목록 (호스트 이름 또는 IP)에 복사하거나 다음 번에 입력하라는 메시지를 표시하는 배치 파일이 필요합니다. 내가 선호하는 것 호스트 이름/IP여러 컴퓨터에 파일을 복사하는 일괄 파일

가 나는 또한 반드시 그것을 연결하기 위해 각 시스템의 출력을 참조해야합니다 다음 호스트 이름/IP를 입력해서 또 다시 스크립트를 실행해야하고하지 올바르게 복사되고 성공적으로 복사됩니다. 아마도 "다음 단계로 처리 할 준비가 되셨습니까?" 각 기계 후? 내가 배치 파일이 방법을 모르는

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

"systemroot"대신 "windows"를 사용하고 % ~을 제거했습니다 (명령 줄이 아닌 시스템 컨텍스트에서 실행할 수 있음) – Mathew

답변

1

당신은 사용자에게 메시지를 표시 할 수있다,

지금까지 ?STDIN? 자리를 용서하십시오 않습니다 사용하여 루프 수

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

(및 환경 변수로 저장)에 set /p 명령 입력 레이블을 붙잡고 점프하십시오. 당신은하지만, 종료 할 수있는 방법을 제공해야합니다 :

: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이 경우"를 참조하는 데 사용할 수있는 사본에 오류가 발생하여 사본의 문제점을 트랩 할 수있는 경우. 파일이 있는지 확인하기 위해 "존재하는 경우"와 함께, 길이가 0 인 파일을 얻을 수 있습니다.

하지만 Powershell을 더 유용한 도구로 조사하고 싶을 수 있습니다.

관련 문제