• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでコマンドプロンプトの結果を変数に代入)

VBAでコマンドプロンプトの結果を変数に代入する方法について

bin-chanの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

PCの電源が入らないので未テストですが。 > sCmd = """D:\xxxx\ffmpeg\bin\ffmpeg"" -i ""d:\xxxx\aaff.mp4"" 2>&1 | grep Duration" grepの結果をリダイレクトしてないのでは? sCmd = """D:\xxxx\ffmpeg\bin\ffmpeg"" -i ""d:\xxxx\aaff.mp4"" 2>&1 | grep Duration > foovar.txt でどうなりますか?

Taruuuto
質問者

お礼

ありがとうございます。 最後に"を付けて sCmd = """D:\xxxx\ffmpeg\bin\ffmpeg"" -i ""d:\xxxx\aaff.mp4"" 2>&1 | grep Duration > foovar.txt" を実行してみました、しかうまくいきませんでした。 そもそも "D:\xxxx\ffmpeg\bin\ffmpeg" -i "d:\xxxx\aaff.mp4" 2>&1 | grep Duration > foovar.txt をコマンドライン上で実行しても何も出力されないのですが foovar.txtというのはフルパスで指定しなくて良いのでしょうか?

Taruuuto
質問者

補足

原因が分かりました。 ダブルクオーテーションマークが問題のようです sCmd = "D:\ffmpeg -i d:\aaff.mp4 2>&1 | grep Duration" 全てのファイルをドライブ上において""""を抜いて実行するとうまくいきます。 それでは """"有りで実行するにはどうしたら良いですか?  

