【.cmd】 バッチファイルスクリプト %15 【.bat】 (868レス)
1-

286
(1): 2023/05/10(水)02:46 ID:7WScgW4R(1/3) AAS
>>276
変数を`%%`で囲んで`set`コマンドで置換する場合、`%%`の前に`~`を付けるとダブルクォーテーションが除去されます

え、ホント?と思って やってみたら

バッチ パラメーターの置き換えで、パス演算子の次の使用法は無効です:
%~BatFileTag%

と出力されたんですが、できないですよね?

>>285
省1
287: 2023/05/10(水)03:43 ID:fIRqc6o3(1) AAS
>>266
Ruby なら、

require 'json'

# 改行を削除する。削除しなくても同じ結果
input_json_str = <<'JSON'.delete( "\n" )
[{"ID": 1,"Level": 50, "Status": {"idx":1}},
{"ID": 1,"Level": 100, "Status": {"idx":2}},
省14
288
(1): 2023/05/10(水)07:27 ID:7bNTa4KZ(1) AAS
>>286
エラー表示で 「CALL /?」または「FOR /?」 とあるだろ
それ見ると %~ の使い方がわかるよ
どちらにせよ全角の引用符は消えない

AIがまだポンコツだし、その翻訳もおかしいので
あまり参考にならない
289: 2023/05/10(水)17:07 ID:7WScgW4R(2/3) AAS
>>288
ありがとうございます、ヘルプを参照しました。

%~0 で 周りを囲んだダブルクォーテーションは除去できる、

%~BatFileTag% は 構文エラー、ですね。
290: 2023/05/10(水)19:56 ID:8YKnH4aX(1) AAS
for文の%%iみたいな変数に入れても%0とかと同じように操作できるよ。
いずれにしても全角ダブルクォーテーションは除去できないけど
291: 2023/05/10(水)23:36 ID:7WScgW4R(3/3) AAS
バッチスクリプトの引数参照(?)の展開を 通常の変数でも使いたい時ありますよね。
forを使えば、わざわざ関数に渡さなくていいってことですよね。覚えておきます。
292: 2023/05/14(日)01:53 ID:4Al5Gork(1) AAS
ばっちこーい!
293: 2023/05/21(日)15:26 ID:/zBPnU/J(1/2) AAS
Sendtoに置いたバッチがある。
ここに複数のファイルを送り、それぞれのパスをプログラムに送りたい。
送った複数のファイル、はどう表現すればいいのでしょうか。
@echo off
for %%F in (*.jpg) do call :sub "%%F"
goto :EOF
:sub
省3
294: 2023/05/21(日)15:31 ID:WLjUQB8s(1) AAS
shift /?
295
(1): 2023/05/21(日)16:33 ID:uxeKp44S(1) AAS
何したいか若干よくわからないけど、
hoge.exeに引数全部一気に与えたいなら%*と書くと全部与えられる。

そうじゃなくて、
hoge.exe %1
hoge.exe %2
...
とそれぞれを1つずつ与えたいなら
省1
296: 2023/05/21(日)17:33 ID:/zBPnU/J(2/2) AAS
>>295
ありがとう、それがわからなかった。

何がやりたいのかわからないのはたぶん echoとpauseのところですよね(^^;
もともとはググって見つけたフォトショ関係のバッチのコピペで、「複数ファイルできます!」って
書いてあるのに1つ送っても2つ送ってもそのファイルのフォルダ全部処理しちゃうので
様子見のために書き換えて、%%Fがおかしいんじゃ?とたどり着いて詰んだところでした。
297: 2023/05/21(日)18:06 ID:/vzELmbQ(1) AAS
*.jpg を %* でも良さそう?
298: 2023/05/29(月)17:17 ID:MDtfdjpW(1) AAS
head abc.txt はエラーになるが
head abc,txt >con とすると実行できた、なぜだろう?

head.exeは2003年のもの
299: 2023/05/30(火)09:18 ID:8/1/VW9e(1) AAS
環境もエラーメッセージも書いてくれてないしコマンドはtypoっぽいしでさっぱりだが
head.exeの標準入出力処理やらコンソール描画エリアサイズ取得やらに問題があるが
標準出力がリダイレクトされてることでその問題のある処理をスキップできてるとかじゃないの
300
(1): 2023/05/30(火)09:27 ID:bxkrR6Df(1) AAS
別のhead.exeを持ってくれば?
俺のPCに入ってた
msysの奴(2004/03/16)
Gitの奴(2017/02/14)
ではどっちもhead file名で表示される
301: 2023/05/30(火)09:59 ID:flkBlmPK(1) AAS
>>300
ありがとう
古すぎたんだ、取り替えよう
302: 2023/06/08(木)04:51 ID:qSJ8V+Su(1/3) AAS
初心者です
一桁のだけ出力されません
set m=1 と出すにはどうしたらいいでしょうか?
よろしくお願いいたします

echo off
set MEMO_OUT=memo.bat

echo set m=333>%MEMO_OUT%
省10
303: 2023/06/08(木)04:54 ID:qSJ8V+Su(2/3) AAS
こちらでした

----memo.batの結果-----
set m=333
set m=22
set m=
set メモ
------------------------
304: 2023/06/08(木)05:51 ID:/rH9ZSQw(1) AAS
set m=^1>>%MEMO_OUT%
set "m=1">>%MEMO_OUT%
305: 2023/06/08(木)07:04 ID:qSJ8V+Su(3/3) AAS
304様♪
echo set m=^1>>%MEMO_OUT% で無事に解決できました!
本当にありがとうございました(*- -)(*_ _)ペコリ
306: 2023/06/08(木)08:47 ID:vkPB32fx(1) AAS
echo 2>>hoge.txt
みたいな事したくてハマったの思い出した
307
(1): 2023/06/08(木)10:00 ID:OrtrngoT(1) AAS
自分は前置する事が多い。少数派みたいだけど。
> %MEMO_OUT% echo set m=333
>> %MEMO_OUT% echo set m=22
>> %MEMO_OUT% echo set m=1
>> %MEMO_OUT% echo set メモ
308: 2023/06/08(木)23:07 ID:5yq6DBkZ(1) AAS
(echo set m=1)>>%MEMO_OUT%
for %%i in ("m=333" "m=22" "m=1" "メモ") do echo set %%~i>>%MEMO_OUT%
309
(1): 2023/06/09(金)07:12 ID:XYYWFLgO(1) AAS
>>307
(´・∀・`)ヘー これは初見
利用の際の注意点は無いの?
310: 2023/06/09(金)14:04 ID:du40Kh/C(1) AAS
マイナーってこと以外の注意点はないと思う。
しいて言えばコマンドプロンプト上だと
プロンプトの「C:\>」とくっついて見づらくなるくらい。
311: 2023/06/09(金)14:10 ID:iiwkTFZp(1) AAS
今までこのスレか関連スレで何度かは出てきてはいるけどね
312
(1): 2023/06/10(土)00:40 ID:ZROvKvT1(1) AAS
バッチファイルでIPアドレスの変更をしようとしており、
変更前に現在設定されているアドレスを表示させたいです。
本来であればipconfigから抽出すれば良いのですが、ネットワーク接続されていない状況では表示されません。
netsh interface ipv4 show ipaddress "イーサネット"でIPアドレスが表示されることまでは分かったのですが、
その他とmanualで2種類表示されてしまい、manualのIPアドレスのみ抽出したいです。
また、サブネットマスクも表示させたいですが何か表示できるコマンドをご存じないでしょうか。

皆様のお力をお貸しいただきたいです。
313
(2): 2023/06/10(土)10:54 ID:DPE/PSj9(1) AAS
>>312
固定IPならレジストリに保存されてるけど、抽出がめんどくさいですね。
HKLM\system\CurrentControlSet\control\network 配下から(イーサネットとか)インターフェース名のGUIDを拾って
HKLM\system\CurrentControlSet\services\Tcpip\Parameters\Interfaces 配下でGUID検索する
314
(1): 2023/06/10(土)15:04 ID:FuIdwErj(1) AAS
>>309
The redirection can come anywhere on the line, so watch out for those spaces
外部リンク:devblogs.microsoft.com
315: 2023/06/10(土)16:12 ID:v3IkKBaD(1) AAS
>>314
勉強になりました
316: 2023/06/10(土)17:59 ID:Yvl44ooC(1) AAS
>>313
GUID検索出てくるともうpowershellでちゃんとやった方がええな
うまくすると数行で書けるし
317: 2023/06/11(日)00:20 ID:8nVmCa0A(1) AAS
>>313
312です。ご教示いただきありがとうございます。
レジストリを確認すると確かにGUIDに応じて固定IPが設定されているのを確認できました。
しかし初心者過ぎてどうすれば値を引っ張ってこれる文になるのか分かりません。
もし可能であれば”イーサネット”のIPを引いてこれる文を教えていただけませんでしょうか。
スレ違い、勉強不足で申し訳ありません。よろしくお願いいたします。
318: 2023/06/11(日)01:18 ID:ficsZH/3(1) AAS
"イーサネット"もOSで別のネットワークアダプタとして認識されると末尾に番号が付くから決め打ちは危険かも
319: 2023/06/12(月)07:36 ID:+mHefy5G(1) AAS
PowerShell で、

$guid = "{GUID-1 〜 XXX}"

$a = "HKLM\SYSTEM\CurrentControlSet\Control\Network\{GUID-2 〜 YYY}\"+ $guid +"\Connection";
$b = "HKLM\system\CurrentControlSet\services\Tcpip\Parameters\Interfaces\" + $guid

reg query $a /v "Name";
reg query $b /v "DhcpSubnetMask"

出力
省2
320
(2): 2023/06/13(火)10:09 ID:RNzu8ICZ(1/5) AAS
ググっても書式バラバラだわ実行したらエラーメッセージ出るわ、もうわからん助けて・・・。

やりたいこと:ファイル名ごとに渡すプログラムを変えたい。
わからないこと:
if 変数==内容(分岐処理)でいいのか、if 変数==内容 分岐処理なのかサイトによってバラバラだし
どっちにしてもelseなんて定義されてねーよばーかって出てしまう。
条件分岐の書式を教えてください。
参考にしたサイトの1つ:www.javadrive.jp/command/bat/index8.html
省7
321: 2023/06/13(火)10:11 ID:RNzu8ICZ(2/5) AAS
まちがえた、こっち
外部リンク:imepic.jp
322: 2023/06/13(火)10:14 ID:sYfPkaoR(1) AAS
C++でランチャー作るほうが楽そう
323: 2023/06/13(火)10:19 ID:v41Gwse2(1/2) AAS
>>320
画像が見えないけど
多分、if文が終了しててelseが単独で出てくるのでエラーになってるんだと思う
下のように書けば問題ないはず
if 変数==文字列 (
処理群
) else (
省9
324: 2023/06/13(火)10:23 ID:xwoVSiEY(1/2) AAS
見えんけどbatの分岐はgoto使え
325: 320 2023/06/13(火)10:32 ID:RNzu8ICZ(3/5) AAS
ごめんー(::)
外部リンク:imepic.jp

GOTOまぜちゃってるせいかな・・・
(これも実は初めて知った処理だったりする・・・
326: 2023/06/13(火)10:36 ID:RNzu8ICZ(4/5) AAS
書式いろいろあるんですね・・・
Perl風にelsifって書いてみたりしました(苦笑)
>if 変数==文字列 処理 else 処理
>if 変数==文字列 処理 else (
>処理群
>)
処理が1行で終わる場合は上、複数行にわたるなら下という理解でいいですか?
327
(1): 2023/06/13(火)10:52 ID:xwoVSiEY(2/2) AAS
素人に()を使いこなすのは無理
if で * なんか使えるわけね~だろ
もっと高級な言語で作ってから出直せ
328
(2): 2023/06/13(火)11:10 ID:RNzu8ICZ(5/5) AAS
>>327
そうなんですねorz
その辺ググっても取っ散らかってて情報が・・・なんかもう・・・ごめん
Batファイルはファイルの移動・コピー・フォルダ一括作成・formatくらいしか使ったことなくてねorz

エクスプローラでファイル名検索→複数のBatファイルとかやってるのすら面倒になったところなんだが
堪能に使えるプログラム言語はないのでもうしょうがないかなorz
329
(3): 2023/06/13(火)11:28 ID:v41Gwse2(2/2) AAS
>>328
こんな感じでいいのでは?
:loop
set fname=%~1
shift
if not defined fname goto :eof
if "%fname:~0,2%" equ "ac" "c:\cov.exe" ~
省5
330
(1): 2023/06/13(火)13:37 ID:lkLOH6hL(1/3) AAS
AA省
331
(2): 2023/06/13(火)13:47 ID:lkLOH6hL(2/3) AAS
AA省
332
(1): 2023/06/13(火)16:32 ID:3egukpPD(1) AAS
文字列に特定の文字列が含まれるかを見たいときに私なら

if not "%aaa%"=="%aaa:foo=%" (処理)

と、元の文字列の入った変数から特定の文字列を抜き取ったときに
イコールにならないことで含まれてることを判断してるんだけど
これってマイナーなのかな?
333
(1): 2023/06/13(火)18:38 ID:lkLOH6hL(3/3) AAS
>>329もその方法だし、マイナーって事はないと思う。

if文本体だとANDとかORを表現し辛くて自分はfindstrにしがち。
今回だと拡張子の条件(jpg, jpeg, webp, png?)のいずれかにマッチしたら目的の処理、
またはいずれにもマッチしなかったらgoto next_loop、みたいな場合に楽。
334: 2023/06/13(火)19:02 ID:/Xa1+9fb(1) AAS
>>331
「&&」と「||」ってそういう書き方出来るんだ知らなかった
335: 328 2023/06/14(水)00:17 ID:l4KAyHVD(1) AAS
>>329-333

いろんな書き方があるんですね・・・ありがとうございます。
(1)とか(2)があるとスルーされるので、また調べます。
感謝!
336: 2023/06/14(水)01:04 ID:8vZ7BVQu(1) AAS
PowerShell を使いな

漏れは、Ruby だけど
337: 2023/06/15(木)07:11 ID:VQiSmQhF(1) AAS
terapadなつい
テキストコピペでいいのになぜ画像
338
(2): 2023/06/29(木)22:56 ID:2AoYQptZ(1/2) AAS
あるフォルダの中のファイルにたいして定期的にプログラムを実施したいのですが、前回実行したあと追加されたファイルに実施というロジックだとどのように実装するのがリーズナブルでしょうか?
339: 2023/06/29(木)23:31 ID:xErdDB4N(1) AAS
ぜんぜんわからん
まず質問をリーズナブルに書け
340
(1): 2023/06/29(木)23:50 ID:v2Nfxu0l(1) AAS
>>338
プログラムを実行したファイルを削除する。
341
(1): 2023/06/29(木)23:59 ID:2AoYQptZ(2/2) AAS
>>340
実行エラーした場合の対応が複雑になりそうで
342
(1): 2023/06/29(木)23:59 ID:8Orz0VrB(1) AAS
>>338
月のはじめに自分で削除
343: 2023/06/30(金)00:04 ID:0Iq5JqfB(1/2) AAS
>>342
1時間間隔なので
344: 2023/06/30(金)00:26 ID:5iDE7+iq(1) AAS
>>341
なんで?
345: 2023/06/30(金)00:35 ID:ow+yGKXV(1) AAS
ファイルの総数によってもコードが変わってくるからいくつくらいのファイルを触りたいのか教えてくれ
346: 2023/06/30(金)07:06 ID:y1MImIiE(1) AAS
誰かが勝手にタイムスタンプをいじったりしないって前提だけど
前回の最新タイムスタンプか、そのファイル名自体をどこかに保存しておいて
それより新しいファイルだったら処理
347: 2023/06/30(金)09:08 ID:pv7EwXK7(1/2) AAS
「追加されたファイル」ってなあに?
余所にあった古いファイルをコピーしたら
更新日時は古いままだけど
348
(1): 2023/06/30(金)10:28 ID:u+TfOZmJ(1) AAS
実行済のファイルは別フォルダに移動が楽だろ
349
(1): 2023/06/30(金)12:14 ID:0Iq5JqfB(2/2) AAS
>>348
ですよね。
このフォルダのファイルからデータ取ってる人もいて
調整が必要で
350: 2023/06/30(金)14:03 ID:pv7EwXK7(2/2) AAS
処理後にarchive属性をオフにしたら?
351: 2023/06/30(金)15:56 ID:YeFfrwhl(1) AAS
現れたなら聞かれた質問にくらい答えろよ
352: 2023/07/01(土)00:26 ID:xI+Y6sFQ(1) AAS
>>349
後だし情報
353: 2023/07/01(土)05:09 ID:nMEzWNF9(1) AAS
タイムスタンプを記録しておく

初回は1970年以後で、年月日時分秒_1 以前のファイルを処理する。
次回は年月日時分秒_1 以後で、年月日時分秒_2 以前のファイルを処理する
354: 2023/07/01(土)09:52 ID:UDkRE5jB(1) AAS
追加ファイルの性質でアトリブートもタイムスタンプも使えるかどうかわからん
質問してる人がいるが回答が無いので
355: 2023/07/04(火)17:06 ID:LIey+Zab(1/5) AAS
作ってみました。行数ギリギリです。
356: 2023/07/04(火)17:08 ID:LIey+Zab(2/5) AAS
@echo off
setlocal enabledelayedexpansion
set update=update.txt
set temp=temp.txt
set ignore=%update% %temp% %~nx0
set /A num=last=0
if exist %update% (
省25
357: 2023/07/04(火)17:38 ID:LIey+Zab(3/5) AAS
ファイルのタイムスタンプが前回更新日時より後かどうかのみ見ています。
もしも、分まで同じであれば更新しません。
前回更新日時と現在日時が分まで同じなら、1分進むまで待ちます。
なんとなく、同じ日時が更新記録に残るというのが気持ち悪いからです。
358: 2023/07/04(火)20:16 ID:dJR+6uCy(1) AAS
お疲れ
359: 2023/07/04(火)21:21 ID:+24T6cXg(1/2) AAS
ファイルの取り扱いにもよるけど
タイムスタンプでの管理はあまりよくないと思う
俺は結構ちょこちょこいじっちゃうのでタイムスタンプでは新旧の区別がつかなくなることが多い
360: 2023/07/04(火)21:30 ID:+24T6cXg(2/2) AAS
あとtmp,temp環境変数の書き換え
とくにフォルダとして使ってるものをファイル名にするのは危険
cmdの世界ではtmpがダメだがtempも使わないほうが良い
361: 2023/07/04(火)21:31 ID:9emtMuJF(1) AAS
リーズナブルな実装とは何だったのか
362: 2023/07/04(火)23:34 ID:LIey+Zab(4/5) AAS
temp の件は setlocal を使っているとはいえ、確かにタブーみたいなので変更しました。
タイムスタンプの件は、後でいじったファイルに対して再度作業を実行するかどうかの問題ですね。
そこら辺は、質問者が条件を書いてないので不明ですが、私はいじったファイルについても再度実行
するんじゃないかなと思ったので(それに簡単なので)そうしました。
1度実行したファイルには2度と実行しないのなら、終わったファイルはリネーム(例えば頭に _ を付加)
するとかして除外するか、終わったファイルリストを書き出してそれをチェックするとかですかね。
他のフォルダへ移動するのが最もいいと思うけど、なんだか都合が悪いみたいなので。
363: 2023/07/04(火)23:36 ID:LIey+Zab(5/5) AAS
@echo off
setlocal enabledelayedexpansion
set update=update.txt
set ichiji=temp.txt
set ignore=%update% %ichiji% %~nx0
set /A num=last=0
if exist %update% (
省25
364: 2023/07/05(水)06:45 ID:Ig34wRo0(1/3) AAS
time /t だと 06:00 なのに echo %time% だと 6:00:00.00 になる。
なんで、%time% だと頭の 0 がスペースになるんだよ。
おかげで余計なバグができちゃったじゃないか。
というわけで、バグ取りました。って誰も見てないか・・・。
365: 2023/07/05(水)06:55 ID:Ig34wRo0(2/3) AAS
@echo off
setlocal enabledelayedexpansion
set dispskip=0
set update=update.txt
set ichiji=temp.txt
set ignore=%update% %ichiji% %~nx0
set /A num=last=0
省25
366: 2023/07/05(水)12:49 ID:Ig34wRo0(3/3) AAS
よく見ると ! ではさむのを忘れとるじゃないか。

if "!line:~,16!"=="!date! !time:~,5!" if sec gtr 2 echo 更新が早すぎます !sec! 秒お待ちください

これは正しくはこうですね。(2秒以下の場合でも表示されていただけ)

if "!line:~,16!"=="!date! !time:~,5!" if !sec! gtr 2 echo 更新が早すぎます !sec! 秒お待ちください
1-
あと 502 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.031s