DOSバッチファイルループ処理について
◇-?DOS バッチファイルループ処理について-LF8010-03/25-15:45(248)-No.474060 ┣?!Re:DOS バッチファイルループ処...-KAWAI-03/25-16:49(247)-No.474064 ┃ ┗?!!Re:DOS バッチファイルループ処...-KAWAI-03/25-16:54(247)-No.474065 ┗?!実際に作ってみました...-pandora-03/25-20:59(242)-No.474072
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
474060 | DOS バッチファイルループ処理について | LF8010 | 2009/03/25-15:45 |
メーカー名:富士通 OS名:WindowsXp SP3 パソコン名:FMV-C8230 -- 初めまして。よろしくお願いします。 下記のような処理を実現したいのですが、ヒントを頂けませんでしょうか。 1)NETコマンドにてサーバへアクセスします。 2)コマンドが正常であればそのまま次の処理へ進みます。 3)コマンドが異常であれば1)を10回リトライします。 4)3)を10回リトライしても異常であれば、異常である旨を表示します。 1) net use \\server pass /user:user :ネットワーク接続 net use z: \\server\drive :ドライブ割り当て 2) 正常であればコピー処理します copy c:\aaaa\*.* z:\aaaa 3)★ここの処理が分かりません。 ネットワークに接続できなければ再度1)をリトライします。 その際、最大10回までリトライする事とします。 4) 10回リトライ後もエラーであれば、 ”ネットワーク接続障害。ネットワーク接続を確認” と表示させます。 以上、よろしくお願いします。 |
▲このページのトップに戻る
474064 | Re:DOS バッチファイルループ処理について | KAWAI | 2009/03/25-16:49 |
記事番号474060へのコメント @echo off set A=A :loop0 echo %A% set A=%A%A if not %A% == AAAAAAAAAAA goto loop0 10回ループするサンプルを作ってみました。 これの応用で何とか頑張ってくださいね。 |
▲このページのトップに戻る
474065 | Re:DOS バッチファイルループ処理について | KAWAI | 2009/03/25-16:54 |
記事番号474064へのコメント もっと良い方法がありました。setで四則演算ができるのね。 @echo off set /a A=0 :loop0 set /a A=%A% + 1 echo %A% if not %A% == 10 goto loop0 |
▲このページのトップに戻る
474072 | 実際に作ってみました | pandora | 2009/03/25-20:59 |
記事番号474060へのコメント LF8010さんは No.474060「DOS バッチファイルループ処理について」で書きました。 楽しそうなので、実際に作ってみました 動作は確認済みです [注意点] ・接続対象のコンピュータがネットワーク上に存在しない場合、 ネットワークログオンエラーを net useでは検出できず ネットワークドライブ接続エラーの方で検出する ・リトライは、10回も必要なさそう (ダメなときは全然ダメ) ----(ここから)------------------- @ECHO OFF rem System Define SET HOSTNAME=****** ← コンピュータ名 SET USERNAME=****** ← ログオンユーザー名 SET PASSWORD=****** ← パスワード SET FOLDERPATH=**** ← usr\data といった感じで SET DRIVE=z: SET SLEEPTIME=5 SET RETRY=10 SET LOOP=0 :CONNECT rem Network logon ECHO Network logon Execute net use \\%HOSTNAME% %PASSWORD% /user:%USERNAME% >"%TEMP%\TEMP.LOG" 2>&1 FIND /I "エラー" "%TEMP%\TEMP.LOG" >NUL rem echo ERRORLEVEL=%ERRORLEVEL% IF ERRORLEVEL 1 ( rem Network drive connect ECHO Network drive connect Execute net use %DRIVE% \\%HOSTNAME%\%FOLDERPATH% >"%TEMP%\TEMP.LOG" 2>&1 FIND /I "エラー 85" "%TEMP%\TEMP.LOG" >NUL IF NOT ERRORLEVEL 1 GOTO :ABEND2 FIND /I "エラー" "%TEMP%\TEMP.LOG" >NUL rem echo ERRORLEVEL=%ERRORLEVEL% IF ERRORLEVEL 1 GOTO :SUCCESS ) SET /A LOOP=LOOP+1 IF /I %LOOP% GTR %RETRY% GOTO :ABEND1 rem sleep PING localhost -n %SLEEPTIME% >NUL ECHO. GOTO :CONNECT :SUCCESS ECHO. ECHO Network connect success rem rem My action execute rem pause rem Network drive release net use %DRIVE% /delete DEL "%TEMP%\TEMP.LOG" /Q >NUL GOTO :EOF :ABEND1 ECHO. ECHO Network connect error PAUSE DEL "%TEMP%\TEMP.LOG" /Q >NUL GOTO :EOF :ABEND2 ECHO. ECHO Network drive connect Fail ECHO Drive Already in use PAUSE DEL "%TEMP%\TEMP.LOG" /Q >NUL GOTO :EOF ----(ここまで)------------------- |
何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり
参考 | 回数 | 投稿日時 | 何か一言 |
---|