【.cmd】 バッチファイルスクリプト %15 【.bat】
1 :デフォルトの名無しさん :2022/09/14(水) 20:04:01.36 ID:XL8H98jz.net 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう 過去スレ %14 https://mevius.5ch.net/test/read.cgi/tech/1597442426/ %13 https://mevius.2ch.net/test/read.cgi/tech/1542779527/ %12 https://mevius.2ch.net/test/read.cgi/tech/1489207631/ %11 https://echo.2ch.net/test/read.cgi/tech/1424858999/ %10 https://peace.2ch.net/test/read.cgi/tech/1374205515/ %9 https://toro.2ch.net/test/read.cgi/tech/1335015478/ %8 https://toro.2ch.net/test/read.cgi/tech/1315844420/ %7 https://hibari.2ch.net/test/read.cgi/tech/1298873550/ %6 https://hibari.2ch.net/test/read.cgi/tech/1277465356/ %5 https://pc12.2ch.net/test/read.cgi/tech/1242268171/ %4 https://pc12.2ch.net/test/read.cgi/tech/1229955189/ %3 https://pc11.2ch.net/test/read.cgi/tech/1217860043/ %2 https://pc11.2ch.net/test/read.cgi/tech/1197881068/ 【.cmd】 バッチファイルスクリプト %1 【.bat】 https://pc11.2ch.net/test/read.cgi/tech/1178281991/ バッチファイルプログラミング 3.bat https://pc11.2ch.net/test/read.cgi/tech/1148485555/ バッチファイルプログラミング 2.bat https://pc8.2ch.net/test/read.cgi/tech/1104911889/ バッチファイルプログラミング質問スレ https://pc5.2ch.net/test/read.cgi/tech/1040614686/
173 :デフォルトの名無しさん :2023/02/16(木) 22:08:46.71 ID:tOoYyZel.net setlocal enabledelayedexpansionを使うと駄目なんだっけか 173のレスをコピペして試してたから再現しなかった 回避方法はこの辺読めばいいんじゃないかな>>169 https://qiita.com/yz2cm/items/4983be006116c369d08b
174 :デフォルトの名無しさん :2023/02/18(土) 13:12:03.68 ID:S+SrMYX3.net >>169 doの中身をcall使ってサブルーチンにする サブルーチンの先でDisableDelayedExpansionを行って 一時的に遅延環境変数展開をOFFにする ちなみにdoの括弧の中でDisableDelayedExpansionしても意味はない コマンドが実行されるときにどこまでが1行として処理されるかよく考えてみて
175 :デフォルトの名無しさん :2023/02/18(土) 16:15:41.68 ID:nz9Z1NDi.net 脳死だがバッチは基本使わない対処をした方が優れている 扱う出力内容で>>169 みたいな一見不可解な事が起こり易い メモ帳で書いてUTF8で保存したり全角文字を混ぜて実行するバカもいる こんなバッチなんて書いていられるか俺は自分の言語に戻らせてもらう
176 :デフォルトの名無しさん :2023/02/18(土) 20:08:07.43 ID:S+SrMYX3.net バッチファイルのスレで何言ってるんだこいつ
177 :デフォルトの名無しさん :2023/02/19(日) 06:53:20.13 ID:B9Nm4zxk.net はい、バイバーイ ノシ 二度と戻ってこないでね
178 :デフォルトの名無しさん :2023/02/23(木) 22:02:16.64 ID:KL0E1A05.net >>174 サンクス。何とか回避できたようです。 ありがとうございました。 m(_ _)m
179 :デフォルトの名無しさん :2023/02/24(金) 06:16:27.49 ID:umH2oUG6.net 176の方法で回避? call しても ! 文字は消えるけど どうやって値を渡したのか、ちゃんと報告しろ
180 :デフォルトの名無しさん :2023/02/24(金) 06:21:19.29 ID:jJ3mlMsu.net なぜそんな上からなのか
181 :デフォルトの名無しさん :2023/02/24(金) 06:50:27.38 ID:umH2oUG6.net そうか? 報告してください。お願いします。
182 :デフォルトの名無しさん :2023/02/24(金) 13:07:53.45 ID:xAv3d2xt.net よろしい
183 :デフォルトの名無しさん :2023/02/26(日) 02:12:26.08 ID:6qO2uMR0.net >>181 私も単にcallにしただけではiの文字が消えたままだったけど、 setlocalを全部外したらcallした先でi文字付きで認識できるようになった。 なんでそうなったかは正直確信が持てないが、気がついた変更はそれだった。 ハッキリ答えられずすみません…
184 :デフォルトの名無しさん :2023/02/26(日) 07:59:37.30 ID:ZRUXpLmJ.net >>183 報告ありがとう 遅延展開での for 文の変数値に ! や ^ があると値が変わる事がある 遅延無しなら値が変わらない call にするかどうかは別の話 ヘルプをよく読んで下さい setlocal /? for /? 引用符は半角にして下さい 質問文のバッチはそれだけで他人が問題点を再現できるものにして下さい
185 :デフォルトの名無しさん :2023/02/26(日) 20:35:28.85 ID:gahU4Yv8.net なぜそんなギスギスなのか 仕事中に仕事以外の会話のできない方か
186 :デフォルトの名無しさん :2023/02/26(日) 23:08:44.91 ID:d/RsgC9o.net これAIの何とかってやつが書いた文章だろ?…っての、そこら中で見るなw
187 :デフォルトの名無しさん :2023/02/27(月) 11:42:47.10 ID:JmzEtsrD.net まあ好かれる人間ではないよな たまにいる、そういう奴
188 :デフォルトの名無しさん :2023/02/27(月) 11:47:26.81 ID:MWG0Dnko.net まあ対面では絶対そんな言葉使いはしないよね
189 :デフォルトの名無しさん :2023/02/27(月) 14:46:21.47 ID:+mdXvmJb.net 変数値が変わるわけないだろ 展開した値が元と違うだけ
190 :デフォルトの名無しさん :2023/03/01(水) 12:26:47.31 ID:fuKOGN7X.net すいません 超初心者的な質問なんですが、 バッチファイルって、サブルーチンを設定する時に、一度実行されてしまうんですよね?
191 :デフォルトの名無しさん :2023/03/01(水) 13:18:49.01 ID:p0dowhw3.net call先で一行ずつ実行するだけ サブルーチンの設定て何だろ
192 :デフォルトの名無しさん :2023/03/01(水) 13:49:19.87 ID:Co0n2HTo.net 質問が不明瞭すぎる
193 :デフォルトの名無しさん :2023/03/01(水) 15:49:02.20 ID:tZuIfIoC.net >>190 バッチファイルにサブルーチンなんて無い サブルーチン的な事したければラベル書いてそこにジャンプする 当然ジャンプじゃなくて上から来た場合も普通に実行される それが嫌ならラベルの直前に exit/b でも書いとけ
194 :デフォルトの名無しさん :2023/03/01(水) 17:52:18.10 ID:fuKOGN7X.net すいません 具体的に書きます!! @echo off call :set_errorlevel :set_errorlevel echo aaaaa exit /b こういうのがあったとして C:\Users\■■■>■:\1112.bat aaaaa aaaaa ↑なぜ二つ実行されるのか?って意味です。
195 :デフォルトの名無しさん :2023/03/01(水) 17:54:05.48 ID:68s28u+f.net 1回目がcallで実行 2回目がそのままの流れで実行されてる
196 :デフォルトの名無しさん :2023/03/01(水) 18:36:49.49 ID:GaouMb9c.net 1行ずつ逐次実行していくから call文でラベルに飛んで実行し戻って来る ステップが次の行に移行してcall文の次の文を実行しようとする そこにはラベル以下があったわけだ call文から戻ってきた所で実行を止めたければ goto :eof をcall文の次に書いておくといい
197 :デフォルトの名無しさん :2023/03/01(水) 18:59:16.83 ID:fuKOGN7X.net >>191 >>193 更新してなかったので、レスに気が付きませんでしたs。 おお!できました! 理解出来ました! 有難う御座いましたs。
198 :デフォルトの名無しさん :2023/03/01(水) 19:02:16.77 ID:fuKOGN7X.net >>196 >>195 おお!なるほど!それでもできました! ありがとうございました!
199 :デフォルトの名無しさん :2023/03/01(水) 19:04:20.16 ID:fuKOGN7X.net なるほど ただラベルをつけてよびだしているだけなんですね バッチにmethodやサブルーチンって概念はないんですね! 勉強になりました1
200 :デフォルトの名無しさん :2023/03/01(水) 19:05:12.08 ID:fuKOGN7X.net ていうことは、うまく調整しないと、2回同じ実行することになりますね! 早めに気が付いてよかったです!
201 :デフォルトの名無しさん :2023/03/01(水) 22:53:45.68 ID:6i7MYFqO.net コマンドプロンプトから start chrome "D:/test.html?a=001" としたのですが D:/test.html が開かれました。 ローカルのhtmlにクエリを付けて開く方法があればご教示頂きたいです。
202 :デフォルトの名無しさん :2023/03/01(水) 23:15:54.48 ID:8kmkGnGP.net それはchromeのお話ですねえ 開発元のgoogleに聞くのが早いのでは
203 :デフォルトの名無しさん :2023/03/02(木) 07:45:52.86 ID:X0Akc+Oj.net 起動するとネットワークプリンタでファイルを出力できるバッチファイルて作れますか?
204 :デフォルトの名無しさん :2023/03/02(木) 10:15:53.52 ID:rYHGX+R7.net ネットワークプリンタで出力されるものは印刷物です ファイルではありません
205 :デフォルトの名無しさん :2023/03/02(木) 10:50:24.75 ID:h3FhlPC5.net >>201 クエスチョンマーク以降のパラメーターを解釈するのは、Webサーバーのお仕事です サーバーを立ち上げるか借りるかしましょう
206 :デフォルトの名無しさん :2023/03/02(木) 11:39:56.39 ID:5LS4jA2t.net >>201 "file:///D:/test.html?a=001"は? "D:/test.html?a=001"だとD:/test.html%3Fa=001を開こうとしてERR_FILE_NOT_FOUNDになるなぁ
207 :デフォルトの名無しさん :2023/03/02(木) 12:44:28.71 ID:RvyObGoZ.net >>206 それでいけるね ちゃんとクエリーデータも渡ってきてる
208 :デフォルトの名無しさん :2023/03/02(木) 14:02:39.40 ID:RvyObGoZ.net >>205 クエリーパラメタはURLの解釈の部分だと思われる(window.location.search)ので サーバーの仕事というよりHTMLの実行部分(エンジン)の仕事なんだろうね
209 :デフォルトの名無しさん :2023/03/03(金) 14:20:26.65 ID:cfdc5Bpc.net あぐえ
210 :デフォルトの名無しさん :2023/03/03(金) 14:22:08.63 ID:cfdc5Bpc.net ぼうけ
211 :デフォルトの名無しさん :2023/03/07(火) 15:36:52.13 ID:aaO7s6EJ.net 「作成日時が30日以上前」を条件としてフォルダ内のファイルを削除したいのですが、方法はありますか? forfiles だと更新日時が条件となってしまいます、、、
212 :デフォルトの名無しさん :2023/03/07(火) 16:49:23.24 ID:/8dYORgk.net 作成日時は頑張れば取得できるけどコマンドプロンプトでは時間計算ができないから PowerShellのスクリプトを書いたほうがいいと思う
213 :デフォルトの名無しさん :2023/03/07(火) 17:27:20.76 ID:GAVJiBto.net @echo off for /f "usebackq" %%i in (`powershell -c "([datetime](get-date)).AddDays(-30).tostring('yyyyMMdd')"`) do set now=%%i for /f "tokens=1-5* skip=4 delims=/ " %%i in ('dir /tc /od /a-d') do ( if %%i%%j%%k gtr %now% goto:eof if "%%n" neq "" echo delete --- %%n )
214 :デフォルトの名無しさん :2023/03/07(火) 18:08:36.87 ID:aaO7s6EJ.net >>212 簡単に取得できないんですね、、、 forfileに変わるような便利なコマンドがあれば良かったんですけどね、、、 ありがとうございます。
215 :デフォルトの名無しさん :2023/03/07(火) 19:20:35.55 ID:UPk4pcGD.net 自分でexe作るよろし
216 :デフォルトの名無しさん :2023/03/07(火) 19:39:11.17 ID:trxvq/2q.net 前月の同日以前にしたら
217 :デフォルトの名無しさん :2023/03/08(水) 05:54:33.72 ID:AsCwI7z1.net Ruby なら、glob, birthtime を使う。 ただし、DryRun なので実際には削除されません require 'fileutils' require 'date' Prev_day_30 = Date.today - 30 # 今日の30日前 # 絶対パスのディレクトリ名の後ろに、* を付けること! # . で始まる、隠し directory, file を除く glob_pattern = "C:/Users/Owner/Documents/test/*" Dir.glob( glob_pattern ).select do |full_path| stat = File.stat full_path date = stat.birthtime.to_date # 作成日付 # ファイルで、作成日付が今日の30日前以前のものだけ。30日前も含む stat.file? && date <= Prev_day_30 end .each { |full_path| FileUtils::DryRun.rm( full_path ) } # ファイルを削除
218 :デフォルトの名無しさん :2023/03/09(木) 08:57:37.30 ID:12Ly5Xlm.net コマンドラインで置換するスクリプトを拾って改造したけど半角スペースや!が混ざるとうまくいかない chcp 65001 @echo off echo "第1引数はパス「%1」です。" echo "第2引数は置換前「%2」です。" echo "第3引数は置換後「%3」です。" echo "第4引数はファイル名「%4」です。" cd /D %1 rem "もし「file_replaced.txt」ファイルが既に存在している場合、削除しておく" if exist backup_%4 del backup_%4 rem "元ファイルをリネームする" rename %4 backup_%4 rem "以下の「for」ループ内で変数を変化させるための宣言" setlocal ENABLEDELAYEDEXPANSION rem "「for」ループで「file.txt」ファイルの内容を1行ずつ取得し、" rem "「woman」を「girl」に置換する" for /f "delims=" %%a in (backup_%4) do ( rem "変数「line」にファイル内容を一行ずつ代入する" set line=%%a rem "変数「line」内の「woman」を「girl」に置換し、" rem "「file_replaced.txt」ファイルに書き込む" echo !line:%2=%3!>>%4 ) endlocal
219 :デフォルトの名無しさん :2023/03/09(木) 09:46:40.82 ID:H0Wzj8XM.net 強いて言うなら、変数は ”” でくくる、”%%~a”、”%~1” みたいに 使うほうがトラブルが少ない、 ! だけじゃなくて ^ や % などもケアする必要があるので面倒くさい、 になってくる なので、バッチファイルでやる縛りがあるなら仕方ないかもだけど、 さすがに置換のできる何かを、使うor使えるようにした方が良くない? 今どきの PC なら PowerShell 使えるだろうからせめてそっちにするとか
220 :デフォルトの名無しさん :2023/03/09(木) 19:15:35.15 ID:eHaHoipW.net 外部コマンドで置換できるツールがフォーカスを奪う仕様で操作できなくなるから VMで実行したら数時間たっても終わらなくて 別の方法を探したらこれに至った 専用ソフトが見つかり無事終わった
221 :デフォルトの名無しさん :2023/03/10(金) 02:47:18.98 ID:5g8/KHh8.net Ruby なら、 re = /あい/ text = <<'EOT' xあいxあい yあ いy あい EOT puts dest = text.gsub( re, 'そら' ) 出力 xそらxそら yあ いy そら
222 :デフォルトの名無しさん :2023/03/10(金) 03:09:52.26 ID:dbCMTPvQ.net チラシの裏で
223 :デフォルトの名無しさん :2023/03/10(金) 17:32:01.38 ID:eGLVllnw.net 散々コマンドリファレンスを読んだりググったけど分からないことを教えてください。 type data.txt | hoge.bat みたいな事がしたいのですが、バッチスクリプトで、 ・bash での read line ・VBScript での WScript.StdIn.ReadLine のように、1行ずつ標準入力を読むことは可能でしょうか?やっぱり駄目でしょうか?
224 :デフォルトの名無しさん :2023/03/10(金) 18:36:07.72 ID:3mB0yP28.net for /F
225 :デフォルトの名無しさん :2023/03/10(金) 18:44:37.57 ID:KiwyNmEo.net 何がやっぱりなのかわからん もっとちゃんとググれ
226 :デフォルトの名無しさん :2023/03/10(金) 19:12:34.24 ID:eGLVllnw.net >>224 ヒントありがとう。for の中であのコマンドを使うんか…。 >>225 上から目線のジジイはすっこんでろ。 どうせ分かんないんだろ。 ということで正解はここには書かん
227 :デフォルトの名無しさん :2023/03/10(金) 19:31:43.62 ID:hNo+M64i.net 要するに見ての通り他のコマンドからパイプで渡された標準入力をバッチファイルで受け取りたいと言う事でしょ 無理なんじゃね
228 :デフォルトの名無しさん :2023/03/10(金) 19:46:29.11 ID:vz26ACYY.net やっぱり(予想通り・諦め・失望)
229 :デフォルトの名無しさん :2023/03/10(金) 20:58:45.48 ID:c3BQ1P8m.net こんなのでもいいかな? @echo off set lines=0 for /f "tokens=*" %%i in ('more') do ( set data=%%i call :sub ) goto :eof :sub set /a lines+=1 echo %lines% - %data%
230 :デフォルトの名無しさん :2023/03/10(金) 21:03:30.78 ID:c3BQ1P8m.net もちろん forループの特性上、空白行はスキップされたりいろいろするので finsdtrと組み合わせたり色々しないといけないけど 過去ログにその話はあったかと
231 :デフォルトの名無しさん :2023/03/10(金) 21:21:55.47 ID:c3BQ1P8m.net 一応表示は""で括ったほうがいいかな データ内容次第ではエラーとか色々起きるんで
232 :デフォルトの名無しさん :2023/03/10(金) 21:27:21.03 ID:c3BQ1P8m.net バッチの入力データ次第という奴はどうしようもないことは以前から何度もレスされてる ""で括ってもダメで遅延環境変数で出力するのが一番まともかも 完全ではないだろうけど
233 :デフォルトの名無しさん :2023/03/18(土) 01:36:02.39 ID:iEi+ABmN.net フォーいーちないのか?
234 :デフォルトの名無しさん :2023/04/13(木) 18:51:07.20 ID:dCQIGdp/.net >>223 を bing のチャットAIに丸投げしてみた バッチスクリプトで標準入力を1行ずつ読む方法については、以下のような方法があります¹⁴。 - `for /f %%[アルファベット1文字] in ([ファイル名]) do ([処理])` を使う方法 - `set /p 変数名=` を使う方法 例えば、以下のようなバッチスクリプトで、data.txt の内容を hoge.bat に渡すことができます。 ``` @echo off for /f %%a in (data.txt) do ( echo %%a | hoge.bat ) ``` 上記の例では、data.txt の内容を1行ずつ読み込み、hoge.bat に渡しています。¹
235 :デフォルトの名無しさん :2023/04/14(金) 12:47:02.76 ID:ITYRpePX.net 質問は受け側のバッチの内容だろ 送り側でfor文にする意味不明
236 :デフォルトの名無しさん :2023/04/14(金) 13:02:44.39 ID:twidN+O+.net 処理対象がconioだった名残がたまたま残ってただけで バッチ自体に標準入力という概念は無さそう
237 :デフォルトの名無しさん :2023/04/16(日) 15:03:53.79 ID:OSGOKcik.net ループ処理やif分でもカッコ内の変数スコープがおかしくなるのはどういう原理なんです?
238 :デフォルトの名無しさん :2023/04/16(日) 15:21:04.10 ID:j/ssGNNl.net 実行する行の解釈の後に実行されるから この行の解釈は(から)までは1行として一気に解釈される つまり括弧の中の代入文があったとしても実行前の解釈の時点で(その時点の値で)展開されてしまう
239 :デフォルトの名無しさん :2023/04/16(日) 15:36:27.49 ID:j/ssGNNl.net >>237 set /? に詳しい説明があるので読んでみること
240 :デフォルトの名無しさん :2023/04/16(日) 16:30:15.10 ID:zYIf7I3E.net なにをやってスコープがおかしくなったのか具体例を上げてくれないとなんとも言えないな
241 :デフォルトの名無しさん :2023/04/16(日) 16:43:43.01 ID:j/ssGNNl.net いやだからスコープなんて高級な概念は存在しないんだけど
242 :デフォルトの名無しさん :2023/04/16(日) 16:45:17.05 ID:Dywad+WI.net バッチファイルの言語仕様はウンコすぎるから if ... call :foo "%~1" for ... call :foo "%%~i" とかやっといた方がミスが少ない
243 :デフォルトの名無しさん :2023/04/16(日) 16:45:38.04 ID:j/ssGNNl.net いやsetlocalがあったか でもそれを使ってるんならまず自分のやってることは認識してるはずなんだが
244 :デフォルトの名無しさん :2023/04/18(火) 09:44:21.06 ID:N1MfEhNS.net ファイルディスクリプタの1(標準出力)と3を同時にリダイレクトすると 以降プロンプトや標準出力が表示されなくなるのはなぜでしょう? ハング等ではなく表示されないだけで、cmdとの対話モードは続いているようです。 C:\> dir >nul 3>nul dir ←表示されない dir >&2 ←表示される winver ←起動する
245 :デフォルトの名無しさん :2023/04/19(水) 22:45:42.84 ID:UrhLKEvZ.net win11 64bitの環境でどのようなフォルダを開いても 最初からファイルの並びや表示を↓のようにしたいです。 ●●●●●●●●●●● 表示は「一覧」 並び替えは「名前」で「昇順」 グループで表示は「なし」 ●●●●●●●●●●● クリーンインストール直後でもbatファイルで一発で 出来るようなの教えてください
246 :デフォルトの名無しさん :2023/04/20(木) 22:07:04.72 ID:dJqrvGvM.net クリーンインストールでやる場合はISOイメージをカスタマイズする必要あると思うし このスレの範疇をだいぶ超えてるような気がする ひょっとすると外人ならbatファイル一発でやる「技」を持ってるかもしれないね
247 :デフォルトの名無しさん :2023/04/21(金) 08:48:46.19 ID:TBBX4m6H.net >>244 ようわからんなこれ。 標準出力の向き先が3番に切り替わってる。 4番もリダイレクトすると標準エラー出力も切り替わりっぱなしになる。 バグ利用?だけどこれ利用するとデフォルトでログ出力できるな。 echo onだとプロンプトまで記録できる。 ●【バッチ】************************** @type nul 1>nul 2>nul 3>"%~f0.log" 4>&3 echo 処理開始 ver cd aaa echo 処理終了 @exit /b ●【画面】**************************** 処理終了 続行するには何かキーを押してください . . . ●【ログ】**************************** C:\>echo 処理開始 処理開始 C:\>ver Microsoft Windows [Version 10.0.19044.2846] C:\>cd aaa 指定されたパスが見つかりません。 C:\>echo 処理終了 処理終了
248 :デフォルトの名無しさん :2023/04/21(金) 08:53:12.94 ID:TBBX4m6H.net >>247 改行数制限に引っかかって修正した時にバッチ内容間違えた。 @type nul 1>nul 2>nul 3>"%~f0.log" 4>&3 echo 処理開始 ver cd aaa echo 処理終了 @echo 処理終了 >&3 & pause >&3 @exit /b
249 :デフォルトの名無しさん :2023/04/24(月) 17:00:24.74 ID:oDKRGmAI.net >>245 その設定にするレジストリ教えて
250 :デフォルトの名無しさん :2023/04/26(水) 22:20:37.49 ID:MVyBKPQf.net --------------- @echo off set "parent_directories=tamachi omiya" set "sub_directories=0001 0002 0010" setlocal enabledelayedexpansion for %%P in (%parent_directories%) do ( for %%S in (%sub_directories%) do ( set "combined_directory=%%P%%S" echo RewriteEngine On > !combined_directory!.htaccess echo RewriteBase /%%P/%%S/ >> !combined_directory!.htaccess echo. >> !combined_directory!.htaccess echo # Redirect only short URLs >> !combined_directory!.htaccess echo RewriteCond %%{REQUEST_FILENAME} !-f >> !combined_directory!.htaccess echo RewriteCond %%{REQUEST_FILENAME} !-d >> !combined_directory!.htaccess echo RewriteRule ^^(.+)$ htdocs/$1 [L] >> !combined_directory!.htaccess ) ) 上記のようなコマンドのバッチを作った。 バッチを叩くと以下のようなhtaccessをfor分だけ出力させたい。 しかし、$文字のために、バッチがすすまない。$$としてエスケープ試してみるもできなかった。 良きアイデアないだろうか? --------------- 【tamachi0001.htaccess】 RewriteEngine On RewriteBase /tamachi/0001/ # Redirect only short URLs RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ htdocs/$1 [L]
251 :デフォルトの名無しさん :2023/04/26(水) 22:46:13.41 ID:UfBGheQ3.net >>250 $の前の)がdoの閉じカッコになっちゃってる echo RewriteRule ^^(.+^)$ htdocs/$1 [L] >> !combined_directory!.htaccess
252 :デフォルトの名無しさん :2023/04/26(水) 23:03:33.59 ID:MVyBKPQf.net >>251 ありがとう。確かにvscodeだと()対応の注意はなかったのに、sublimetextでは注意してる。 気づかないなあー。助かりました。勉強になります。
253 :デフォルトの名無しさん :2023/04/26(水) 23:43:29.63 ID:MVyBKPQf.net 別件にて質問させてください。 バッチが出力するファイルを RewriteCond %{REQUEST_FILENAME} -f RewriteCond %{REQUEST_FILENAME} -d ではなくて、 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d としたい。 どのように修正すればよいでしょうか? ------ @echo off set "parent_directories=tamachi omiya" set "sub_directories=0001 0002 0010" setlocal enabledelayedexpansion for %%P in (%parent_directories%) do ( for %%S in (%sub_directories%) do ( set "combined_directory=%%P%%S" echo RewriteEngine On > !combined_directory!.htaccess echo RewriteBase /%%P/%%S/ >> !combined_directory!.htaccess echo. >> !combined_directory!.htaccess echo # Redirect only short URLs >> !combined_directory!.htaccess echo RewriteCond %%{REQUEST_FILENAME} !-f >> !combined_directory!.htaccess echo RewriteCond %%{REQUEST_FILENAME} !-d >> !combined_directory!.htaccess ) ) ------
254 :デフォルトの名無しさん :2023/04/27(木) 00:51:53.98 ID:DnKcM+QL.net 自己解決しました。 理屈がよくわかりませんが、!の直前に^^とすることでエスケープすることができました echo RewriteCond %%{REQUEST_FILENAME} !-f >> !combined_directory!.htaccess echo RewriteCond %%{REQUEST_FILENAME} !-d >> !combined_directory!.htaccess ↓ echo RewriteCond %%{REQUEST_FILENAME} ^^!-f >> !combined_directory!.htaccess echo RewriteCond %%{REQUEST_FILENAME} ^^!-d >> !combined_directory!.htaccess お騒がせいたしました。
255 :デフォルトの名無しさん :2023/04/27(木) 01:12:28.56 ID:RXLaISm2.net ^^
256 :デフォルトの名無しさん :2023/04/28(金) 00:51:43.20 ID:aBUvFTO3.net >>254 なんでだろう ^^どころか^も使わないものな
257 :デフォルトの名無しさん :2023/05/05(金) 12:47:19.73 ID:Tmh5Tg58.net バッチファイルをvbsに移植してってAIに投げたらやってくれたんでPythonも頼んだらこっちも成功 妙な制限から卒業できるぞ
258 :デフォルトの名無しさん :2023/05/05(金) 13:40:50.07 ID:Aaus9EG8.net c#がいいんじゃないか pythonは入れてない人が殆どだろうし、c#ならwindows全員入ってる まあ一旦コンパイルしないといけないけど
259 :デフォルトの名無しさん :2023/05/05(金) 20:08:22.78 ID:cXUEGYUP.net だったらC#はpowershellからコンパイルなしで使えるからpowershellがいいんじゃないか 実際powershellとC#ごっちゃにして使ってるぞ
260 :デフォルトの名無しさん :2023/05/05(金) 20:13:58.35 ID:jijjo6rD.net powershellはダブルクリックで動かんから個人ユーザーには向かない
261 :デフォルトの名無しさん :2023/05/05(金) 21:08:13.64 ID:oeszHJgX.net いやPowershellはexe化できるからダブルクリック起動も余裕だろ
262 :デフォルトの名無しさん :2023/05/05(金) 21:25:45.96 ID:Aaus9EG8.net powershellはイニシャルコストが高いんだよな PC起動後初回起動で相当待たされる よく使う人にはいいんだろうが、1ヶ月に数回とかだと苦痛なんだよ
263 :デフォルトの名無しさん :2023/05/05(金) 23:33:04.65 ID:VDYHFDsH.net 昔はVBランタイムや .NET Frameworkも起動遅かったよなー
264 :デフォルトの名無しさん :2023/05/06(土) 17:23:48.16 ID:gRoxw4m5.net jqコマンドってどっかにスレないかな cmdでバッチ作って動かしてるんだけど jsonで "characterID": 1,"Level": 50, "Status": {~ "characterID": 1,"Level": 100, "Status": {~ "characterID": 2,"Level": 50, "Status": {~ "characterID": 3,"Level": 50, "Status": {~ "characterID": 3,"Level": 100, "Status": {~ みたいにキャラごとにレベル50と100があったり50しかない場合があったりするんだけど キャラごとに100があったらそれだけなかったら50を拾うみたいな条件で引っこ抜きたいんだけど上手くいかないので何かいい方法ないかなって探してます 何かいい方法ないでしょうか
265 :デフォルトの名無しさん :2023/05/06(土) 18:44:39.95 ID:ugbjGoYF.net step1 50と100の両方を抜き出す step2 複数あったらstep1に対して100を抜き出す
266 :デフォルトの名無しさん :2023/05/06(土) 18:48:10.77 ID:ugbjGoYF.net step1 100を抜き出す step2 無ければ50を抜き出す
267 :デフォルトの名無しさん :2023/05/06(土) 18:58:59.94 ID:l5Xh2UOq.net powershellで $json_string = @' [{"characterID": 1,"Level": 50, "Status": {"idx":1}}, {"characterID": 1,"Level": 100, "Status": {"idx":2}}, {"characterID": 2,"Level": 50, "Status": {"idx":3}}, {"characterID": 3,"Level": 50, "Status": {"idx":4}}, {"characterID": 3,"Level": 100, "Status": {"idx":5}}] '@ $json = $json_string | ConvertFrom-Json $json | group characterID | select @{N='ID';E={$_.Name}},@{N='MaxL';E={[int]($_.group | measure -Maximum Level).Maximum}} | %{ $id=$_.ID; $maxl=$_.MaxL; $json | ?{ $id -eq $_.characterID -and $maxl -eq $_.Level}} 出力結果 characterID Level Status ----------- ----- ------ 1 100 @{idx=2} 2 50 @{idx=3} 3 100 @{idx=5} バッチファイルから呼び出す場合 set FILENAME=test.txt powershell -c "$json=gc %FILENAME% | ConvertFrom-Json; $json | group characterID | select @{N='ID';E={$_.Name}},@{N='MaxL';E={[int]($_.group | measure -Maximum Level).Maximum}} | %%{ $id=$_.ID; $maxl=$_.MaxL; $json | ?{ $id -eq $_.characterID -and $maxl -eq $_.Level}}"
268 :デフォルトの名無しさん :2023/05/06(土) 19:22:29.47 ID:l5Xh2UOq.net こっちのが短いし判りやすいか $hash=@{}; $json | %{ if (!$hash.Contains($_.characterID) -or $_.Level -gt $hash[$_.characterID].Level) { $hash[$_.characterID] = $_ }}; $hash.Values
269 :デフォルトの名無しさん :2023/05/06(土) 21:10:41.34 ID:UyrtVAAx.net 機能的にはあるっぽいよ jq "group_by(.characterID) | map(max_by(.Level))" ※動作未確認
270 :デフォルトの名無しさん :2023/05/06(土) 22:01:27.09 ID:gRoxw4m5.net >>267 powershell でできるのね ありがとう group characterIDでこうなって、 Count Name Group ----- ---- ----- 2 1 {@{characterID=1; Level=50; Status=}, @{characterID=1; Level=100; Status=}} 1 2 {@{characterID=2; Level=50; Status=}} 2 3 {@{characterID=3; Level=50; Status=}, @{characterID=3; Level=100; Status=}} selectの結果こうなってるみたいだけど ID MaxL -- ---- 1 100 2 50 3 100 select内の『E={[int]($_.group | measure -Maximum Level).Maximum}』でLevelの最大値が取れる構文が理解できてない 特に.Maximumの情報が見つからなくてわかってない measure結果のMaximumの値を取得してるってこと? Count : Average : Sum : Maximum : Minimum : StandardDeviation : Property : その後はまだ全然わかってない 『%{ $id=$_.ID; $maxl=$_.MaxL;$json | ?{ $id -eq $_.characterID -and $maxl -eq $_.Level}}』 select結果のIDとMaxLとConvertFrom-Json結果のcharacterIDとLevelが同じ値のものだけ出力しているんだと思うんだけど構文が全く理解できない %はForEach? ?はWhere? って思って調べてるけど記述が一致する説明を見つけられていない
271 :デフォルトの名無しさん :2023/05/06(土) 22:02:29.33 ID:gRoxw4m5.net 唸ってる間に>>268-269 が増えてた ありがとう 調べたり確認してみる
272 :デフォルトの名無しさん :2023/05/07(日) 01:38:48.15 ID:OzRuG3KU.net > measure結果のMaximumの値を取得してるってこと? そう。「集計プロパティ」とか「計算プロパティ」とかっていう構文。 learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_calculated_properties?view=powershell-5.1#select-object > %はForEach? > ?はWhere? そう。 ForEach-Object {} = % {} = foreach {} ≠ foreach () {} Where-Object {} = ? {} = where {} ≠ where () {} こうも書ける。 powershell -c "(gc 〜.txt -Raw | ConvertFrom-Json) | group characterID | foreach {$_.Group | sort Level | select -Last 1} | ConvertTo-Json"
273 :デフォルトの名無しさん :2023/05/09(火) 02:15:55.11 ID:ZvIGeNCt.net 変数の値に含まれる全角のダブルクォーテーションを 半角のダブルクォーテーションに置換するにはどうすればいいですか? setによる置換では期待通りに動作しませんでした set BatFileTag=”test1“ set "%BatFileTag:“="%" set "%BatFileTag:”="%" echo %BatFileTag% set BatFileTag=”test2“ set %BatFileTag:“="% set %BatFileTag:”="% echo %BatFileTag%
165 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200
本文 スレッドタイトル 投稿者