[過去ログ] 【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
338
(4): 2018/02/05(月)04:53 ID:j3KUW6ez(1/5) AAS
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
省12
339
(1): 2018/02/05(月)05:04 ID:j3KUW6ez(2/5) AAS
>>338 追記
パスに空白を含む場合も問題ですが、
 set testExe="D:\abc\test.exe"
のように空白を含まない場合には
 ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。
と言われてエラーになるので、それも含めてなんとかしたいという点を書き忘れていました。

「FOR文でフルパスでコマンドを実行したい場合、どうすればよいのでしょう」というのが根本的な質問です。
340: 2018/02/05(月)05:55 ID:j3KUW6ez(3/5) AAS
すみません。>>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
省8
344: 2018/02/05(月)11:16 ID:j3KUW6ez(4/5) AAS
>>341
できました!なるほど、startを使えばよかったのですね・・・。ありがとうございます。

>>342
なんなんでしょうね。仕組みがよくわからないです・・・。どなたか解説を・・・。
346: 2018/02/05(月)11:37 ID:j3KUW6ez(5/5) AAS
>>343 >>345
重ねてありがとうございます。
cmdの場合は以下でうまくいくようです。

set testExe="D:\a bc\test.exe"
FOR /F "tokens=3" %%a IN ('cmd /c %testExe% --help ^| findstr "TargetStr"') DO (
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.041s