初めての店舗開業を成功させよう>>

はじめまして質問させていただきます。

最近PowrShellを書き始めました

そこでですが、PowrShellにおいてBatならERRORLEVEL、Shellなら$?といったコマンドの実行結果コードをとる方法がありますしょうか?

PowerShelでも$?は使用できますが、True/Falseだけなので生後判定が2種類しかないので・・

このQ&Aに関連する最新のQ&A

A 回答 (1件)

$LastExitCodeとか。


例外と使い分ける必要があります。

参考URL:http://technet.microsoft.com/ja-jp/library/bb978 …
    • good
    • 2
この回答へのお礼

回答ありがとうございます。

例外設定については納得しました。

ただ$LastExitCodeについてですが、これはWindowsベースコマンドの判別でps1コマンド単体の戻り値などは取れなかった認識です

今更の補足ですが、下記のコマンドの戻り値などを見分けたかっ場合
Test-Connection -ComputerName $XXXX -Quiet
(Get-WmiObject win32_operatingsystem -ComputerName XXX).Win32Shutdown(1)

上記の場合も何か取れたりしますか?

お礼日時:2011/07/24 10:49

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QPowerShellからPowerShellを呼び出す方法

PowerShellからPowerShellを呼び出す方法

次のバッチファイルと同等の事をPowerShellで行う方法を教えて下さい。

下記のような非常に簡易的なバッチファイルがあるとします。

■ aaa.bat ■
echo test
■ aaa.bat ■


■ bbb.bat ■
aaa.bat > aaa.log
■ bbb.bat ■


■ コマンドプロンプト ■
cmd> aaa.bat ・・・ 下に「test」と出力される
test
cmd> bbb.bat ・・・ ファイルaaa.logに「test」と出力される
■ コマンドプロンプト ■



同じ事をPowerShellでするとすれば

■ aaa.ps1 ■
echo "test"
■ aaa.ps1 ■


■ PowerShellの画面から ■
PS > ./aaa.ps1 ・・・ 下に「test」と出力される
test
PS > ./bbb.ps1 ・・・ ファイルaaa.logに「test」と出力される
■ PowerShellの画面から ■

この時の「bbb.ps1」はどのようになりますか?

PowerShellからPowerShellを呼び出す方法

次のバッチファイルと同等の事をPowerShellで行う方法を教えて下さい。

下記のような非常に簡易的なバッチファイルがあるとします。

■ aaa.bat ■
echo test
■ aaa.bat ■


■ bbb.bat ■
aaa.bat > aaa.log
■ bbb.bat ■


■ コマンドプロンプト ■
cmd> aaa.bat ・・・ 下に「test」と出力される
test
cmd> bbb.bat ・・・ ファイルaaa.logに「test」と出力される
■ コマンドプロンプト ■



同じ事をPowerShellでするとすれば

■ aaa.ps1 ■
echo "test"
■ aaa.ps1 ■


■ ...続きを読む

Aベストアンサー

回答番号:No.1 お礼へのアドバイスです。

>「キックして結果を待は待たずに次の処理をする」
>などのバリエーションは可能でしょうか?

使いこなせていませんがPowerShell 2.0ではバックグラウンドジョブが実現されました。下記の@ITの記事などが参考になると思います。

http://www.atmarkit.co.jp/fwin2k/winsv2008r2/03powershell/03powershell_03.html

Windows7で Start-Job, Get-Job, Receive-Jobが働くことを確認しました。

QPowerShellでのエラー出力の読み捨て

PowerShellでスクリプトを書いています。そこで、かならずメッセージが表示される処理があります。無視してかまわない内容なので、bash等の 2> /dev/null に相当するような「読み捨て」を行いたいのですが、PowerShell でのやり方がわかりません。ご存知の方、教えてください。

Aベストアンサー

2>Out-Null

参考URL:http://www.google.co.jp/search?hl=ja&q=powershell+redirect+error+null&lr=lang_ja

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

よろしくお願い致します。

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた

QROBOCOPY.exeの終了コード

タイトルのコピーツールについて、
バッチファイルなどで、エラー時の判定を行いたいのですが、
どんな値をどのように返してくるか、色々調べても分かりませんでした。
分かった範囲では、0~16まで値を持っているようで、
正常終了だから、0(ゼロ)という訳ではなさそうです。
手元にROBOCOPY.docなどのマニュアルがなく、調べがついていません。
どこか参考マニュアルなどがありましたら、ご教示よろしくお願いします。

Aベストアンサー

No.1 の補足質問に対する回答です。
.doc からリターンコードのリストだけ記載しようかとも思いましたが、探してみるものですね。参考URLよりダウンロードできることを確認しました。

QPowerShellでの外部ファイルからの変数読み

PowerShelにおいて外部ファイルに書いてある変数を設定したと考えています。

たとえばread.iniファイルに下記の記載があるとします。
[yomikomi]
FilePath,C:\temp\test
MODRI,3
Message,"エラーが起きました"

このファイルをps1ファイルで読み込んで変数にしたい感じです。
$FilePath=C:\temp\testといった感じ)
区切り文字とかは何でもいいです。

読み込ませ形式についてはiniかps1形式が理想です。

ただ実行ps1ごとに読み込ませるファイルが異なるため.profileなどの初期読みこみ
系にかけない状況です。(profileがもっと応用的に使用できるならいいですが)

よろしくお願いします。

Aベストアンサー

丁度同じような話が出ました。
http://okwave.jp/qa/q6899282.html

ポイントの部分だけ抜き出したものを載せておきます。
不要行の読み飛ばしや配列利用は、適宜応用してみて下さい。


