[前の記事]« LocalSystemアカウントでコマンドを起動するには?
[次の記事][win2000]ATで設定したプログラムが実行されない »

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

▲カテゴリー「CHDIR/CD/MD/RD…ドライブ/ディレクトリ切替、パス名の取扱い」索引へ
▲カテゴリー「DEL,ERASE,REN…ファイル削除/復活/移動/名前の変更」索引へ
▲カテゴリー「ERRORLEVEL」索引へ

[WIN2000]MKDIRからのERRORLEVEL取得がうまくいかない

897.
フォルダを用いた排他制御
2004年10月05日(火) 17時31分
suna
#Windows2000を用いております。

こんにちわ。
一日中悩んでいる問題があり、
ヒントをいただければ、と思い書き込みさせていただきます。

mkdirを用いた排他制御を実施したいと思うのですが、
mkdirコマンドからはerrorlevelが取得できないのでしょうか?
errorlevelの取得が不可能な場合、
皆様はどのような形で排他制御を実施されているのでしょうか??

何かアドバイスをいただけると助かります。

===
for %%i in (1 2 3 4 5) do (
  mkdir test
  set error=%errorlevel%
  if '%error%'=='1' GOTO SUCCESS
    REM 失敗
    echo ディレクトリ作成失敗・・・errorlevel:%errorlevel%
    echo ディレクトリ作成失敗・・・error:%error%
    endlocal
    GOTO :EOF
)

:SUCCESS
  REM 成功
  echo ディレクトリ作成したよ!errorlevel:%errorlevel%
  echo ディレクトリ作成したよ!error:%error%
  endlocal
  GOTO :EOF
===
この場合、errorlevelは0が表示され、errorには値が格納されませんでした。
===

本当に初歩的な質問で申し訳ありませんが、
よろしくおねがいいたします。
898.
Re:フォルダを用いた排他制御
2004年10月05日(火) 19時07分
oo
>#Windows2000を用いております。

>こんにちわ。
>一日中悩んでいる問題があり、
>ヒントをいただければ、と思い書き込みさせていただきます。

ヒントということなのでヒントを。うまく行かない理由は set /? の後半に書いてあります。
解決策のヒントとしては、
(案1) ( )でなくサブルーチンを使う
(案2A) setlocal enabledelayedexpansion する
(案2B) cmd /v:on /c でバッチファイルを起動する
(案2C) レジストリを変更する
(案3) IF ERRORLEVEL 1 GOTO という古い書式を使う
setlocalして良ければ案2Aがおすすめ。
899.
Re2:フォルダを用いた排他制御
2004年10月05日(火) 22時08分
suna

>(案1) ( )でなくサブルーチンを使う
>(案2A) setlocal enabledelayedexpansion する
>(案2B) cmd /v:on /c でバッチファイルを起動する
>(案2C) レジストリを変更する
>(案3) IF ERRORLEVEL 1 GOTO という古い書式を使う
>setlocalして良ければ案2Aがおすすめ。
ooさん、お返事ありがとうございます。
早速setとcmdのマニュアル内容を読んで、気が付きました!
遅延環境変数の展開設定が必要なのですね。
setlocalを指定してもOKでしたので、
(案2)でつくってみました。

===
setlocal enabledelayedexpansion

mkdir test
set error=%errorlevel%

if "!error!"=="0" GOTO SUCCESS else GOTO FAIL

:FAIL
REM 失敗
echo ディレクトリ作成失敗・・・errorlevel:%errorlevel%
echo ディレクトリ作成失敗・・・error:!error!
endlocal
GOTO :EOF

:SUCCESS
  REM 成功
  echo ディレクトリ作成したよ!errorlevel:%errorlevel%
  echo ディレクトリ作成したよ!error:!error!
  endlocal
  GOTO :EOF
===

非常に勉強になりました。
本当にありがとうございました。
 
 


カテゴリー「CHDIR/CD/MD/RD…ドライブ/ディレクトリ切替、パス名の取扱い」索引へ
カテゴリー「DEL,ERASE,REN…ファイル削除/復活/移動/名前の変更」索引へ
カテゴリー「ERRORLEVEL」索引へ

 

カテゴリー一覧

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


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

資料書籍

About

2004年10月05日 08:42に投稿されたエントリーのページです。

ひとつ前の投稿は「LocalSystemアカウントでコマンドを起動するには?」です。

次の投稿は「[win2000]ATで設定したプログラムが実行されない」です。

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

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