「.bat」のメモ
★はじめに
ちょうど業務で「.bat」を触る機会がありまして、
今後自分が参照するためのメモとして残しておくことにしました。
★お試しした内容
ざっくりと一言で言うと、戻り値(errorlevel)についてをお試ししました。
これまでの私の思い込みだったのですが、
コマンドの実行に失敗した場合、errorlevelは必ず0以外で戻って来るものだと思っていました。
どうやらそうとも限らないようですね。
普段はerrorlevelでの判定を使用することが多いのですが、
状況によってはerrorlevelを使用していても微妙な感じになってしまうこともあるようです。
コマンドの仕様を調べた訳ではありませんが、お試しした結果を載せていこうと思います。
①delで削除に失敗した場合 ←後日
②ファイルの読み込みに失敗した場合
★上記の通り失敗させる方法
基本的には、以下の方法を行うようにします。
その1:ファイルに排他をかておく
エディタの設定を「読み書きを禁止する」に設定して、開いたままにしておく。
その2:ファイルのアクセス権限をなくしておく
※読み込み禁止だけでも良いと思います。
①準備〜結果
〜〜編集中〜〜
②準備〜結果(排他取得時)
実行コマンド
・以下のように読み込みを行う。
@echo off
rem 実行前の戻り値
echo %errorlevel%
rem csvファイルから取得した値を変数に設定
set /P EXWORD=<C:\Users\Public\test\test.csv
rem 戻り値出力
echo %errorlevel%
rem 取得した値を出力
echo %EXWORD%
rem ちょっとストップ
pause
実行結果
別のプロセスが使用中(読み込みには失敗)ですが、戻り値は0になりました。
③おまけ(アクセス権が無い場合)
やること
②と同様。
実行コマンド
②と同様。
実行結果
おまけ1(普通に実行した場合)
おまけ2(同じファイル名のフォルダが存在する場合)
「③おまけ(アクセス権が無い場合)」と同じようになりました。
実行するユーザによって変わるのかな??
★さいごに
もし、以上のような条件も考慮する必要があるのであれば、
実行前に変数の値を""(空)で初期化しておき、実行後に変数の値が""(空)かどうかを判定してあげる必要があるのかなと思いました。
そこまで対応するのかどうかは状況次第ですが、発生することが無いのであれば、
対応しなくても良いかもしれないですね。
Author And Source
この問題について(「.bat」のメモ), 我々は、より多くの情報をここで見つけました https://qiita.com/chanmac083/items/3ef3309cd552c5719291著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .