1 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 07:00:26 ID:f3kW5kCx.net] 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう 過去スレ %13 mevius.2ch.net/test/read.cgi/tech/1542779527/ %12 mevius.2ch.net/test/read.cgi/tech/1489207631/ %11 echo.2ch.net/test/read.cgi/tech/1424858999/ %10 peace.2ch.net/test/read.cgi/tech/1374205515/ %9 toro.2ch.net/test/read.cgi/tech/1335015478/ %8 toro.2ch.net/test/read.cgi/tech/1315844420/ %7 hibari.2ch.net/test/read.cgi/tech/1298873550/ %6 hibari.2ch.net/test/read.cgi/tech/1277465356/ %5 pc12.2ch.net/test/read.cgi/tech/1242268171/ %4 pc12.2ch.net/test/read.cgi/tech/1229955189/ %3 pc11.2ch.net/test/read.cgi/tech/1217860043/ %2 pc11.2ch.net/test/read.cgi/tech/1197881068/ 【.cmd】 バッチファイルスクリプト %1 【.bat】 pc11.2ch.net/test/read.cgi/tech/1178281991/ バッチファイルプログラミング 3.bat pc11.2ch.net/test/read.cgi/tech/1148485555/ バッチファイルプログラミング 2.bat pc8.2ch.net/test/read.cgi/tech/1104911889/ バッチファイルプログラミング質問スレ pc5.2ch.net/test/read.cgi/tech/1040614686/
655 名前:デフォルトの名無しさん mailto:sage [2022/02/06(日) 05:53:39.32 ID:ZVoj0wBD.net] Param([Parameter(mandatory=$true)][String]$inputFile) Add-Type -AssemblyName "System.Drawing" try{ $img = [System.Drawing.Image]::FromFile($inputFile) if ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Jpeg)) { $mimetype = 'image/jpeg' } elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Png)) { $mimetype = 'image/png' } elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Bmp)) { $mimetype = 'image/bmp' } elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Gif)) { $mimetype = 'image/gif' } elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Icon)) { $mimetype = 'image/icon' } elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Tiff)) { $mimetype = 'image/tiff' } elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Wmf)) { $mimetype = 'image/wmf' } elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Exif)) { $mimetype = 'image/exif' } else { $mimetype = 'image/unknown' } $w = $img.Width $h = $img.Height $img.Dispose() } catch{ $mimetype='unknown' } echo "$mimetype`t$w`t$h"
656 名前:デフォルトの名無しさん mailto:sage [2022/02/06(日) 05:54:07.77 ID:ZVoj0wBD.net] ↑ getDetailsOfでプロパティを取ってくる以外の方法 jpg/png/gifぐらいだけど powershell ./test.ps1 "画像ファイルのパス" プロパティだと拡張子に関連付けられたものになる 中身がjpgなのにファイル拡張子が.pngの場合とかある? なお、batに埋め込みたいならググれば方法は出てくる
657 名前:デフォルトの名無しさん mailto:sage [2022/02/06(日) 09:33:19.21 ID:T20/oaZi.net] >>647-648 ありがとうございます 最初、実行ポリシーが云々でエラーになったものの、ググって powershell -NoProfile -ExecutionPolicy Unrestricted .\test.ps1 '%~1' としたら動きました シングルクォートにしないとスペースを含むパスでエラーになりました > 中身がjpgなのにファイル拡張子が.pngの場合とかある? バッチでリネームついでにそういった間違っている拡張子を正しいものに直したいと思いまして image/jpeg とかを .jpg に変えたら面倒も無くそのまま使えそうです powershell凄いですね。外部アプリ使わずに判別出来ちゃうんですね WINEX32.DLL https://www.vector.co.jp/soft/win95/prog/se478825.html こういうのが必要なのかと思ってました ただファイル一つ一つをバッチからpsを起動してたら遅いのだけが難点ですね 速さは重要ではないので構わないのですが いっそ全部psで書けるスキルがあれば良いんですけどねー バッチですら四苦八苦してる身としてはさくっと書ける人が羨ましいです
658 名前:デフォルトの名無しさん [2022/02/16(水) 16:36:49.58 ID:w27+Spzi.net] 初心者過ぎて分からないんだが
659 名前:Rマンド >nul 2>&1 if "!ERRORLEVEL!" == "0" 〜 ってちゃんと意味ある? 出力捨てるのは成功するから毎回リターンコード0になったりする? [] [ここ壊れてます]
660 名前:デフォルトの名無しさん mailto:sage [2022/02/16(水) 17:40:22.47 ID:SGx0nl/1.net] 正常時に出力の無いコマンドはリダイレクトできないからエラーになるんじゃね。 異常時にコマンドがエラー出してもエラーになるから 結局、区別がつかない。
661 名前:デフォルトの名無しさん [2022/02/16(水) 18:08:47.78 ID:5G/Gik2e.net] >>651 辞めといた方がいいか 前の処理が正常終了したら次に進むベストプラクティスってなんだろう
662 名前:デフォルトの名無しさん mailto:sage [2022/02/16(水) 18:18:47.77 ID:t0Nu4cH6.net] コマンドの復帰コードと標準(エラー)出力のリダイレクトとは無関係なので ちゃんとコマンドが復帰コードを返していたら問題ないはず errorlevel環境変数を見るのはちょっとリスクがあるけどわかっているなら問題はない if errorlevel 1 〜 なら確実
663 名前:デフォルトの名無しさん mailto:sage [2022/02/16(水) 18:26:54.82 ID:lGeZIdOq.net] コマンド if not errorlevel 1 echo ok コマンド >nul 2>&1 && echo ok || echo fail
664 名前:デフォルトの名無しさん [2022/02/16(水) 18:31:31.49 ID:5G/Gik2e.net] ifのパラメーターにerrorlevelがあったのね 確かに環境変数使うより良さそう PC起動時に毎回開きたいアプリを順番(前後関係あり)に開いてくだけだから基本startコマンドなのよね
665 名前:デフォルトの名無しさん [2022/02/16(水) 18:32:09.18 ID:5G/Gik2e.net] おーありがてえ
666 名前:デフォルトの名無しさん mailto:sage [2022/02/16(水) 18:39:35.08 ID:IpLn/l6Q.net] >>651 > 正常時に出力の無いコマンドはリダイレクトできないからエラーになるんじゃね。 どこからこんなアホな知識を仕入れたのか知らんが、そんな知識を開陳する度胸に感心したわ
667 名前:デフォルトの名無しさん mailto:sage [2022/02/16(水) 18:44:42.98 ID:91qDUo1j.net] >>655 if errorlevelは 以上 だから気をつけろよ DOS時代の使い勝手重視だ
668 名前:デフォルトの名無しさん mailto:sage [2022/02/16(水) 18:50:49.88 ID:t0Nu4cH6.net] >>658 DOSだと、gotoしか書けなかったね
669 名前:デフォルトの名無しさん [2022/02/16(水) 22:29:00.93 ID:5G/Gik2e.net] >>658 以上なのか… 勘違いしそうだったわ気を付けよ…
670 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 02:07:07.44 ID:UpXKcN5y.net] これなんでこうなるの? echo abc 行末|findstr "^abc" 一致 (echo abc 行末)|findstr "^abc" 一致 echo abc 行末|findstr "行末$" 一致 (echo abc 行末)|findstr "行末$" 不一致 echo abc 行末| findstr /r /c:"^abc 行末$" 一致 (echo abc 行末)| findstr /r /c:"^abc 行末$" 不一致 元はこういう感じでハマっててやっと原因突き止めたんだけど理由が分からん (for /L %%j in (1,1,%i%) do for /f "delims=/" %%a in ('echo "%%B_%%j%%"') do echo %%~a )|findstr "^001a\.txt$" || echo ok 因みに /x オプションも駄目だった ('echo "%%B_%%j%%"') の部分も元は ("!B_%%j!") で単独では展開されてたのにパイプ繋ぐと展開されずハマってた パイプ繋いだら遅延展開無効化されるん?
671 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 02:58:56.00 ID:WlVIdNMt.net] (echo abc 行末)|findstr "行末 $" は一致する スペースが入るみたいだね
672 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 03:21:58.43 ID:j5UZdGyh.net] >>662 それだと、空白は文字列のOR扱いで、"行末"と"$"のどっちかってことになる が、まあそういうことだね echo onの状態で実行してみりゃわかる
673 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 03:38:00.04 ID:UpXKcN5y.net] ありがとう (echo abc 行末)|findstr /r /c:"^abc 行末 $" これで一致したから半角スペース入ってしまってるで間違いないみたい
674 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 03:42:58.59 ID:j5UZdGyh.net] echo onでどう展開されるかみればどうしてそうなったのかわかるよ
675 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 05:28:05.67 ID:UpXKcN5y.net] >>665 当然echo onでも確認してる 例えばこんなの for %a in (a b c) do (echo %a|findstr "b$") echo onでの表示では %a | とパイプとの間にスペース入るけどechoの末尾にゴミなんて付かないのよ 元のバッチやコマンドプロンプトの入力で以下のようにスペース入ってれば末尾にスペース入るけど上記のように詰めて書けば入らない for %a in (a b c) do (echo %a |findstr "b$")
676 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 05:50:10.39 ID:WlVIdNMt.net] >>663 ん? 空白区切りってダブルクォートを無視するの? "行末(sp)(sp)$" で不一致になるから "行末(sp)$" に一致してるんだと思ったけど
677 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 23:05:19.75 ID:J9914B5I.net] >>661 scripting.cocolog-nifty.com/blog/2007/03/call_echo_offse_6ea2.html
678 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 18:44:29.79 ID:xURWaPVP.net] 同じアプリのファイルを複数起動していて コマンドラインが同じになっているとき 閉じたいものだけ閉じる方法ってありますか?
679 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 18:45:11.42 ID:xURWaPVP.net] すいません、コマンドラインでなくプロセス名でした
680 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 20:06:56.37 ID:zbdaU1gm.net] >>670 全く同じexeを複数起動してるんなら、プロセスID指定しかないけど プロセスID見たってどっちが消したいexeなのか判別できる? ・リスト表示 tasklist /fi "IMAGENAME eq xxx.exe" ・削除 taskkill /pid 9999 パスが違うとかならパス情報を見るとかでプロセスIDを特定できる wmic process list full format:csv|findstr "C:\foo\bar\baz.exe"
681 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 20:12:59.55 ID:xURWaPVP.net] >>671 ありがとうございます パスは違うので、その方法でやってます 助かりました
682 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 22:00:00.64 ID:zbdaU1gm.net] >>672 もう出来たとは思うけど、上のだとfindstrも一緒に検出されるので出した責任として訂正しとく for /f "tokens=6 delims=," %%i in ('wmic process list full /format:csv^|findstr "C:\bin\INET\Jane"^|findstr /v findstr') do set pid=%%i tasklist /fi "pid eq %pid%"
683 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 12:26:06.99 ID:2NOKllqN.net] >>673 ありがとうございます! 頂いたコードもとても参考になります
684 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 16:12:21.37 ID:XLKEJl76.net] アクティブウィンドウ名がわかればいいんだね vbaでできるらしいが
685 名前:デフォルトの名無しさん mailto:sage [2022/03/10(木) 14:32:21.94 ID:53waehJr.net] あるフォルダROOTの配下にフォルダ001〜フォルダ999があり、その中にはAAA,BBB,CCCという3ファイルがあるとします。 フォルダ001から999配下の全てのAAAをZZZにコピーするために コマンドプロンプトでROOTフォルダで「for /r %i in (AAA) do copy %i %~pi\ZZZ」としたら求める結果になりましたが これをバッチファイルに書くと構文エラーみたいなエラーがでます。 バッチファイルに書く場合どうしたらいいでしょうか。
686 名前:デフォルトの名無しさん mailto:sage [2022/03/10(木) 15:13:37.97 ID:jqA3dRQ6.net] 魔空空間では %i in (AAA) do copy % という名前の環境変数に展開されて消えてしまうのだ! すべての%を%%に書き換えて対抗しよう! なおコマンドラインでも環境変数が定義されていたら展開されてしまうぞ こちらは対処不能だキヲツケロぉ
687 名前:デフォルトの名無しさん mailto:sage [2022/03/10(木) 15:28:31.03 ID:23a2YeOc.net] >>676 コピーするファイル数が膨大でなければバッチより2画面ファイラーの方が便利 ファイル検索して、反対側窓のフォルダーにコピー、移動する dynaやafx
688 名前:デフォルトの名無しさん mailto:sage [2022/03/10(木) 15:52:45.58 ID:53waehJr.net] >>677 ありがとうございます。うまくいきました! 理由まで教えていただきありがとうございました。 >>678 ファイラ、懐かしいです。からこれ20年くらい前??FDとか使っていたことがありますが、、、、また使ってみようかと思います。
689 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 02:42:22.51 ID:1/likOkq.net] 家の光回線をIPv4 over IPv6に変えたら、「VPN931でしょ?」ERRORが出て書き込めなくなった 試行錯誤の後、携帯回線を無線子機経由、テザリングで繋いでおき 「ネットワークアダプター」のページからイーサネット(有線)を無効にして書き込み、 書き込みが終わったら再び光回線を有効にするようにした しかし、つい携帯回線に切り換えたのを忘れたまま動画を観てしまうようなことが何度もあり、 1回で月無料分のギガを使い切ってしまい、有料になったり速度制限がかかったりして不便&勿体ないので なんとかバッチ処理出来ないかと思い、 「有線LAN 無効化 バッチ」で検索して見つけた下記のページを参考にしてバッチファイルを作ってみた ↓ https://mseeeen.msen.jp/switch-network-adapter-enabled-in-windows-with-batch-file/ ---------- @ECHO OFF netsh interface set interface "イーサネット" disabled ECHO 一時的に光回線(有線・イーサネット)をOFFにしました timeout 30 netsh interface set interface "イーサネット" enabled if ERRORLEVEL = 1 PAUSE ---------- 上記を拡張子batで保存し、参考URL同様にショートカット経由で管理者権限で起動するようにしました。 ※メモ帳で編集したとき、デフォルトでUTF-8→ANSIにすることを知らずに文字化けして上手く動かなかったのはお約束。 これで、書き込む直前にショートカットで起動すれば 30秒だけ光回線が切れ、wifi=携帯回線で書き込める その後は自動復帰するので繋ぎ忘れが無くなった もしもっと良い方法があれば教えてくださいm(_ _)m
690 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 10:55:59.83 ID:i3Z8TR4r.net] ネットワークの有効無効を変える必要はなくて、単にどっちがデフォルトゲートウェイになるかを制御するだけで十分だよ スマホ側にプロキシたてて、専ブラ(だよね?)からそのプロキシを使うように設定すれば常時5chだけスマホ側に流すこともできる
691 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 12:05:05.72 ID:vZQIGC81.net] 5chのipでルーティングの設定するだけでは?
692 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 13:36:04.21 ID:i3Z8TR4r.net] 理論的にはそうだけど実際5chが使ってるIP範囲調べたことあるかい? CDN通してるから、取りうるIP範囲まるごとスマホに流したら5ch以外の多くのサイトのトラフィックもそっちに流れてデータ通信容量が消費されてしまう
693 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 13:41:51.25 ID:i3Z8TR4r.net] 途中で書き込んでしまった 消費されてしまうので、L3レベルでの経路選択は現実的ではない なので一時的にまるごと切り替えてしまうか、URLを指定してシステム全体でプロキシ設定を行う、専ブラについてるプロキシ機能を使うとかのが良い しっかりインスペクションして経路振り分けられるルーターを用意して設定できるならそれもありだが一般人向けではない
694 名前:680 mailto:sage [2022/03/12(土) 14:48:36.28 ID:1/likOkq.net] >>681 流石ですね!あっという間に より良い方法を考えつくとは! …ですが、専ブラに登録している全てのスレの新着チェック(=下り)は光回線で出来るので、 ギガ節約のためにも、無理にスマホに流さなくて良いのですよ 専ブラの上り(=書き込み)だけ携帯回線に流すバッチなんて作れますかね? ヒントや参考になるURLでも構わないのですが
695 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 14:54:48.13 ID:1/likOkq.net] PC再起動したら、 >>680 のバッチ実行時に「この関数を完了できません」が出て 狙い通りに動かなくなってしまった 仕方なく、以前と同じように 「アダプターのオプションを変更する」 からイーサネットを無効にして接続中 一番最初は 5chに書き込むたびにPCの裏に回り、 いちいち外しにくいLANケーブルを切り離していたから、 これでも 石器時代から稲作が出来るくらいには進化しているのだがw たぶん名前が一致しなくなってしまった?のが原因と思うので、自分で対策してみますm(_ _)m
696 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 19:45:55.71 ID:i3Z8TR4r.net] 全自動で書き込みだけ他に流す仕組み考えてみたけど作らなきゃいけない部分もあるから質問者が実行できる気がしない(もはやスレチレベル) スマホと書いてあるけど、安いPPPoEのプロバイダ契約するとか、donedoneや楽天、povoみたいな基本0円のSIM+モバイルルーターの回線と余ってるPCや仮想マシンを使っても良い 専ブラが使ってる5chのAPIの各リクエストが分離できる(事前に認証を行ったりする必要がない)と仮定すれば以下の仕組みで行けるはず 自宅内に5ch.netの各サーバーのリバースプロキシを立ててオレオレCA運用を行う クライアント側でCAの自己証明書をOSに追加して、そのローカルIPをhostsで5chの各サーバに設定する リバースプロキシ側で特定のパスのリクエストだけはスマホ側に用意したサーバーに投げる スマホ側のサーバーはリクエストを受け取ったら、正しい5chのサーバーに投げて、その応答を返す
697 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 20:42:13.77 ID:dQfogYw2.net] ま、5chはIPは5つしか無いけど 104.18.231.150 104.18.232.150 104.18.233.150 104.18.234.150 104.18.235.150 これはどの鯖でも共通(apiだろうがegg,kizuna,meviusだろうが)で この5つのどれかをランダムで使う なお、このIPは導入時から変わってない
698 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 00:52:20.19 ID:SoYXm1dj.net] startでバッチファイルを実行すると、cmdウィンドウが残る バッチファイルの最後をexit /B でなくexitにすると残らなかった
699 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 07:45:35.96 ID:5cZqh0Cb.net] help exitに書いてあるでしょ
700 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 13:13:33.35 ID:dCVvmFB6.net] 最近ReactOSのソース読み始めたが勉強になるな 変な挙動のところは親切に#ifndef MSCMD_XXX_QUIRKSって書いてあってわろ MS-DOS2.0のソースはMS公式が公開してるけどアセンブリは難解すぎて諦めた
701 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 06:55:33.59 ID:NhkQRxfw.net] batにVBS仕込めるけど、JSは仕込める? 他に仕込めるものある?
702 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 12:54:10.76 ID:vpv2MT5y.net] ググれよ WSH(JScript)なら可、JavaScriptは無理だと思う PowerShellも可
703 名前:デフォルトの名無しさん [2022/03/29(火) 16:59:49.39 ID:zndnyGpb.net] Batになんか仕込むんならPowershellがいちばん簡単 VBSも上手いことやれば仕込めるし
704 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 17:48:10.85 ID:Da68lL6t.net] >>631 みたいにすれば大体何でもイケるんじゃね
705 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 18:45:33.65 ID:CGMVb58j.net] 我が家では外部ファイルを使うのは邪道とされておるのだ
706 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 21:38:59.70 ID:6qHTZxky.net] 631みたいのはバッチ内のPowerShellでもっとスマートに書けるね 相変わらずコンソール消しても一瞬出てきて邪魔だけど 完全に消すにはvbsから呼んだりで結局2ファイルになる
707 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 02:50:31.03 ID:hpCvdrMf.net] バッチ自体を初めて作っててクリップボードのテキストを[]で囲んだ名前のフォルダをデスクトップに作りたいんだけど powershell get-clipboardでクリップボードから持ってくる mdとかNew-Item NewDirecrtoryでフォルダを作る までわかって|とか>で色々試して見たんだけどまあ上手くいくはずもなく そもそも出来る事なのかもわからないから質問しに来ました!たっけてー
708 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 08:04:11.49 ID:VNoVBeip.net] for /f "delims=" %%a in ('powershell clipboard') do md [%a]
709 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 08:07:00.01 ID:VNoVBeip.net] for /f "delims=" %%a in ('powershell clipboard') do md [%%~a]
710 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 09:37:15.22 ID:hpCvdrMf.net] >>700 ありがとう! for /f "delims=" %%a in ('powershell clipboard') do md C:\Users\----\Desktop\[%%~a] でいけました。
711 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 15:33:41.09 ID:MONKPJtx.net] >>698 ちなみにPowerShellだけなら powershell -c "Get-ClipBoard | ?{$_} | foreach {$dirName='[{0}]' -f $_; $dirPath=[IO.Path]::Combine([Environment]::GetFolderPath('Desktop'), $dirName); $null=[IO.Directory]::CreateDirectory($dirPath);}"
712 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 15:38:56.15 ID:XWBs+Kvf.net] >>701 ab cd a&b とかでフォルダが作成できるかテスト
713 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 17:32:35.14 ID:5jbreqOF.net] スペースのある文字列の扱いがわからんな 複数作ることを意図または許容するのか否かでちょっと違ってくる
714 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 22:48:33.20 ID:7tiScrqu.net] cmdのmkdirで作るか>>702 みたいに.NETのAPIで作るかWin2APIで作るかでも違ってくる
715 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 23:24:55.78 ID:hpCvdrMf.net] 色々方法があるけど何かしらcmdのみでは出来ないって事だけはわかった 面白いから少し勉強しようかなあ
716 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 00:56:37 ID:FFCnePh6.net] batにドラッグするだけで複数zipを同じ階層に解凍してくれるbatが作りたいです。 圧縮の場合は @echo off path C:\Program Files\7-Zip;%path% for %%i in (%*) do cd /d "%%~i" && 7z a "%%~i.zip" * で出来るのですが、解凍の場合がわかりません。わかる方いれば教えていただきたいです。宜しくお願い致します。
717 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 02:56:14.25 ID:wBUYMDtu.net] :start if "%~1"=="" goto :EOF 7z.exe x "%~1" -o"%~dpn1" -y shift goto :start
718 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 16:24:25 ID:NCtDoq3M.net] 俺の勘違いだったらすまん ドラッグで引数を渡す系だとバッチは括弧付きのファイル名が入った時点で破綻するような気がする 変なしがらみのないvbsやjs辺りで書いた方がいいかも
719 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 18:16:44.99 ID:qAvWbsmN.net] 括弧の他にも色々とダメ文字が頭に浮かぶな
720 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 20:34:57.53 ID:YeXmNplS.net] 複数選択のコンテキストメニューから展開した方がいいのでは
721 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:04:21.77 ID:neP5mDTX.net] >>708 を試したが駄目でした batにドラッグしても何も起こりません。 >>711 Claunchにbat登録だと、ファイルをモニタの縁にドラッグするだけで解凍できてとても便利なんです ファイル選んで右クリック、多いコンテキストメニューから目的を探してクリック…というのよりbatドラッグがしたくて…。
722 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:49:13 ID:6g+y36jy.net] echo on で何が起きているか調べろ ちなみに何をドラッグしているのか?
723 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 21:59:36.90 ID:EPzG8fyD.net] >>707 一年前に7-Zipスレで質問した人だろ ゴミ箱への移動がどうとか言ってた人 まさかドラッグしてるのはフォルダじゃないだろな
724 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 22:29:24.28 ID:4ntMkwZZ.net] どこのスレのことかと思いましたが、 7-Zip総合スレ Part 10 https://egg.5ch.net/test/read.cgi/software/1520243361/454- のことでしょうかね。 たしかに、>>707 は、この人かも。
725 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 23:09:37.54 ID:7iiWUl24.net] ファイル名に半角スペースがあるとエラーになるよね
726 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 23:40:21 ID:neP5mDTX.net] フォルダを圧縮したいのでフォルダドラッグしてます それはbatファイルでは不可能なんですかね
727 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 23:56:17.81 ID:cTakk7Wr.net] これ以上触ってはいけないような気がする
728 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 05:57:00 ID:ZvCxX7eE.net] >>712 もしかしてpathが足りないのじゃないか? >>708 のバッチの上に path C:\Program Files\7-Zip;%path% を加えてやってみろ
729 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 10:15:06.24 ID:Xjbe7mxo.net] 昔自作したやつがそう言えばどっかにあったな 色々試したけどzip名に全角スペースが含まれてる場合だけはどうにも出来なくて別のリネームバッチで半角スペースに置き換えてたわ
730 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 14:56:19 ID:D1hG0R6r.net] list1.txt 田中 山田 list2.txt 一郎 次郎 三郎 に対して xj.bat @echo off setlocal enabledelayedexpansion call :crossjoin "" %* exit /b :crossjoin for /F "tokens=*" %%l in (%~2) do ( if [%~3] == [] ( set x=%~1%%l echo !x:__=,! ) else ( set y= %* set y=!y: %1=! set y=!y: %2=! call :crossjoin "%~1%%l__" !y! ) ) を動かすと xj.bat list1.txt list2.txt (続く)
731 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 14:56:54 ID:D1hG0R6r.net] 田中,一郎 田中,次郎 田中,三郎 山田,一郎 山田,次郎 山田,三郎 を得ます このバッチファイルを list3.txt 姓 田中 山田 list4.txt 名前 一郎 次郎 三郎 と、見出しが入ったファイルに対応するよう 改造していただけませんか
732 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 15:04:34.68 ID:akel0sHj.net] for /i分にskip=1指定入れてみるとか
733 名前:721 mailto:sage [2022/04/16(土) 15:25:35.02 ID:D1hG0R6r.net] ありがとうございます 今アンドロイドなので、PC使えるときに 試して報告します ちなみに、こういう総当りって、awkやPerl でも作れるものでしょうか?
734 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 15:43:07.54 ID:pX/6gg3y.net] %%lとか気持ち悪いな こういうこと? for /f "skip=1 delims=" %%a in (list3.txt) do for /f "skip=1 delims=" %%b in (list4.txt) do echo %%a,%%b pause なんでcallしたり置換したり面倒臭い事してるのか分からん
735 名前:721 mailto:sage [2022/04/16(土) 15:58:27.63 ID:D1hG0R6r.net] ありがとうございます 引用先の元ネタは、list1.txtなどの 対象ファイルがいくつでもいけます そのためかと
736 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 17:13:22.10 ID:nVJ4wCm0.net] やりたい事に対して一見して処理が意味不明 コードレビューすれば必ず突っ込みが入るパターン
737 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 17:39:10.95 ID:akel0sHj.net] shiftとか知らんのかな
738 名前:721 mailto:sage [2022/04/17(日) 14:55:17.75 ID:wrqgojCl.net] "tokens=*" を "skip=1 tokens=*" に変えたら 見出しを飛ばしてデータを作ってくれました だけど出力ファイルが大きいとかなり 時間がかかりますね 元ネタのところに行ってVBS版の作成を 依頼してみます ありがとうございました
739 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 15:10:00.22 ID:jfoLRRUl.net] ニコイチする度にcallしてたらそりゃ遅いわ 再帰でのcallやめるだけで結構速くなるよ
740 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 16:31:06.01 ID:A4GG7JI6.net] ハッチ処理はあまりやりたくないから、 もっとかっこいい言語でかいて、バッチに変換する(コンパイル)できるといい バッチ見えなく化計画
741 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 17:32:55.50 ID:iLyScgaF.net] >>708 さんのを使ってみました ファイル名にスペースが入っていると展開されないのを回避することできますか :start if "%~1"=="" goto :EOF "C:\Program Files\7-Zip\7zG.exe" x "%1" shift goto :start
742 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 17:39:26.89 ID:b4thkYbt.net] 上で"%~1"使ってるのに下では"%1"にしてる
743 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 17:41:48.86 ID:jfoLRRUl.net] echoやpause使ってコマンド文がどうなってるのか確認したら?
744 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 17:50:28.17 ID:iLyScgaF.net] >>733 できました ありがとうございます
745 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 18:36:17.23 ID:i7g3Seu6.net] いつまでこんなレガシー機能を使い続けるの
746 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 11:21:00.70 ID:PhhBhq60.net] >>736 powerShellがダブククリックで使えないし
747 名前:デフォルトの名無しさん [2022/04/18(月) 11:27:46.45 ID:t3NwdXGg.net] シンプルだからこそC++でジェネレートした.batを目視確認してから実行とかしやすいわけで
748 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 13:50:09 ID:OF8RRP9C.net] >>730 どう書けばいいですか?
749 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 14:16:43.44 ID:74jROqLf.net] すでにあるコマンドを使うというのは楽でいい もう少し細かいことをしたいと思うと苦労するけど
750 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 03:57:14.74 ID:RFdms0p+.net] PAUSEコマンド関連で質問です バッチファイル中にPAUSEコマンドを入れるとそこでキー入力を待ちますが、 その延長で ・エクスプローラでダブルクリックされて起動された場合はPAUSEで止める ・コマンドプロンプトから起動された場合は止めない ということをしたいです PAUSEコマンド自体には何もオプション等は無いようなのですが、何か方法はありますか 環境変数等をみて動作を切り替えることができないか調べてみましたが、 どちらの方法で起動されても同一なようで、悩んでおります
751 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 05:42:50.53 ID:q7JwT6An.net] >>741 >>446
752 名前:デフォルトの名無しさん [2022/04/20(水) 07:19:49 ID:Cwlkz3kl.net] コマンドプロンプトを起動するときのショートカットに/k:autoexec.batを入れて autoexec.batの中でset not_double_click=true そしてダブルクリックで起動するバッチの中で if not "%not_double_click%"=="true" pause とか、どうかな
753 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 09:15:24.62 ID:RFdms0p+.net] >>742-743 回答どうもです なるほど、ショートカットを作り、そこに判定の仕掛けを入れる、という方式ですね ツールを配布するときは、ショートカットの設定やコマンドプロンプトの設定を するためのインストーラが必要になりそうですね… バッチファイル単体でどうにか…と思いましたが、検討してみます
754 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 09:26:15.67 ID:q7JwT6An.net] >>744 いやいや、そんな面倒なことしなくても >>446 からの流れで %cmdcmdline% 見て判定する方法書かれてるでしょ ID:lVKoKJNl
755 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 14:21:13.38 ID:asEavXVa.net] 昔の友は 今も友 俺とお前と(デンデン)大五郎