[前の記事]« PC9821のDOSでDEL /Yしたい
[次の記事]rshのバージョンによる違いについて »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「ERRORLEVEL」索引へ
▲カテゴリー「遅延環境変数の展開」索引へ

バッチファイル化したときだけERRORLEVELがうまく取得できない

283.
errorlevelの取得
2005年02月18日(金) 13時22分
JS
●DOS/Windowsのバージョン↓
2000SRV と XPhome

ERRORLEVELの取得について質問なのですが
for文で特定の名前のファイルを取得し取得分ループ
■ファイル名を特定の名前でコピー
■SQLserverのDTSを起動しファイルの内容をDBにINSERT
■■でコピーしたファイルを削除
■取込元となったファイルを名前を変えて別フォルダへ保存

といった流れのDOSバッチを作成したいのですが
各処理で異常終了した場合、途中で処理を抜けるよう
ERRORLEVELを取得して判断しようとしてるのですが
■~■の処理を単独でコマンドラインから行った場合と
バッチで行った場合で返す値が違うのですが、書き方が
おかしいのでしょうか?

ソースは以下です。「■」とかは実際のソースには
記述していません。





@echo off
setlocal enabledelayedexpansion
for /f %%A in ('dir /b ..\..\ftp\recv\IA\TUKIBETU_????.csv') do (

■copy /Y ..\..\ftp\recv\IA\%%A        ..\..\ftp\recv\IA\TEMP.txt

set EL=%errorlevel%
echo ELv %EL%
if %EL% NEQ 0 goto error

■dtsrun -S SRV2000 -U emc -P emc -N IAj_Busho_Gettrgval_WK_DTS
set EL=%errorlevel%
echo ELv %EL%
if %EL% NEQ 0 goto error



■del ..\..\ftp\recv\IA\TEMP.txt
set EL=%errorlevel%
echo ELv %EL%
if %EL% NEQ 0 goto error


■MOVE /Y ..\..\ftp\recv\IA\%%A ..\..\ftp\backup\IA\%%A取込済
set EL=%errorlevel%
echo ELv %EL%
if %EL% NEQ 0 goto error




)

:nomal
exit /b 0
:error
exit /b 1
284.
Re:errorlevelの取得
2005年02月18日(金) 17時01分
じゃく
>●DOS/Windowsのバージョン↓
>2000SRV と XPhome

>■~■の処理を単独でコマンドラインから行った場合と
>バッチで行った場合で返す値が違うのですが、書き方が
>おかしいのでしょうか?

 for文が呼ばれた時点で括弧内の %errorlevel% が全て
 そのときのエラーレベルの値に置き換えられるからです。

 set /? の解説をお読みになると理解しやすいと思います。
 
 


カテゴリー「ERRORLEVEL」索引へ
カテゴリー「遅延環境変数の展開」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2005年02月18日 11:35に投稿されたエントリーのページです。

ひとつ前の投稿は「PC9821のDOSでDEL /Yしたい」です。

次の投稿は「rshのバージョンによる違いについて」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート