[過去ログ]
【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1489207631/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
331: デフォルトの名無しさん [sage] 2018/01/29(月) 16:22:04.20 ID:LZ9wDs2K 自分用に書いたbatを流用してみた 多分こんな感じで動くはず https://pastebin.com/zEpvpdCa http://mevius.5ch.net/test/read.cgi/tech/1489207631/331
332: デフォルトの名無しさん [sage] 2018/01/30(火) 00:28:24.66 ID:fZrZLUfh >>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 7z x -o"!b!!d:~%c%!" "!e!" http://mevius.5ch.net/test/read.cgi/tech/1489207631/332
333: 330 [sage] 2018/01/30(火) 04:04:55.14 ID:I+jPXl6+ >>332 なるほど 自分のは冗長に書きすぎてたね http://mevius.5ch.net/test/read.cgi/tech/1489207631/333
334: デフォルトの名無しさん [sage] 2018/01/30(火) 16:28:50.07 ID:/nodnUUg >>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" call 7z.exe x *.* -spe -bso0 -o"%%tmppath1%%\*" 2>>D:\compopen\errlog.txt popd ) -------- ここまで マズいフォルダ(パス)名が無いことを前提に、もろもろ 7-Zip に良きにはからってもらう http://mevius.5ch.net/test/read.cgi/tech/1489207631/334
335: デフォルトの名無しさん [] 2018/01/30(火) 17:10:39.08 ID:25OUwAYA >>332 >>334 ありがとうございます! 150GBくらいあるから、まだ展開し終えてないけど、 動き出しました。 実際のcompの中のa,b,c,・・・フォルダの中のzipやrarの名前は、 今のところ、下記みたいにフォルダの文字列含んでて、階層を上にしてもよかったかなと思いつつ、 例外も出てくるかもしれないので、このまま走らせてみます。 しっかり解凍しだしてフォルダ生成してくれてます。 D:/ ├comp/ │ └ a/ │ └ a111.zip │ └ a222.zip │ └ b/ │ └ xx1b.rar │ └ xx2b.rar │ └ c/ │ └ cttt.zip │ └ crrr.rar http://mevius.5ch.net/test/read.cgi/tech/1489207631/335
336: デフォルトの名無しさん [sage] 2018/01/31(水) 00:35:03.40 ID:ah9e2u9N そもそも、そんな複雑な手続きには、PowerShell, Ruby などを使えw http://mevius.5ch.net/test/read.cgi/tech/1489207631/336
337: デフォルトの名無しさん [sage] 2018/02/03(土) 09:54:54.05 ID:y+J4EMEq コマンドプロンプトの仕様についてだけど、遅延展開ってデフォでONじゃダメだったのかな? あれ打ち込むのマンドクサ('A`) http://mevius.5ch.net/test/read.cgi/tech/1489207631/337
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
341: デフォルトの名無しさん [sage] 2018/02/05(月) 08:19:13.38 ID:ETXmgzVd >>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 http://mevius.5ch.net/test/read.cgi/tech/1489207631/341
342: デフォルトの名無しさん [sage] 2018/02/05(月) 08:24:05.58 ID:chwOG0ZE >>338 自分もこの問題に直面して同じ解決策とったんだけどこれって何が原因でこうなるの? http://mevius.5ch.net/test/read.cgi/tech/1489207631/342
343: デフォルトの名無しさん [sage] 2018/02/05(月) 10:47:37.64 ID:ETXmgzVd こっちのがいいかも 前に似たようなネタがあったような set testExe="D:\a bc\test.exe" for /f "tokens=3" %%a in ('cmd /s /c "%testExe% --help | findstr "TargetStr""') do ( http://mevius.5ch.net/test/read.cgi/tech/1489207631/343
344: デフォルトの名無しさん [sage] 2018/02/05(月) 11:16:40.07 ID:j3KUW6ez >>341 できました!なるほど、startを使えばよかったのですね・・・。ありがとうございます。 >>342 なんなんでしょうね。仕組みがよくわからないです・・・。どなたか解説を・・・。 http://mevius.5ch.net/test/read.cgi/tech/1489207631/344
345: デフォルトの名無しさん [sage] 2018/02/05(月) 11:23:08.71 ID:ETXmgzVd やっぱり >>343 の cmd はダメだな testExe や TargetStr の中のスペースがデリミタ扱いされる スペースが2個以上続くと誤動作する >>341 の start がいい http://mevius.5ch.net/test/read.cgi/tech/1489207631/345
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
347: デフォルトの名無しさん [sage] 2018/02/05(月) 13:08:35.91 ID:Emu9UBTE 括弧の中の最初と最後の引用符が削除される? http://mevius.5ch.net/test/read.cgi/tech/1489207631/347
348: デフォルトの名無しさん [sage] 2018/02/05(月) 14:11:13.29 ID:ETXmgzVd やっと思い出したぞ裏技w 前後の端にダミーの二重引用符 ^" を付けるんだった >>347 のおかげで思い出したぜ set testExe="D:\a bc\test.exe" for /f "tokens=3" %%a in ('^"%testexe% --help ^| findstr "targetstr"^"') do ( http://mevius.5ch.net/test/read.cgi/tech/1489207631/348
349: デフォルトの名無しさん [sage] 2018/02/06(火) 13:18:25.70 ID:m2OYikdE >>347-348 できました。なるほど、そういう解釈がされるんですね・・・。 バッチってほんと思わぬところでひっかかりますよね。とても勉強になりました。ありがとうございます。 http://mevius.5ch.net/test/read.cgi/tech/1489207631/349
350: デフォルトの名無しさん [] 2018/02/07(水) 10:59:47.18 ID:fDqCQtuz VBでプログラムを作っているのですが、行き詰ってしまったので質問させていただきます。 バッチでiniファイルを読み込み、iniから取得したデータを格納した変数をVBのソース内で使いたいのですが可能ですか? exe形式での納品となるのでiniファイルの読み込みはどうしてもバッチ内で行いたいのです。 ちなみに処理の流れとしては、iniファイル読み込み→exeファイル実行となっています。 どなたかご教授ください。よろしくお願いいたします。 http://mevius.5ch.net/test/read.cgi/tech/1489207631/350
351: デフォルトの名無しさん [sage] 2018/02/07(水) 11:12:08.68 ID:fDqCQtuz 申し訳ございません。 バッチでiniファイルを読み込み、iniから取得したデータを 格納した変数をVBのソース内で使いたいのですが可能ですか? × VBのソース内の変数に格納したいのですが可能ですか? ○ でした。 http://mevius.5ch.net/test/read.cgi/tech/1489207631/351
352: デフォルトの名無しさん [sage] 2018/02/07(水) 11:43:25.21 ID:LQaGrglb バッチで、ini ファイルを読み込み、必要な値を取り出して、 それらを引数にして、exe を起動する そして、exe 内では、引数から読み込んだ値を使う http://mevius.5ch.net/test/read.cgi/tech/1489207631/352
353: デフォルトの名無しさん [] 2018/02/07(水) 12:00:38.62 ID:fDqCQtuz >>352 どう調べたらいいか分からず困っていたのですが、引数の取得で検索すればなんとかなりそうですね。 後は自分で調べてやってみます。ありがとうございました。 http://mevius.5ch.net/test/read.cgi/tech/1489207631/353
354: デフォルトの名無しさん [sage] 2018/02/07(水) 16:46:31.34 ID:EyPJd6fI バッチだと for文を使います 複雑なことをするのであればVBで直接読み込む方法もあります http://mevius.5ch.net/test/read.cgi/tech/1489207631/354
355: デフォルトの名無しさん [sage] 2018/02/10(土) 12:18:28.89 ID:/lSv2IRR バッチでiniファイルなんて読み込めるの? VBとかからGetPrivateProfileStringとかのAPIを使うんじゃないの? まあ力技で出来ないことはないんだろうけど自分が知らないだけで一般的なやり方というのがあるのかな? http://mevius.5ch.net/test/read.cgi/tech/1489207631/355
356: デフォルトの名無しさん [sage] 2018/02/10(土) 15:32:33.27 ID:K6TfvilX ググればふつうに出てくるようだが。(内容まではちゃんと見てない) http://mevius.5ch.net/test/read.cgi/tech/1489207631/356
357: デフォルトの名無しさん [sage] 2018/02/10(土) 16:29:19.90 ID:Sj+J5yD3 >>355 >>354の言うようにfor文を使う わかりやすいとは言えないし特殊文字が含まれると色々面倒なのでおすすめはしない http://mevius.5ch.net/test/read.cgi/tech/1489207631/357
358: デフォルトの名無しさん [sage] 2018/02/11(日) 19:16:43.96 ID:l1W9SMIH バッチファイルでファイル操作って一見ちゃんと動いてるように見えて穴だらけって場合が多いからやりたくないな wshで実装したりps辺りで既存のAPI呼び出す方がいい http://mevius.5ch.net/test/read.cgi/tech/1489207631/358
359: デフォルトの名無しさん [sage] 2018/02/11(日) 19:44:19.46 ID:+WWL4Di4 batで設定呼び出したい時はiniじゃなくてsetting.batに変数を直接記述してcallしてるわ このやり方も良いやり方なのかどうか分からんけど http://mevius.5ch.net/test/read.cgi/tech/1489207631/359
360: デフォルトの名無しさん [sage] 2018/02/12(月) 12:02:40.25 ID:OYWjTvif http://ascii.jp/elem/000/001/630/1630041/ Windows 10 RS4に追加された「curl」と「tar」コマンド って curl と tar が追加されるんだ PowerShell にも curl コマンド(エイリアス)があってややこしさが増すな でも、標準で使えるようになるのはバッチファイル使ってる身とすれば 嬉しくはある http://mevius.5ch.net/test/read.cgi/tech/1489207631/360
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 642 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.021s