[過去ログ] 【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
331: 2018/01/29(月)16:22 ID:LZ9wDs2K(2/2) AAS
自分用に書いたbatを流用してみた
多分こんな感じで動くはず

外部リンク:pastebin.com
332
(2): 2018/01/30(火)00:28 ID:fZrZLUfh(1) AAS
>>329
set "a=D:\comp" & set "b=D:\compopen"
setlocal enabledelayedexpansion
for /L %%i in (4,1,1000) do if "!a:~%%i,1!"=="" set "c=%%i" & goto x
:x
endlocal & set "c=%c%"
for /r "%a%" %%i in (*.zip *.rar) do set "d=%%~dpni" & set "e=%%~i" & call :y
goto :eof
:y
setlocal enabledelayedexpansion
省1
333: 330 2018/01/30(火)04:04 ID:I+jPXl6+(1) AAS
>>332
なるほど
自分のは冗長に書きすぎてたね
334
(1): 2018/01/30(火)16:28 ID:/nodnUUg(1) AAS
>>329
使い回しあんまり考えなければ
-------- ここから
set path=C:\Program Files\7-Zip;%path%
cd /d D:\comp
for /f "usebackq delims=" %%i in (`dir /ad /s /b`) do (
echo,"%%~i"
set "tmppath0=%%~i"
call set "tmppath1=D:\compopen%%tmppath0:~7%%"
pushd "%%~i"
省5
335: 2018/01/30(火)17:10 ID:25OUwAYA(1) AAS
AA省
336: 2018/01/31(水)00:35 ID:ah9e2u9N(1) AAS
そもそも、そんな複雑な手続きには、PowerShell, Ruby などを使えw
337: 2018/02/03(土)09:54 ID:y+J4EMEq(1) AAS
コマンドプロンプトの仕様についてだけど、遅延展開ってデフォでONじゃダメだったのかな?
あれ打ち込むのマンドクサ('A`)
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
341
(2): 2018/02/05(月)08:19 ID:ETXmgzVd(1/4) AAS
>>338
@echo off
cd /d %~dp0
set testExe="D:\a bc\test.exe"
for /f "tokens=3" %%a in ('start /wait /b "" %testExe% --help ^| findstr "TargetStr"') DO (
set kekka=%%a
)
@echo %kekka%
pause
342
(1): 2018/02/05(月)08:24 ID:chwOG0ZE(1) AAS
>>338
自分もこの問題に直面して同じ解決策とったんだけどこれって何が原因でこうなるの?
343
(2): 2018/02/05(月)10:47 ID:ETXmgzVd(2/4) AAS
こっちのがいいかも
前に似たようなネタがあったような

set testExe="D:\a bc\test.exe"
for /f "tokens=3" %%a in ('cmd /s /c "%testExe% --help | findstr "TargetStr""') do (
344: 2018/02/05(月)11:16 ID:j3KUW6ez(4/5) AAS
>>341
できました!なるほど、startを使えばよかったのですね・・・。ありがとうございます。

>>342
なんなんでしょうね。仕組みがよくわからないです・・・。どなたか解説を・・・。
345
(1): 2018/02/05(月)11:23 ID:ETXmgzVd(3/4) AAS
やっぱり >>343 の cmd はダメだな
testExe や TargetStr の中のスペースがデリミタ扱いされる
スペースが2個以上続くと誤動作する
>>341 の start がいい
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 (
347
(2): 2018/02/05(月)13:08 ID:Emu9UBTE(1) AAS
括弧の中の最初と最後の引用符が削除される?
348
(1): 2018/02/05(月)14:11 ID:ETXmgzVd(4/4) AAS
やっと思い出したぞ裏技w
前後の端にダミーの二重引用符 ^" を付けるんだった
>>347 のおかげで思い出したぜ

set testExe="D:\a bc\test.exe"
for /f "tokens=3" %%a in ('^"%testexe% --help ^| findstr "targetstr"^"') do (
349: 2018/02/06(火)13:18 ID:m2OYikdE(1) AAS
>>347-348
できました。なるほど、そういう解釈がされるんですね・・・。

バッチってほんと思わぬところでひっかかりますよね。とても勉強になりました。ありがとうございます。
350: 2018/02/07(水)10:59 ID:fDqCQtuz(1/3) AAS
VBでプログラムを作っているのですが、行き詰ってしまったので質問させていただきます。

バッチでiniファイルを読み込み、iniから取得したデータを格納した変数をVBのソース内で使いたいのですが可能ですか?
exe形式での納品となるのでiniファイルの読み込みはどうしてもバッチ内で行いたいのです。
ちなみに処理の流れとしては、iniファイル読み込み→exeファイル実行となっています。

どなたかご教授ください。よろしくお願いいたします。
351: 2018/02/07(水)11:12 ID:fDqCQtuz(2/3) AAS
申し訳ございません。

バッチでiniファイルを読み込み、iniから取得したデータを
格納した変数をVBのソース内で使いたいのですが可能ですか? ×
VBのソース内の変数に格納したいのですが可能ですか? ○

でした。
352
(1): 2018/02/07(水)11:43 ID:LQaGrglb(1) AAS
バッチで、ini ファイルを読み込み、必要な値を取り出して、
それらを引数にして、exe を起動する

そして、exe 内では、引数から読み込んだ値を使う
353: 2018/02/07(水)12:00 ID:fDqCQtuz(3/3) AAS
>>352
どう調べたらいいか分からず困っていたのですが、引数の取得で検索すればなんとかなりそうですね。
後は自分で調べてやってみます。ありがとうございました。
354
(1): 2018/02/07(水)16:46 ID:EyPJd6fI(1) AAS
バッチだと for文を使います
複雑なことをするのであればVBで直接読み込む方法もあります
355
(1): 2018/02/10(土)12:18 ID:/lSv2IRR(1) AAS
バッチでiniファイルなんて読み込めるの?
VBとかからGetPrivateProfileStringとかのAPIを使うんじゃないの?
まあ力技で出来ないことはないんだろうけど自分が知らないだけで一般的なやり方というのがあるのかな?
356: 2018/02/10(土)15:32 ID:K6TfvilX(1) AAS
ググればふつうに出てくるようだが。(内容まではちゃんと見てない)
357: 2018/02/10(土)16:29 ID:Sj+J5yD3(1) AAS
>>355
>>354の言うようにfor文を使う
わかりやすいとは言えないし特殊文字が含まれると色々面倒なのでおすすめはしない
358: 2018/02/11(日)19:16 ID:l1W9SMIH(1) AAS
バッチファイルでファイル操作って一見ちゃんと動いてるように見えて穴だらけって場合が多いからやりたくないな
wshで実装したりps辺りで既存のAPI呼び出す方がいい
359: 2018/02/11(日)19:44 ID:+WWL4Di4(1) AAS
batで設定呼び出したい時はiniじゃなくてsetting.batに変数を直接記述してcallしてるわ
このやり方も良いやり方なのかどうか分からんけど
360
(1): 2018/02/12(月)12:02 ID:OYWjTvif(1) AAS
外部リンク:ascii.jp
Windows 10 RS4に追加された「curl」と「tar」コマンド

って curl と tar が追加されるんだ
PowerShell にも curl コマンド(エイリアス)があってややこしさが増すな
でも、標準で使えるようになるのはバッチファイル使ってる身とすれば
嬉しくはある
1-
あと 642 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.014s