関連するQ&A

  • コマンドプロンプトの出力をVBScript内の変数に代入する

    VBScriptからコマンドプロンプトのver | findstr 5.1を実行し、その出力結果をVBScript内の変数に代入したいのですが、どうすればいいでしょうか? Dim WShell Dim result Set WShell = WScript.CreateObject("WScript.Shell") WShell.Run "cmd /c (ver | findstr XP > " & result & ")" MsgBox result とやってもresultには何も入っていませんでした。

  • コマンド実行結果を変数に代入できない(shell)

    Kシェルを作成しており、以下のコマンドを変数に代入することができません。 DIR1=`ls ${SOURCE_FILE_PATH} | grep ${INTERFACE_ID} > /dev/null 2>&1` やりたいことは単純で、 ${SOURCE_FILE_PATH} に ${INTERFACE_ID}フォルダが存在するかを確認するために、実行結果をDIR1に格納したいだけです。 しかし、sh - xでデバッグすると、仮にフォルダがあったとしても、何も代入されず終わってしまいます。 パイプ処理やgrepを使用したコマンドを変数に代入する方法をご存知の方いらっしゃいましたらご教授願います。

  • ipconfig /all を環境変数へ代入方法

    http://d.hatena.ne.jp/necoyama3/20081218/1229604217 にて、ipconfigコマンドを実行して標準出力を取得する方法があり、下記VBSで きちんと動くのですが、 ------------------------------- Dim objShell Dim wExec Dim sCmd Set objShell = CreateObject("WScript.Shell") ' コマンド生成 sCmd = "ipconfig" ' コマンド実行 Set wExec = objShell.Exec("%ComSpec% /c " & sCmd) Do While wExec.Status = 0 Loop Result = wExec.StdOut.ReadAll MsgBox Result Set wExec = Nothing Set objShell = Nothing ----------------------------------- sCmdを下記に差し替えると、動かなくなります。 sCmd = "ipconfig /all" もしくは sCmd = "systeminfo" これらコマンドに差し替えてもVBSを動かす方法は ありますでしょうか。 直接、コマンドラインで ipconfig /all や systeminfoを入力する場合は きちんと出力されます。

  • expectでコマンド実行結果を変数に代入出来ない

    test.sh #!/bin/sh expect -c " set timeout -1 spawn telnet $1 expect "login:" ; send \"username\r\" expect "sword:" ; send \"password\r\" expect ${1} ; send \"start shell\r\" expect ${1} ; send \"set val=`date +%Y'-'%m%d`\r\" expect ${1} ; send \"echo $val\r\" expect ${1} ; send \"exit\r\" expect ${1} ; send \"exit\r\" exit " 例えばリモートホスト側で コマンド date +%Y'-'%m%d の実行結果を valに代入したいのですが 代入結果をechoコマンドで表示させても上記コマンド実行結果が 変数に代入されていないのか何も表示されません リモートホストに変数valを表示させるのがうまくいっていないんじゃないかと 思うのですが特殊文字($val)を正しく変数として解釈させる方法をご教示いただけませんでしょうか?

  • コマンドの実行結果を変数に格納いしたい。

    有るプログラムへ特定ディレクトリのファイル数を渡す必要があり、バッチファイルを書いてますが、うまく行きません。 アドバイスを頂けましたら幸いです。 コマンドの実行欠課を変数に格納する方法を調べており、FOR文を使う事は分かったのですが、パイプを使った処理がうまく行きません。 ◎実行したいコマンド DIR /B | FIND /C /V "log” ◎バッチファイル @ECHO OFF for /f "usebackq tokens=*" %%i in (`DIR /B | FIND /C /V "log"`) do @set RESULT=%%i echo %RESULT% @ECHO ON パイプを使わず、単純なコマンドだと正常に変数に格納されますので、パイプでFINDに渡している事がだめだと思っております。 こういった場合、どう書けばよいかお教えください。

  • Excelで、WScript.Shell、標準出力

    Excelで、WScript.Shellを使って、標準出力を経由してデータを取得 Excelで、CreateObject("WScript.Shell")を使って、標準出力を経由してデータを取得したいと考えたのですが、サイズに制限がありそうです。 標準出力のサイズが4096バイトを超えると、DOS窓が閉じず、強制的に終了させると超えた分はどこかへ消えました。 下記のコードで確かめたのですが、何かこの容量の制限を取り払う方法はないでしょうか? Sub Sample1標準出力0() Dim WSH, wExec Dim sCmd As String Dim Result As String Set WSH = CreateObject("WScript.Shell") sCmd = "type D:\t.txt" Set wExec = WSH.Exec("%ComSpec% /c " & sCmd) Do While wExec.Status = 0 DoEvents Loop Result = "" Result = wExec.StdOut.ReadAll Debug.Print Len(Result) MsgBox Result Set wExec = Nothing Set WSH = Nothing End Sub

  • コマンドプロンプトについて

    コマンドプロンプトのコマンドに『set』があります。 2000/XPにおいては、オプションで[/P]を指定することによりキーボードからの入力を変数にセットできますがWindowsNTにおいても使用することが出来るのでしょうか?(キーボード入力によって実行する処理を変えたい) また、不可能である場合他の方法があればご教授していただけるようお願いします。

  • Word VBAでStyle型の変数に空の値を代入

    Word VBA でStyle型の変数に空の値を代入したい! 下記コマンドでテストしたところ、 Set style = "" では、型が違うと怒られます。 どのようにしたら、空のスタイル値を代入出来るのでしょうか? Sub stylevartest() Dim style As style Set style = "" MsgBox style End Sub 分かる方入らしたら、ご教授下さい。 よろしくお願い致します。

  • バッチファイルの変数引継ぎについて

    行き詰ってしまったので、どなたか知恵を授けていただければと思います。 現在、あるソフトウェアの「バッチモード」という機能を使用したバッチを作成していて、構文が > sdcmd batch ***.txt 上記のようにコマンドを羅列したテキストファイルを指定した実行コマンドになります。 sdcmd以降はソフト指定のコマンド以外は使用できず、変数設定ができない為に変数設定とログ保存を兼ねて上記コマンドを記載したバッチを > setlocal EnableDelayedExpansion > set ○=△△△ > set ■=◇◇◇ > call aaa.bat %* >> aaa.log 2>&1 という内容の呼び出しバッチを作成たのですが、テキストファイル内の変数が代入されずに 実行されてしまいます。 cmd上から直接 > setlocal EnableDelayedExpansion > set ○=△△△ > set ■=◇◇◇ > sdcmd batch ***.txt >> aaa.log 2>&1 を実行しても変数の代入は行われませんでした。 cmd上で変数とテキストファイル内のコマンドを手動実行すれば変数は解決できます。 設定した変数を、テキストファイル内の変数値に代入する方法はあるでしょうか。

  • 空白を含んだシェル変数の代入

    こんにちは。 空白を含んだシェル変数の代入について教えてください。 set test1="ABCD EFGHIJ" set w1=$test1 echo "w1 = $w1" このようなシェルスクリプトを実行させた時 w1 = ABCD と表示されてしまいます。 解決案があれば教えてください。 よろしくお願いします。