【.cmd】 バッチファイルスクリプト %15 【.bat】 (819レス)
【.cmd】 バッチファイルスクリプト %15 【.bat】 http://mevius.5ch.net/test/read.cgi/tech/1663153441/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
217: デフォルトの名無しさん [sage] 2023/03/07(火) 19:20:35.55 ID:UPk4pcGD 自分でexe作るよろし http://mevius.5ch.net/test/read.cgi/tech/1663153441/217
218: デフォルトの名無しさん [sage] 2023/03/07(火) 19:39:11.17 ID:trxvq/2q 前月の同日以前にしたら http://mevius.5ch.net/test/read.cgi/tech/1663153441/218
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
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 573 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.017s