[過去ログ]
【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1489207631/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
338: デフォルトの名無しさん [sage] 2018/02/05(月) 04:53:11.12 ID:j3KUW6ez 1.test.exeという実行ファイルがある。 2.test.exeのフルパスは必要に応じて「test.exeをShift+右クリック」→「パスをコピー」して変数testExeに格納してもらう。 このフルパスには"D:\a bc\test.exe"のように空白が含まれることがあるとする。 3.FOR文でこのtest.exeを--helpオプションつきで実行し、結果からfindstr&setしたい。 ---作成バッチ--- @echo off cd /d %~dp0 set testExe="D:\a bc\test.exe" FOR /F "tokens=3" %%a IN ('%testExe% --help ^| findstr "TargetStr"') DO ( set kekka=%%a ) @echo %kekka% pause ---実行結果--- 'D:\a' は、内部コマンドまたは外部コマン ド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ---解1--- testExeを設定する際、全体をダブルクォートで囲むのではなく、 空白を含むフォルダだけをダブルクォートで囲むようにする。 set testExe=D:\"a bc"\test.exe 解1はtestExeの設定が地味に面倒になってしまうので回避したいのですが、何か良い方法はないでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1489207631/338
339: デフォルトの名無しさん [sage] 2018/02/05(月) 05:04:15.80 ID:j3KUW6ez >>338 追記 パスに空白を含む場合も問題ですが、 set testExe="D:\abc\test.exe" のように空白を含まない場合には ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。 と言われてエラーになるので、それも含めてなんとかしたいという点を書き忘れていました。 「FOR文でフルパスでコマンドを実行したい場合、どうすればよいのでしょう」というのが根本的な質問です。 http://mevius.5ch.net/test/read.cgi/tech/1489207631/339
340: デフォルトの名無しさん [sage] 2018/02/05(月) 05:55:25.28 ID:j3KUW6ez すみません。>>338-339ですが、直接フルパスで実行するのではなくフォルダに移動して実行することで一応解決しました。 --- @echo off cd /d %~dp0 set testExe="D:\a bc\test.exe" FOR /F "tokens=1 delims=" %%I IN (%testExe%) DO ( IF "%%~nxI"=="test.exe" ( pushd "%%~dpI" FOR /F "tokens=3" %%M IN ('.\%%~nxI --help ^| findstr "TargetStr"') DO ( set kekka=%%M ) popd ) ) @echo %kekka% pause --- 問題点や、もっとスマートな方法があれば、教えていただけると助かります。 http://mevius.5ch.net/test/read.cgi/tech/1489207631/340
344: デフォルトの名無しさん [sage] 2018/02/05(月) 11:16:40.07 ID:j3KUW6ez >>341 できました!なるほど、startを使えばよかったのですね・・・。ありがとうございます。 >>342 なんなんでしょうね。仕組みがよくわからないです・・・。どなたか解説を・・・。 http://mevius.5ch.net/test/read.cgi/tech/1489207631/344
346: デフォルトの名無しさん [sage] 2018/02/05(月) 11:37:48.40 ID:j3KUW6ez >>343 >>345 重ねてありがとうございます。 cmdの場合は以下でうまくいくようです。 set testExe="D:\a bc\test.exe" FOR /F "tokens=3" %%a IN ('cmd /c %testExe% --help ^| findstr "TargetStr"') DO ( http://mevius.5ch.net/test/read.cgi/tech/1489207631/346
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.038s