【.cmd】 バッチファイルスクリプト %15 【.bat】 (868レス)
【.cmd】 バッチファイルスクリプト %15 【.bat】 http://mevius.5ch.net/test/read.cgi/tech/1663153441/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
219: デフォルトの名無しさん [sage] 2023/03/08(水) 05:54:33.72 ID:AsCwI7z1 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 ) } # ファイルを削除 http://mevius.5ch.net/test/read.cgi/tech/1663153441/219
220: デフォルトの名無しさん [sage] 2023/03/09(木) 08:57:37.30 ID:12Ly5Xlm コマンドラインで置換するスクリプトを拾って改造したけど半角スペースや!が混ざるとうまくいかない 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 http://mevius.5ch.net/test/read.cgi/tech/1663153441/220
221: デフォルトの名無しさん [sage] 2023/03/09(木) 09:46:40.82 ID:H0Wzj8XM 強いて言うなら、変数は ”” でくくる、”%%~a”、”%~1” みたいに 使うほうがトラブルが少ない、 ! だけじゃなくて ^ や % などもケアする必要があるので面倒くさい、 になってくる なので、バッチファイルでやる縛りがあるなら仕方ないかもだけど、 さすがに置換のできる何かを、使うor使えるようにした方が良くない? 今どきの PC なら PowerShell 使えるだろうからせめてそっちにするとか http://mevius.5ch.net/test/read.cgi/tech/1663153441/221
222: デフォルトの名無しさん [sage] 2023/03/09(木) 19:15:35.15 ID:eHaHoipW 外部コマンドで置換できるツールがフォーカスを奪う仕様で操作できなくなるから VMで実行したら数時間たっても終わらなくて 別の方法を探したらこれに至った 専用ソフトが見つかり無事終わった http://mevius.5ch.net/test/read.cgi/tech/1663153441/222
223: デフォルトの名無しさん [sage] 2023/03/10(金) 02:47:18.98 ID:5g8/KHh8 Ruby なら、 re = /あい/ text = <<'EOT' xあいxあい yあ いy あい EOT puts dest = text.gsub( re, 'そら' ) 出力 xそらxそら yあ いy そら http://mevius.5ch.net/test/read.cgi/tech/1663153441/223
224: デフォルトの名無しさん [sage] 2023/03/10(金) 03:09:52.26 ID:dbCMTPvQ チラシの裏で http://mevius.5ch.net/test/read.cgi/tech/1663153441/224
225: デフォルトの名無しさん [sage] 2023/03/10(金) 17:32:01.38 ID:eGLVllnw 散々コマンドリファレンスを読んだりググったけど分からないことを教えてください。 type data.txt | hoge.bat みたいな事がしたいのですが、バッチスクリプトで、 ・bash での read line ・VBScript での WScript.StdIn.ReadLine のように、1行ずつ標準入力を読むことは可能でしょうか?やっぱり駄目でしょうか? http://mevius.5ch.net/test/read.cgi/tech/1663153441/225
226: デフォルトの名無しさん [sage] 2023/03/10(金) 18:36:07.72 ID:3mB0yP28 for /F http://mevius.5ch.net/test/read.cgi/tech/1663153441/226
227: デフォルトの名無しさん [sage] 2023/03/10(金) 18:44:37.57 ID:KiwyNmEo 何がやっぱりなのかわからん もっとちゃんとググれ http://mevius.5ch.net/test/read.cgi/tech/1663153441/227
228: デフォルトの名無しさん [sage] 2023/03/10(金) 19:12:34.24 ID:eGLVllnw >>226 ヒントありがとう。for の中であのコマンドを使うんか…。 >>227 上から目線のジジイはすっこんでろ。 どうせ分かんないんだろ。 ということで正解はここには書かん http://mevius.5ch.net/test/read.cgi/tech/1663153441/228
229: デフォルトの名無しさん [sage] 2023/03/10(金) 19:31:43.62 ID:hNo+M64i 要するに見ての通り他のコマンドからパイプで渡された標準入力をバッチファイルで受け取りたいと言う事でしょ 無理なんじゃね http://mevius.5ch.net/test/read.cgi/tech/1663153441/229
230: デフォルトの名無しさん [sage] 2023/03/10(金) 19:46:29.11 ID:vz26ACYY やっぱり(予想通り・諦め・失望) http://mevius.5ch.net/test/read.cgi/tech/1663153441/230
231: デフォルトの名無しさん [sage] 2023/03/10(金) 20:58:45.48 ID:c3BQ1P8m こんなのでもいいかな? @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% http://mevius.5ch.net/test/read.cgi/tech/1663153441/231
232: デフォルトの名無しさん [sage] 2023/03/10(金) 21:03:30.78 ID:c3BQ1P8m もちろん forループの特性上、空白行はスキップされたりいろいろするので finsdtrと組み合わせたり色々しないといけないけど 過去ログにその話はあったかと http://mevius.5ch.net/test/read.cgi/tech/1663153441/232
233: デフォルトの名無しさん [sage] 2023/03/10(金) 21:21:55.47 ID:c3BQ1P8m 一応表示は""で括ったほうがいいかな データ内容次第ではエラーとか色々起きるんで http://mevius.5ch.net/test/read.cgi/tech/1663153441/233
234: デフォルトの名無しさん [sage] 2023/03/10(金) 21:27:21.03 ID:c3BQ1P8m バッチの入力データ次第という奴はどうしようもないことは以前から何度もレスされてる ""で括ってもダメで遅延環境変数で出力するのが一番まともかも 完全ではないだろうけど http://mevius.5ch.net/test/read.cgi/tech/1663153441/234
235: デフォルトの名無しさん [] 2023/03/18(土) 01:36:02.39 ID:iEi+ABmN フォーいーちないのか? http://mevius.5ch.net/test/read.cgi/tech/1663153441/235
236: デフォルトの名無しさん [] 2023/04/13(木) 18:51:07.20 ID:dCQIGdp/ >>225を 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 に渡しています。¹ http://mevius.5ch.net/test/read.cgi/tech/1663153441/236
237: デフォルトの名無しさん [sage] 2023/04/14(金) 12:47:02.76 ID:ITYRpePX 質問は受け側のバッチの内容だろ 送り側でfor文にする意味不明 http://mevius.5ch.net/test/read.cgi/tech/1663153441/237
238: デフォルトの名無しさん [sage] 2023/04/14(金) 13:02:44.39 ID:twidN+O+ 処理対象がconioだった名残がたまたま残ってただけで バッチ自体に標準入力という概念は無さそう http://mevius.5ch.net/test/read.cgi/tech/1663153441/238
239: デフォルトの名無しさん [sage] 2023/04/16(日) 15:03:53.79 ID:OSGOKcik ループ処理やif分でもカッコ内の変数スコープがおかしくなるのはどういう原理なんです? http://mevius.5ch.net/test/read.cgi/tech/1663153441/239
240: デフォルトの名無しさん [sage] 2023/04/16(日) 15:21:04.10 ID:j/ssGNNl 実行する行の解釈の後に実行されるから この行の解釈は(から)までは1行として一気に解釈される つまり括弧の中の代入文があったとしても実行前の解釈の時点で(その時点の値で)展開されてしまう http://mevius.5ch.net/test/read.cgi/tech/1663153441/240
241: デフォルトの名無しさん [sage] 2023/04/16(日) 15:36:27.49 ID:j/ssGNNl >>239 set /? に詳しい説明があるので読んでみること http://mevius.5ch.net/test/read.cgi/tech/1663153441/241
242: デフォルトの名無しさん [sage] 2023/04/16(日) 16:30:15.10 ID:zYIf7I3E なにをやってスコープがおかしくなったのか具体例を上げてくれないとなんとも言えないな http://mevius.5ch.net/test/read.cgi/tech/1663153441/242
243: デフォルトの名無しさん [sage] 2023/04/16(日) 16:43:43.01 ID:j/ssGNNl いやだからスコープなんて高級な概念は存在しないんだけど http://mevius.5ch.net/test/read.cgi/tech/1663153441/243
244: デフォルトの名無しさん [sage] 2023/04/16(日) 16:45:17.05 ID:Dywad+WI バッチファイルの言語仕様はウンコすぎるから if ... call :foo "%~1" for ... call :foo "%%~i" とかやっといた方がミスが少ない http://mevius.5ch.net/test/read.cgi/tech/1663153441/244
245: デフォルトの名無しさん [sage] 2023/04/16(日) 16:45:38.04 ID:j/ssGNNl いやsetlocalがあったか でもそれを使ってるんならまず自分のやってることは認識してるはずなんだが http://mevius.5ch.net/test/read.cgi/tech/1663153441/245
246: デフォルトの名無しさん [sage] 2023/04/18(火) 09:44:21.06 ID:N1MfEhNS ファイルディスクリプタの1(標準出力)と3を同時にリダイレクトすると 以降プロンプトや標準出力が表示されなくなるのはなぜでしょう? ハング等ではなく表示されないだけで、cmdとの対話モードは続いているようです。 C:\> dir >nul 3>nul dir ←表示されない dir >&2 ←表示される winver ←起動する http://mevius.5ch.net/test/read.cgi/tech/1663153441/246
247: デフォルトの名無しさん [sage] 2023/04/19(水) 22:45:42.84 ID:UrhLKEvZ win11 64bitの環境でどのようなフォルダを開いても 最初からファイルの並びや表示を↓のようにしたいです。 ●●●●●●●●●●● 表示は「一覧」 並び替えは「名前」で「昇順」 グループで表示は「なし」 ●●●●●●●●●●● クリーンインストール直後でもbatファイルで一発で 出来るようなの教えてください http://mevius.5ch.net/test/read.cgi/tech/1663153441/247
248: デフォルトの名無しさん [sage] 2023/04/20(木) 22:07:04.72 ID:dJqrvGvM クリーンインストールでやる場合はISOイメージをカスタマイズする必要あると思うし このスレの範疇をだいぶ超えてるような気がする ひょっとすると外人ならbatファイル一発でやる「技」を持ってるかもしれないね http://mevius.5ch.net/test/read.cgi/tech/1663153441/248
249: デフォルトの名無しさん [sage] 2023/04/21(金) 08:48:46.19 ID:TBBX4m6H >>246 ようわからんなこれ。 標準出力の向き先が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 処理終了 処理終了 http://mevius.5ch.net/test/read.cgi/tech/1663153441/249
250: デフォルトの名無しさん [sage] 2023/04/21(金) 08:53:12.94 ID:TBBX4m6H >>249 改行数制限に引っかかって修正した時にバッチ内容間違えた。 @type nul 1>nul 2>nul 3>"%~f0.log" 4>&3 echo 処理開始 ver cd aaa echo 処理終了 @echo 処理終了 >&3 & pause >&3 @exit /b http://mevius.5ch.net/test/read.cgi/tech/1663153441/250
251: デフォルトの名無しさん [sage] 2023/04/24(月) 17:00:24.74 ID:oDKRGmAI >>247 その設定にするレジストリ教えて http://mevius.5ch.net/test/read.cgi/tech/1663153441/251
252: デフォルトの名無しさん [] 2023/04/26(水) 22:20:37.49 ID:MVyBKPQf --------------- @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] http://mevius.5ch.net/test/read.cgi/tech/1663153441/252
253: デフォルトの名無しさん [sage] 2023/04/26(水) 22:46:13.41 ID:UfBGheQ3 >>252 $の前の)がdoの閉じカッコになっちゃってる echo RewriteRule ^^(.+^)$ htdocs/$1 [L] >> !combined_directory!.htaccess http://mevius.5ch.net/test/read.cgi/tech/1663153441/253
254: デフォルトの名無しさん [sage] 2023/04/26(水) 23:03:33.59 ID:MVyBKPQf >>253 ありがとう。確かにvscodeだと()対応の注意はなかったのに、sublimetextでは注意してる。 気づかないなあー。助かりました。勉強になります。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/254
255: デフォルトの名無しさん [] 2023/04/26(水) 23:43:29.63 ID:MVyBKPQf 別件にて質問させてください。 バッチが出力するファイルを 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 ) ) ------ http://mevius.5ch.net/test/read.cgi/tech/1663153441/255
256: デフォルトの名無しさん [sage] 2023/04/27(木) 00:51:53.98 ID:DnKcM+QL 自己解決しました。 理屈がよくわかりませんが、!の直前に^^とすることでエスケープすることができました 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 お騒がせいたしました。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/256
257: デフォルトの名無しさん [sage] 2023/04/27(木) 01:12:28.56 ID:RXLaISm2 ^^ http://mevius.5ch.net/test/read.cgi/tech/1663153441/257
258: デフォルトの名無しさん [sage] 2023/04/28(金) 00:51:43.20 ID:aBUvFTO3 >>256 なんでだろう ^^どころか^も使わないものな http://mevius.5ch.net/test/read.cgi/tech/1663153441/258
259: デフォルトの名無しさん [sage] 2023/05/05(金) 12:47:19.73 ID:Tmh5Tg58 バッチファイルをvbsに移植してってAIに投げたらやってくれたんでPythonも頼んだらこっちも成功 妙な制限から卒業できるぞ http://mevius.5ch.net/test/read.cgi/tech/1663153441/259
260: デフォルトの名無しさん [sage] 2023/05/05(金) 13:40:50.07 ID:Aaus9EG8 c#がいいんじゃないか pythonは入れてない人が殆どだろうし、c#ならwindows全員入ってる まあ一旦コンパイルしないといけないけど http://mevius.5ch.net/test/read.cgi/tech/1663153441/260
261: デフォルトの名無しさん [sage] 2023/05/05(金) 20:08:22.78 ID:cXUEGYUP だったらC#はpowershellからコンパイルなしで使えるからpowershellがいいんじゃないか 実際powershellとC#ごっちゃにして使ってるぞ http://mevius.5ch.net/test/read.cgi/tech/1663153441/261
262: デフォルトの名無しさん [sage] 2023/05/05(金) 20:13:58.35 ID:jijjo6rD powershellはダブルクリックで動かんから個人ユーザーには向かない http://mevius.5ch.net/test/read.cgi/tech/1663153441/262
263: デフォルトの名無しさん [sage] 2023/05/05(金) 21:08:13.64 ID:oeszHJgX いやPowershellはexe化できるからダブルクリック起動も余裕だろ http://mevius.5ch.net/test/read.cgi/tech/1663153441/263
264: デフォルトの名無しさん [sage] 2023/05/05(金) 21:25:45.96 ID:Aaus9EG8 powershellはイニシャルコストが高いんだよな PC起動後初回起動で相当待たされる よく使う人にはいいんだろうが、1ヶ月に数回とかだと苦痛なんだよ http://mevius.5ch.net/test/read.cgi/tech/1663153441/264
265: デフォルトの名無しさん [sage] 2023/05/05(金) 23:33:04.65 ID:VDYHFDsH 昔はVBランタイムや .NET Frameworkも起動遅かったよなー http://mevius.5ch.net/test/read.cgi/tech/1663153441/265
266: デフォルトの名無しさん [sage] 2023/05/06(土) 17:23:48.16 ID:gRoxw4m5 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を拾うみたいな条件で引っこ抜きたいんだけど上手くいかないので何かいい方法ないかなって探してます 何かいい方法ないでしょうか http://mevius.5ch.net/test/read.cgi/tech/1663153441/266
267: デフォルトの名無しさん [sage] 2023/05/06(土) 18:44:39.95 ID:ugbjGoYF step1 50と100の両方を抜き出す step2 複数あったらstep1に対して100を抜き出す http://mevius.5ch.net/test/read.cgi/tech/1663153441/267
268: デフォルトの名無しさん [sage] 2023/05/06(土) 18:48:10.77 ID:ugbjGoYF step1 100を抜き出す step2 無ければ50を抜き出す http://mevius.5ch.net/test/read.cgi/tech/1663153441/268
269: デフォルトの名無しさん [sage] 2023/05/06(土) 18:58:59.94 ID:l5Xh2UOq 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}}" http://mevius.5ch.net/test/read.cgi/tech/1663153441/269
270: デフォルトの名無しさん [sage] 2023/05/06(土) 19:22:29.47 ID:l5Xh2UOq こっちのが短いし判りやすいか $hash=@{}; $json | %{ if (!$hash.Contains($_.characterID) -or $_.Level -gt $hash[$_.characterID].Level) { $hash[$_.characterID] = $_ }}; $hash.Values http://mevius.5ch.net/test/read.cgi/tech/1663153441/270
271: デフォルトの名無しさん [sage] 2023/05/06(土) 21:10:41.34 ID:UyrtVAAx 機能的にはあるっぽいよ jq "group_by(.characterID) | map(max_by(.Level))" ※動作未確認 http://mevius.5ch.net/test/read.cgi/tech/1663153441/271
272: デフォルトの名無しさん [sage] 2023/05/06(土) 22:01:27.09 ID:gRoxw4m5 >>269 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? って思って調べてるけど記述が一致する説明を見つけられていない http://mevius.5ch.net/test/read.cgi/tech/1663153441/272
273: デフォルトの名無しさん [sage] 2023/05/06(土) 22:02:29.33 ID:gRoxw4m5 唸ってる間に>>270-271が増えてた ありがとう 調べたり確認してみる http://mevius.5ch.net/test/read.cgi/tech/1663153441/273
274: デフォルトの名無しさん [sage] 2023/05/07(日) 01:38:48.15 ID:OzRuG3KU > 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" http://mevius.5ch.net/test/read.cgi/tech/1663153441/274
275: デフォルトの名無しさん [] 2023/05/09(火) 02:15:55.11 ID:ZvIGeNCt 変数の値に含まれる全角のダブルクォーテーションを 半角のダブルクォーテーションに置換するにはどうすればいいですか? setによる置換では期待通りに動作しませんでした set BatFileTag=”test1“ set "%BatFileTag:“="%" set "%BatFileTag:”="%" echo %BatFileTag% set BatFileTag=”test2“ set %BatFileTag:“="% set %BatFileTag:”="% echo %BatFileTag% http://mevius.5ch.net/test/read.cgi/tech/1663153441/275
276: デフォルトの名無しさん [] 2023/05/09(火) 05:44:06.79 ID:uZ4E3DcQ 動くのか確認してないけどBing AIに丸投げしてみたw バッチファイルで変数の値に含まれる全角のダブルクォーテーションを半角のダブルクォーテーションに置換するには、以下のような方法があります。 - 変数を`%%`で囲んで`set`コマンドで置換する場合、`%%`の前に`~`を付けるとダブルクォーテーションが除去されます¹。例えば、 ```bat set BatFileTag=”test1“ set BatFileTag=%~BatFileTag% echo %BatFileTag% ``` - 変数を`!`で囲んで遅延展開を有効にすると、全角のダブルクォーテーションも置換できます²。例えば、 ```bat setlocal enabledelayedexpansion set BatFileTag=”test2“ set BatFileTag=!BatFileTag:“="! set BatFileTag=!BatFileTag:”="! echo !BatFileTag! endlocal ``` - ダブルクォーテーションを含む変数を別のコマンドに渡す場合は、ダブルクォーテーションをエスケープする必要があります³。例えば、 ```bat set BatFileTag=”test3“ echo ^"%BatFileTag%^" ``` http://mevius.5ch.net/test/read.cgi/tech/1663153441/276
277: デフォルトの名無しさん [] 2023/05/09(火) 05:44:21.88 ID:uZ4E3DcQ 続き これらの方法はどれも期待通りに動作しますか?😊 ソース: Bing との会話 2023/5/9 (1) バッチで変数にダブルクオーテーションを格納したい. https://teratail.com/questions/259883. (2) バッチファイルで変数を複数行にわけて指定したときのダブル .... https://ja.stackoverflow.com/questions/65968/%e3%83%90%e3%83%83%e3%83%81%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%a7%e5%a4%89%e6%95%b0%e3%82%92%e8%a4%87%e6%95%b0%e8%a1%8c%e3%81%ab%e3%82%8f%e3%81%91%e3%81%a6%e6%8c%87%e5%ae%9a%e3%81%97%e3%81%9f%e3%81%a8%e3%81%8d%e3%81%ae%e3%83%80%e3%83%96%e3%83%ab%e3%82%af%e3%82%a9%e3%83%bc%e3%83%86%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%ae%e6%8c%87%e5%ae%9a%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6. (3) バッチファイルのダブルクォート地獄を回避する方法 - Qiita. https://qiita.com/pochy9n/items/7079f3f13849dcafb969. http://mevius.5ch.net/test/read.cgi/tech/1663153441/277
278: デフォルトの名無しさん [] 2023/05/09(火) 05:55:08.97 ID:uZ4E3DcQ いいえ。まだ問題があります。 サンプルのどこにも全角のダブルクォーテーションがでてきません すみません、サンプルの全角のダブルクォーテーションは見えにくいかもしれませんが、実際にはあります。 コピーしてテキストエディタに貼り付けてみてください。 半角のダブルクォーテーションと比べると、全角のダブルクォーテーションは少し太くて長いです。😊 だそうだ スマホだとわからんわ http://mevius.5ch.net/test/read.cgi/tech/1663153441/278
279: デフォルトの名無しさん [] 2023/05/09(火) 05:56:33.76 ID:uZ4E3DcQ バッチの中身もオレはちゃんと読んでないんでBingが意図を正しく理解したかも確認してない http://mevius.5ch.net/test/read.cgi/tech/1663153441/279
280: デフォルトの名無しさん [] 2023/05/09(火) 05:59:48.56 ID:uZ4E3DcQ リンクのコピペに失敗したやつはこれ https://teratail.com/questions/259883?ssp=1&darkschemeovr=1&setlang=ja-JP&safesearch=moderate https://qiita.com/pochy9n/items/7079f3f13849dcafb969?ssp=1&darkschemeovr=1&setlang=ja-JP&safesearch=moderate http://mevius.5ch.net/test/read.cgi/tech/1663153441/280
281: デフォルトの名無しさん [sage] 2023/05/09(火) 08:56:45.57 ID:bGbmh2Wb そんな難問なのか? set BatFileTag=“test1” set BatFileTag set BatFileTag=%BatFileTag:“="% set BatFileTag=%BatFileTag:”="% set BatFileTag http://mevius.5ch.net/test/read.cgi/tech/1663153441/281
282: デフォルトの名無しさん [sage] 2023/05/09(火) 09:15:19.23 ID:TEEc9Eeb >>275 変換結果を変数に格納してないだけじゃん set BatFileTag=”test1“ set "BatFileTag=%BatFileTag:“="%" set "BatFileTag=%BatFileTag:”="%" echo %BatFileTag% set BatFileTag=”test2“ set BatFileTag=%BatFileTag:“="% set BatFileTag=%BatFileTag:”="% echo %BatFileTag% http://mevius.5ch.net/test/read.cgi/tech/1663153441/282
283: デフォルトの名無しさん [] 2023/05/09(火) 12:45:29.09 ID:ZvIGeNCt >変換結果を変数に格納してないだけじゃん おっしゃる通りでした、そのコードで期待通り動作しました。 ありがとうございました。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/283
284: デフォルトの名無しさん [sage] 2023/05/09(火) 12:54:13.19 ID:0Hn95uhF ケアレスミスやね 自分もよくある http://mevius.5ch.net/test/read.cgi/tech/1663153441/284
285: デフォルトの名無しさん [sage] 2023/05/09(火) 15:10:57.87 ID:cxHUCWoc 見覚えのある変数名だと思ったらDTV板の人か http://mevius.5ch.net/test/read.cgi/tech/1663153441/285
286: デフォルトの名無しさん [] 2023/05/10(水) 02:46:49.16 ID:7WScgW4R >>276 変数を`%%`で囲んで`set`コマンドで置換する場合、`%%`の前に`~`を付けるとダブルクォーテーションが除去されます え、ホント?と思って やってみたら バッチ パラメーターの置き換えで、パス演算子の次の使用法は無効です: %~BatFileTag% と出力されたんですが、できないですよね? >>285 EDCBの 録画タグ の話でした。。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/286
287: デフォルトの名無しさん [sage] 2023/05/10(水) 03:43:26.68 ID:fIRqc6o3 >>266 Ruby なら、 require 'json' # 改行を削除する。削除しなくても同じ結果 input_json_str = <<'JSON'.delete( "\n" ) [{"ID": 1,"Level": 50, "Status": {"idx":1}}, {"ID": 1,"Level": 100, "Status": {"idx":2}}, {"ID": 2,"Level": 50, "Status": {"idx":3}}, {"ID": 3,"Level": 50, "Status": {"idx":4}}, {"ID": 3,"Level": 100, "Status": {"idx":5}}] JSON input_json_obj = JSON.parse( input_json_str ) # ID でグループ化して、最大Level のものを取得する result = input_json_obj.group_by { |hash| hash[ "ID" ] }.map do |row| row[ 1 ].max_by { |hash| hash[ "Level" ] } end p result 出力 [ {"ID"=>1, "Level"=>100, "Status"=>{"idx"=>2}}, {"ID"=>2, "Level"=>50, "Status"=>{"idx"=>3}}, {"ID"=>3, "Level"=>100, "Status"=>{"idx"=>5}} ] http://mevius.5ch.net/test/read.cgi/tech/1663153441/287
288: デフォルトの名無しさん [sage] 2023/05/10(水) 07:27:54.84 ID:7bNTa4KZ >>286 エラー表示で 「CALL /?」または「FOR /?」 とあるだろ それ見ると %~ の使い方がわかるよ どちらにせよ全角の引用符は消えない AIがまだポンコツだし、その翻訳もおかしいので あまり参考にならない http://mevius.5ch.net/test/read.cgi/tech/1663153441/288
289: デフォルトの名無しさん [] 2023/05/10(水) 17:07:25.20 ID:7WScgW4R >>288 ありがとうございます、ヘルプを参照しました。 %~0 で 周りを囲んだダブルクォーテーションは除去できる、 %~BatFileTag% は 構文エラー、ですね。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/289
290: デフォルトの名無しさん [sage] 2023/05/10(水) 19:56:46.59 ID:8YKnH4aX for文の%%iみたいな変数に入れても%0とかと同じように操作できるよ。 いずれにしても全角ダブルクォーテーションは除去できないけど http://mevius.5ch.net/test/read.cgi/tech/1663153441/290
291: デフォルトの名無しさん [] 2023/05/10(水) 23:36:37.50 ID:7WScgW4R バッチスクリプトの引数参照(?)の展開を 通常の変数でも使いたい時ありますよね。 forを使えば、わざわざ関数に渡さなくていいってことですよね。覚えておきます。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/291
292: デフォルトの名無しさん [sage] 2023/05/14(日) 01:53:53.57 ID:4Al5Gork ばっちこーい! http://mevius.5ch.net/test/read.cgi/tech/1663153441/292
293: デフォルトの名無しさん [sage] 2023/05/21(日) 15:26:18.55 ID:/zBPnU/J Sendtoに置いたバッチがある。 ここに複数のファイルを送り、それぞれのパスをプログラムに送りたい。 送った複数のファイル、はどう表現すればいいのでしょうか。 @echo off for %%F in (*.jpg) do call :sub "%%F" goto :EOF :sub echo "C:\hoge.exe" "%~dpnx1" goto :EOF sub以下は様子見コード http://mevius.5ch.net/test/read.cgi/tech/1663153441/293
294: デフォルトの名無しさん [sage] 2023/05/21(日) 15:31:45.83 ID:WLjUQB8s shift /? http://mevius.5ch.net/test/read.cgi/tech/1663153441/294
295: デフォルトの名無しさん [sage] 2023/05/21(日) 16:33:43.21 ID:uxeKp44S 何したいか若干よくわからないけど、 hoge.exeに引数全部一気に与えたいなら%*と書くと全部与えられる。 そうじゃなくて、 hoge.exe %1 hoge.exe %2 ... とそれぞれを1つずつ与えたいなら shiftを使ってずらして%1の中身が無くなるまでループさせる。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/295
296: デフォルトの名無しさん [sage] 2023/05/21(日) 17:33:53.16 ID:/zBPnU/J >>295 ありがとう、それがわからなかった。 何がやりたいのかわからないのはたぶん echoとpauseのところですよね(^^; もともとはググって見つけたフォトショ関係のバッチのコピペで、「複数ファイルできます!」って 書いてあるのに1つ送っても2つ送ってもそのファイルのフォルダ全部処理しちゃうので 様子見のために書き換えて、%%Fがおかしいんじゃ?とたどり着いて詰んだところでした。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/296
297: デフォルトの名無しさん [sage] 2023/05/21(日) 18:06:23.90 ID:/vzELmbQ *.jpg を %* でも良さそう? http://mevius.5ch.net/test/read.cgi/tech/1663153441/297
298: デフォルトの名無しさん [sage] 2023/05/29(月) 17:17:55.21 ID:MDtfdjpW head abc.txt はエラーになるが head abc,txt >con とすると実行できた、なぜだろう? head.exeは2003年のもの http://mevius.5ch.net/test/read.cgi/tech/1663153441/298
299: デフォルトの名無しさん [sage] 2023/05/30(火) 09:18:57.94 ID:8/1/VW9e 環境もエラーメッセージも書いてくれてないしコマンドはtypoっぽいしでさっぱりだが head.exeの標準入出力処理やらコンソール描画エリアサイズ取得やらに問題があるが 標準出力がリダイレクトされてることでその問題のある処理をスキップできてるとかじゃないの http://mevius.5ch.net/test/read.cgi/tech/1663153441/299
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 569 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.014s