質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

1回答

3911閲覧

バッチファイル for文内で実行したcopyコマンドのerrorlevel取得方法

koiwaimilk777

総合スコア0

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2020/05/07 10:31

前提・実現したいこと

バッチファイルでの質問です。
for文内で実行したcopyコマンドのエラーレベルの取得の仕方について、
ご教示頂きたく思います。

実現したいことは以下の①②となります。

①copyコマンドの実行結果を、変数としてCOPY_KEKKAに代入する
②copyコマンドのエラーレベルを、変数としてCOPY_ERRORLEVELに代入し、後続処理で利用する

①については、for文内でcopyコマンドを実行することで実現できたので、
②の実現方法について、質問させて頂いております。

発生している問題・エラーメッセージ

for文内で実行しているcopyコマンドがエラーとなった場合にも、
ERRORLEVELが"0"となってしまう。

該当のソースコード

・コピー先ファイルの"b.txt"を読み取り専用にし、copyコマンドが失敗するようにしている
・copyコマンドのerrorlevelをCOPY_ERRORLEVELに代入し、for文終了後にechoしている

setlocal enabledelayedexpansion for /f "usebackq delims=" %%a in (`copy /y a.txt b.txt 2^>^&1`) do ( set COPY_ERRORLEVEL=!ERRORLEVEL! set COPY_KEKKA=!COPY_KEKKA!%%a ) echo %COPY_ERRORLEVEL% endlocal

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

コピー結果の最後にERRRORLEVELが付加されてしまうと言う事を我慢すれば、これで出来ます。

CMD

1setlocal 2for /f "usebackq delims=" %%A in ( 3`cmd /v:on /c "COPY NUL C:\not\exist\path 2>&1&echo !ERRORLEVEL!"` 4) do call :SUB "%%A" 5set COPY_ 6exit /b 7 8:SUB 9set "COPY_ERRORLEVEL=%~1" 10set "COPY_KEKKA=%COPY_KEKKA%%~1"

投稿2020/05/07 11:17

otn

総合スコア84498

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問