*** 以下の2ファイルを同ディレクトリに配置し、script.ps1を実行する ***

*** script.ps1 ***
Get-Content .\read.ini | Foreach-Object {
$name, $value = $_.split(',', 2)
Invoke-Expression "`$$name='$value'"
}

echo $FilePath $MODRI $Message

*** read.ini ***
FilePath,C:\temp\test
MODRI,3
Message,"エラーが起きました"

QコマンドプロンプトのERRORLEVELについて!

コマンドプロンプトの記述で、ERRORLEVELというのがありますが
そのERRORLEVELが、0の場合は正常終了と考えていいのでしょうか?

Aベストアンサー

>if not ERRORLEVEL 1 goto aaa
>教えていただいた上記記述なんですが、
>1じゃないということは、2~255も含まれるのではないのでしょうか?
>素朴な疑問ですいません。

if文の文法については、if /? で調べてください。

if ERRORLEVEL 1 goto aaa は、ERRORLEVEL が1以上の時にgoto aaaするという意味です。ということを#4の人が書いてるのですが・・・
従って、その否定である、
if not ERRORLEVEL 1 goto aaa は、ERRORLEVEL が1未満つまり0のときにgoto aaaします(負になることはないので)。

Qバッチファイルで昨日の日付を取得

すみません、どなたか教えて下さい。

バッチファイルの記述で、昨日の日付を取得する方法を教えて下さい。
今日の日付は下記のように取得しています。

rem 日時変数の取得
for /f "tokens=1-3 delims=/" %%a in ('echo %date:~-10%') do (set YYYYMMDD=%%a%%b%%c
)

Aベストアンサー

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if %mm%==05 (set mm=04&& set dd=30)
if %mm%==06 (set mm=05&& set dd=31)
if %mm%==07 (set mm=06&& set dd=30)
if %mm%==08 (set mm=07&& set dd=31)
if %mm%==09 (set mm=08&& set dd=31)
if %mm%==10 (set mm=09&& set dd=30)
if %mm%==11 (set mm=10&& set dd=31)
if %mm%==12 (set mm=11&& set dd=30)
)
echo 昨日は、%yy%年%mm%月%dd%日です。

echo.
pause
:: ----- prevdate.bat おわり -----

参考URL:http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if...続きを読む

Qバッチ処理でファイルの中身を変数に入れるやり方

あるファイルの中には1行の文字列があります。
このファイルをバッチで読み取り、変数に設定したいです。

例:
test.txt
abcacbacbacbacbacbacbacbacb

test,bat
set DATA=[test.txtを読み込んだ値]

よろしくお願い致します。

Aベストアンサー

これですね。

参考URL:http://www.upken.jp/kb/dqvgHNRUxwFDkmtoqEwfXHUjDrevNv.html

Qバッチでテキストファイルから任意の行のみ取得したい

batファイルを作成していて、
txtから特定の行のみをとりだし、変数に入れたいです。
どうもよくわからないので質問したいと思います。
まず以下の様なテキストファイルがあります。
-------------------
111
222
333
-------------------
実際の値、行数は違いますが、こんな感じに文字列が複数行並んでいます。

行いたい動作は、
-----------------------------------------
1.テキストファイルの1行目を変数Textに入れる(set Text=111)
2.変数Textを使用し色々処理をする
3.テキストファイルの2行目を変数Textに入れる(set Text=222)
4.変数Textを使用し色々処理をする
-----------------------------------------
コレを繰り返します。
2と4は同じ動作ですので、行数のカウンタを設定しループさせる予定です。
n行目を全て取り出す方法がわかれば行けると思うのですが、
どうも見つかりません。ご存知の方がいればお教え願いたいと思います。

batファイルを作成していて、
txtから特定の行のみをとりだし、変数に入れたいです。
どうもよくわからないので質問したいと思います。
まず以下の様なテキストファイルがあります。
-------------------
111
222
333
-------------------
実際の値、行数は違いますが、こんな感じに文字列が複数行並んでいます。

行いたい動作は、
-----------------------------------------
1.テキストファイルの1行目を変数Textに入れる(set Text=111)
2.変数Textを使用し色々処理をする
3.テキストファイルの2行目を変数T...続きを読む

Aベストアンサー

No3ですが、たぶん提示したスクリプトを見ると、ある事に気がつくはず?

findstr /n /r "." a.txt | findstr /r "^3:"

で3行目を表示してくれます。え!? それだけ。そうなんです

ただ、あと、先頭の”3:” をどうやって切り離すか? と言う問題にぶつかる。さらにファイルに先頭に”3:”があった場合、どうするのか? さらに、findstr の正規表現の動作が??? 表示すれるのはいいが、変数にどうやってセットするのか?

となる。結局 for 文を使いまわす事になります。

まあ、適当に改変して、上記の問題を解決してください。

Qバッチファイルで自身の名前を取得する方法

%date% で「現在時刻」を取得できるように、現在実行中のバッチファイル名を取得できる方法はありませんか?

OS : Windows XP SP 2

Aベストアンサー

バッチファイル自身のファイル名は %0 で取得できます。

『コマンドプロンプトを使ってみよう:バッチパラメータ・修飾子』
http://ykr414.com/dos/bat.html#05

パラメータ「%1」はバッチファイル実行時に付加された最初のパラメータを表す。
2番目は「%2」、3番目は「%3」で全部で9個のパラメータを渡す事ができる。
特別なものに「%0」があり、これは実行されたバッチファイル名を表す。

参考URL:http://ykr414.com/dos/bat.html#05


人気Q&Aランキング

おすすめ情報