【.cmd】 バッチファイルスクリプト %15 【.bat】 (820レス)
上下前次1-新
316: デフォルトの名無しさん [sage] 2023/06/10(土) 17:59:46.69 ID:Yvl44ooC(1) AAS
>>313313(2): デフォルトの名無しさん [sage] 2023/06/10(土) 10:54:45.64 ID:DPE/PSj9(1) AAS
>>312
固定IPならレジストリに保存されてるけど、抽出がめんどくさいですね。
HKLM\system\CurrentControlSet\control\network 配下から(イーサネットとか)インターフェース名のGUIDを拾って
HKLM\system\CurrentControlSet\services\Tcpip\Parameters\Interfaces 配下でGUID検索する
GUID検索出てくるともうpowershellでちゃんとやった方がええな
うまくすると数行で書けるし
317: デフォルトの名無しさん [] 2023/06/11(日) 00:20:40.75 ID:8nVmCa0A(1) AAS
>>313
312です。ご教示いただきありがとうございます。
レジストリを確認すると確かにGUIDに応じて固定IPが設定されているのを確認できました。
しかし初心者過ぎてどうすれば値を引っ張ってこれる文になるのか分かりません。
もし可能であれば”イーサネット”のIPを引いてこれる文を教えていただけませんでしょうか。
スレ違い、勉強不足で申し訳ありません。よろしくお願いいたします。
318: デフォルトの名無しさん [sage] 2023/06/11(日) 01:18:07.90 ID:ficsZH/3(1) AAS
"イーサネット"もOSで別のネットワークアダプタとして認識されると末尾に番号が付くから決め打ちは危険かも
319: デフォルトの名無しさん [sage] 2023/06/12(月) 07:36:14.80 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"
出力
Name REG_SZ イーサネット
DhcpSubnetMask REG_SZ 255.255.255.0
320(2): デフォルトの名無しさん [sage] 2023/06/13(火) 10:09:20.96 ID:RNzu8ICZ(1/5) AAS
ググっても書式バラバラだわ実行したらエラーメッセージ出るわ、もうわからん助けて・・・。
やりたいこと:ファイル名ごとに渡すプログラムを変えたい。
わからないこと:
if 変数==内容(分岐処理)でいいのか、if 変数==内容 分岐処理なのかサイトによってバラバラだし
どっちにしてもelseなんて定義されてねーよばーかって出てしまう。
条件分岐の書式を教えてください。
参考にしたサイトの1つ:www.javadrive.jp/command/bat/index8.html
希望する処理内容:
処理用フォルダを丸ごとBatファイルにSendto
ファイル名にcoが含まれるJPG、Webp、PNGは、cov.exeに投げる
ファイル名にautoが含まれるJPG、Webp、PNGは、auro.exeに投げる
ファイル名にrecが含まれるJPG、Webp、PNGは、rec.exeに投げる
今書いてる内容:これでelse?は?と言われる
画像リンク
321: デフォルトの名無しさん [sage] 2023/06/13(火) 10:11:36.00 ID:RNzu8ICZ(2/5) AAS
まちがえた、こっち
画像リンク
322: デフォルトの名無しさん [sage] 2023/06/13(火) 10:14:16.97 ID:sYfPkaoR(1) AAS
C++でランチャー作るほうが楽そう
323: デフォルトの名無しさん [sage] 2023/06/13(火) 10:19:37.96 ID:v41Gwse2(1/2) AAS
>>320
画像が見えないけど
多分、if文が終了しててelseが単独で出てくるのでエラーになってるんだと思う
下のように書けば問題ないはず
if 変数==文字列 (
処理群
) else (
処理群
)
if 変数==文字列 処理 else 処理
if 変数==文字列 処理 else (
処理群
)
こういうのはエラーになる
if 変数==文字列 (処理)
else (命令)
324: デフォルトの名無しさん [sage] 2023/06/13(火) 10:23:02.74 ID:xwoVSiEY(1/2) AAS
見えんけどbatの分岐はgoto使え
325: 320 [sage] 2023/06/13(火) 10:32:32.52 ID:RNzu8ICZ(3/5) AAS
ごめんー(::)
画像リンク
GOTOまぜちゃってるせいかな・・・
(これも実は初めて知った処理だったりする・・・
326: デフォルトの名無しさん [sage] 2023/06/13(火) 10:36:13.21 ID:RNzu8ICZ(4/5) AAS
書式いろいろあるんですね・・・
Perl風にelsifって書いてみたりしました(苦笑)
>if 変数==文字列 処理 else 処理
>if 変数==文字列 処理 else (
>処理群
>)
処理が1行で終わる場合は上、複数行にわたるなら下という理解でいいですか?
327(1): デフォルトの名無しさん [sage] 2023/06/13(火) 10:52:25.04 ID:xwoVSiEY(2/2) AAS
素人に()を使いこなすのは無理
if で * なんか使えるわけね~だろ
もっと高級な言語で作ってから出直せ
328(2): デフォルトの名無しさん [sage] 2023/06/13(火) 11:10:48.21 ID:RNzu8ICZ(5/5) AAS
>>327
そうなんですねorz
その辺ググっても取っ散らかってて情報が・・・なんかもう・・・ごめん
Batファイルはファイルの移動・コピー・フォルダ一括作成・formatくらいしか使ったことなくてねorz
エクスプローラでファイル名検索→複数のBatファイルとかやってるのすら面倒になったところなんだが
堪能に使えるプログラム言語はないのでもうしょうがないかなorz
329(3): デフォルトの名無しさん [sage] 2023/06/13(火) 11:28:39.90 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" ~
if "%fname:~0,2%" equ "au" "c:\auro.exe" ~
timeout 1
goto :loop
又は
if "%fname:ac=%" neq "%fname%" "c:\cov.exe" ~
330(1): デフォルトの名無しさん [sage] 2023/06/13(火) 13:37:35.35 ID:lkLOH6hL(1/3) AAS
素直にif文書くとこんなん。※インデントは全角スペース
:loop_begin
if "%~1" == "" goto loop_end
echo,%~nx1| findstr /ri /c:"co" >nul 2>nul
if not errorlevel 1 (
cov.exe "%~dpnx1"
) else (
echo,%~nx1| findstr /ri /c:"auto" >nul 2>nul
if not errorlevel 1 (
auto.exe "%~dpnx1"
) else (
echo,%~nx1| findstr /ri /c:"rec" >nul 2>nul
if not errorlevel 1 (
rec.exe "%~dpnx1"
)
)
)
shift & goto loop_begin
:loop_end
Perl知ってるなら大丈夫だと思うけど
「を含む」じゃなくて「で始まる」なら>>329か「^」を付け「/c:"^co"」とかに。
331(2): デフォルトの名無しさん [sage] 2023/06/13(火) 13:47:29.71 ID:lkLOH6hL(2/3) AAS
「&&」と「||」使うとこう。※記述量は減るがマイナー。
echo,%~nx1| findstr /ri /c:"co" >nul 2>nul && (
cov.exe "%~dpnx1"
) || (
echo,%~nx1| findstr /ri /c:"auto" >nul 2>nul && (
auto.exe "%~dpnx1"
) || (
echo,%~nx1| findstr /ri /c:"rec" >nul 2>nul && (
rec.exe "%~dpnx1"
)
)
)
フラグ使うとこう。
set result=
for %%A in (rec auto co) do (
echo,%~nx1| findstr /ri /c:"%%A" >nul 2>nul && set result=%%A
)
if "!result!" == "co" cov.exe "%%~dpnx1"
if "!result!" == "auto" auto.exe "%%~dpnx1"
if "!result!" == "rec" rec.exe "%%~dpnx1"
複数マッチする事がない、または複数マッチして複数実行してよいなら
バッチにディレクトリパス渡してこう。(gotoのループ無し)
for %%A in ("%~1\*co*") do (cov.exe "%%~A")
for %%A in ("%~1\*auto*") do (auto.exe "%%~A")
for %%A in ("%~1\*rec*") do (rec.exe "%%~A")
332(1): デフォルトの名無しさん [sage] 2023/06/13(火) 16:32:40.78 ID:3egukpPD(1) AAS
文字列に特定の文字列が含まれるかを見たいときに私なら
if not "%aaa%"=="%aaa:foo=%" (処理)
と、元の文字列の入った変数から特定の文字列を抜き取ったときに
イコールにならないことで含まれてることを判断してるんだけど
これってマイナーなのかな?
333(1): デフォルトの名無しさん [sage] 2023/06/13(火) 18:38:43.90 ID:lkLOH6hL(3/3) AAS
>>329もその方法だし、マイナーって事はないと思う。
if文本体だとANDとかORを表現し辛くて自分はfindstrにしがち。
今回だと拡張子の条件(jpg, jpeg, webp, png?)のいずれかにマッチしたら目的の処理、
またはいずれにもマッチしなかったらgoto next_loop、みたいな場合に楽。
334: デフォルトの名無しさん [sage] 2023/06/13(火) 19:02:49.89 ID:/Xa1+9fb(1) AAS
>>331
「&&」と「||」ってそういう書き方出来るんだ知らなかった
335: 328 [sage] 2023/06/14(水) 00:17:35.54 ID:l4KAyHVD(1) AAS
>>329-333
いろんな書き方があるんですね・・・ありがとうございます。
(1)とか(2)があるとスルーされるので、また調べます。
感謝!
336: デフォルトの名無しさん [sage] 2023/06/14(水) 01:04:20.11 ID:8vZ7BVQu(1) AAS
PowerShell を使いな
漏れは、Ruby だけど
337: デフォルトの名無しさん [sage] 2023/06/15(木) 07:11:35.58 ID:VQiSmQhF(1) AAS
terapadなつい
テキストコピペでいいのになぜ画像
338(2): デフォルトの名無しさん [] 2023/06/29(木) 22:56:13.24 ID:2AoYQptZ(1/2) AAS
あるフォルダの中のファイルにたいして定期的にプログラムを実施したいのですが、前回実行したあと追加されたファイルに実施というロジックだとどのように実装するのがリーズナブルでしょうか?
339: デフォルトの名無しさん [sage] 2023/06/29(木) 23:31:28.60 ID:xErdDB4N(1) AAS
ぜんぜんわからん
まず質問をリーズナブルに書け
340(1): デフォルトの名無しさん [sage] 2023/06/29(木) 23:50:20.15 ID:v2Nfxu0l(1) AAS
>>338
プログラムを実行したファイルを削除する。
上下前次1-新書関写板覧索設栞歴
あと 480 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.020s