拡張子が .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/
探検
【.cmd】 バッチファイルスクリプト %15 【.bat】
2022/09/14(水) 20:04:01.36ID:XL8H98jz
257デフォルトの名無しさん
2023/04/27(木) 01:12:28.56ID:RXLaISm2 ^^
258デフォルトの名無しさん
2023/04/28(金) 00:51:43.20ID:aBUvFTO3259デフォルトの名無しさん
2023/05/05(金) 12:47:19.73ID:Tmh5Tg58 バッチファイルをvbsに移植してってAIに投げたらやってくれたんでPythonも頼んだらこっちも成功
妙な制限から卒業できるぞ
妙な制限から卒業できるぞ
260デフォルトの名無しさん
2023/05/05(金) 13:40:50.07ID:Aaus9EG8 c#がいいんじゃないか
pythonは入れてない人が殆どだろうし、c#ならwindows全員入ってる
まあ一旦コンパイルしないといけないけど
pythonは入れてない人が殆どだろうし、c#ならwindows全員入ってる
まあ一旦コンパイルしないといけないけど
261デフォルトの名無しさん
2023/05/05(金) 20:08:22.78ID:cXUEGYUP だったらC#はpowershellからコンパイルなしで使えるからpowershellがいいんじゃないか
実際powershellとC#ごっちゃにして使ってるぞ
実際powershellとC#ごっちゃにして使ってるぞ
262デフォルトの名無しさん
2023/05/05(金) 20:13:58.35ID:jijjo6rD powershellはダブルクリックで動かんから個人ユーザーには向かない
263デフォルトの名無しさん
2023/05/05(金) 21:08:13.64ID:oeszHJgX いやPowershellはexe化できるからダブルクリック起動も余裕だろ
264デフォルトの名無しさん
2023/05/05(金) 21:25:45.96ID:Aaus9EG8 powershellはイニシャルコストが高いんだよな
PC起動後初回起動で相当待たされる
よく使う人にはいいんだろうが、1ヶ月に数回とかだと苦痛なんだよ
PC起動後初回起動で相当待たされる
よく使う人にはいいんだろうが、1ヶ月に数回とかだと苦痛なんだよ
265デフォルトの名無しさん
2023/05/05(金) 23:33:04.65ID:VDYHFDsH 昔はVBランタイムや
.NET Frameworkも起動遅かったよなー
.NET Frameworkも起動遅かったよなー
266デフォルトの名無しさん
2023/05/06(土) 17:23:48.16ID: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を拾うみたいな条件で引っこ抜きたいんだけど上手くいかないので何かいい方法ないかなって探してます
何かいい方法ないでしょうか
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を拾うみたいな条件で引っこ抜きたいんだけど上手くいかないので何かいい方法ないかなって探してます
何かいい方法ないでしょうか
267デフォルトの名無しさん
2023/05/06(土) 18:44:39.95ID:ugbjGoYF step1 50と100の両方を抜き出す
step2 複数あったらstep1に対して100を抜き出す
step2 複数あったらstep1に対して100を抜き出す
268デフォルトの名無しさん
2023/05/06(土) 18:48:10.77ID:ugbjGoYF step1 100を抜き出す
step2 無ければ50を抜き出す
step2 無ければ50を抜き出す
269デフォルトの名無しさん
2023/05/06(土) 18:58:59.94ID: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}}"
$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}}"
270デフォルトの名無しさん
2023/05/06(土) 19:22:29.47ID:l5Xh2UOq こっちのが短いし判りやすいか
$hash=@{}; $json | %{ if (!$hash.Contains($_.characterID) -or $_.Level -gt $hash[$_.characterID].Level) { $hash[$_.characterID] = $_ }}; $hash.Values
$hash=@{}; $json | %{ if (!$hash.Contains($_.characterID) -or $_.Level -gt $hash[$_.characterID].Level) { $hash[$_.characterID] = $_ }}; $hash.Values
271デフォルトの名無しさん
2023/05/06(土) 21:10:41.34ID:UyrtVAAx 機能的にはあるっぽいよ
jq "group_by(.characterID) | map(max_by(.Level))"
※動作未確認
jq "group_by(.characterID) | map(max_by(.Level))"
※動作未確認
272デフォルトの名無しさん
2023/05/06(土) 22:01:27.09ID: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?
って思って調べてるけど記述が一致する説明を見つけられていない
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?
って思って調べてるけど記述が一致する説明を見つけられていない
273デフォルトの名無しさん
2023/05/06(土) 22:02:29.33ID:gRoxw4m5274デフォルトの名無しさん
2023/05/07(日) 01:38:48.15ID: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"
そう。「集計プロパティ」とか「計算プロパティ」とかっていう構文。
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"
275デフォルトの名無しさん
2023/05/09(火) 02:15:55.11ID:ZvIGeNCt 変数の値に含まれる全角のダブルクォーテーションを
半角のダブルクォーテーションに置換するにはどうすればいいですか?
setによる置換では期待通りに動作しませんでした
set BatFileTag=”test1“
set "%BatFileTag:“="%"
set "%BatFileTag:”="%"
echo %BatFileTag%
set BatFileTag=”test2“
set %BatFileTag:“="%
set %BatFileTag:”="%
echo %BatFileTag%
半角のダブルクォーテーションに置換するにはどうすればいいですか?
setによる置換では期待通りに動作しませんでした
set BatFileTag=”test1“
set "%BatFileTag:“="%"
set "%BatFileTag:”="%"
echo %BatFileTag%
set BatFileTag=”test2“
set %BatFileTag:“="%
set %BatFileTag:”="%
echo %BatFileTag%
276デフォルトの名無しさん
2023/05/09(火) 05:44:06.79ID: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%^"
```
バッチファイルで変数の値に含まれる全角のダブルクォーテーションを半角のダブルクォーテーションに置換するには、以下のような方法があります。
- 変数を`%%`で囲んで`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%^"
```
277デフォルトの名無しさん
2023/05/09(火) 05:44:21.88ID: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.
これらの方法はどれも期待通りに動作しますか?😊
ソース: 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.
278デフォルトの名無しさん
2023/05/09(火) 05:55:08.97ID:uZ4E3DcQ いいえ。まだ問題があります。
サンプルのどこにも全角のダブルクォーテーションがでてきません
すみません、サンプルの全角のダブルクォーテーションは見えにくいかもしれませんが、実際にはあります。
コピーしてテキストエディタに貼り付けてみてください。
半角のダブルクォーテーションと比べると、全角のダブルクォーテーションは少し太くて長いです。😊
だそうだ
スマホだとわからんわ
サンプルのどこにも全角のダブルクォーテーションがでてきません
すみません、サンプルの全角のダブルクォーテーションは見えにくいかもしれませんが、実際にはあります。
コピーしてテキストエディタに貼り付けてみてください。
半角のダブルクォーテーションと比べると、全角のダブルクォーテーションは少し太くて長いです。😊
だそうだ
スマホだとわからんわ
279デフォルトの名無しさん
2023/05/09(火) 05:56:33.76ID:uZ4E3DcQ バッチの中身もオレはちゃんと読んでないんでBingが意図を正しく理解したかも確認してない
280デフォルトの名無しさん
2023/05/09(火) 05:59:48.56ID:uZ4E3DcQ281デフォルトの名無しさん
2023/05/09(火) 08:56:45.57ID:bGbmh2Wb そんな難問なのか?
set BatFileTag=“test1”
set BatFileTag
set BatFileTag=%BatFileTag:“="%
set BatFileTag=%BatFileTag:”="%
set BatFileTag
set BatFileTag=“test1”
set BatFileTag
set BatFileTag=%BatFileTag:“="%
set BatFileTag=%BatFileTag:”="%
set BatFileTag
282デフォルトの名無しさん
2023/05/09(火) 09:15:19.23ID:TEEc9Eeb >>275
変換結果を変数に格納してないだけじゃん
set BatFileTag=”test1“
set "BatFileTag=%BatFileTag:“="%"
set "BatFileTag=%BatFileTag:”="%"
echo %BatFileTag%
set BatFileTag=”test2“
set BatFileTag=%BatFileTag:“="%
set BatFileTag=%BatFileTag:”="%
echo %BatFileTag%
変換結果を変数に格納してないだけじゃん
set BatFileTag=”test1“
set "BatFileTag=%BatFileTag:“="%"
set "BatFileTag=%BatFileTag:”="%"
echo %BatFileTag%
set BatFileTag=”test2“
set BatFileTag=%BatFileTag:“="%
set BatFileTag=%BatFileTag:”="%
echo %BatFileTag%
283デフォルトの名無しさん
2023/05/09(火) 12:45:29.09ID:ZvIGeNCt >変換結果を変数に格納してないだけじゃん
おっしゃる通りでした、そのコードで期待通り動作しました。
ありがとうございました。
おっしゃる通りでした、そのコードで期待通り動作しました。
ありがとうございました。
284デフォルトの名無しさん
2023/05/09(火) 12:54:13.19ID:0Hn95uhF ケアレスミスやね
自分もよくある
自分もよくある
285デフォルトの名無しさん
2023/05/09(火) 15:10:57.87ID:cxHUCWoc 見覚えのある変数名だと思ったらDTV板の人か
286デフォルトの名無しさん
2023/05/10(水) 02:46:49.16ID:7WScgW4R287デフォルトの名無しさん
2023/05/10(水) 03:43:26.68ID: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}} ]
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}} ]
288デフォルトの名無しさん
2023/05/10(水) 07:27:54.84ID:7bNTa4KZ >>286
エラー表示で 「CALL /?」または「FOR /?」 とあるだろ
それ見ると %~ の使い方がわかるよ
どちらにせよ全角の引用符は消えない
AIがまだポンコツだし、その翻訳もおかしいので
あまり参考にならない
エラー表示で 「CALL /?」または「FOR /?」 とあるだろ
それ見ると %~ の使い方がわかるよ
どちらにせよ全角の引用符は消えない
AIがまだポンコツだし、その翻訳もおかしいので
あまり参考にならない
289デフォルトの名無しさん
2023/05/10(水) 17:07:25.20ID:7WScgW4R290デフォルトの名無しさん
2023/05/10(水) 19:56:46.59ID:8YKnH4aX for文の%%iみたいな変数に入れても%0とかと同じように操作できるよ。
いずれにしても全角ダブルクォーテーションは除去できないけど
いずれにしても全角ダブルクォーテーションは除去できないけど
291デフォルトの名無しさん
2023/05/10(水) 23:36:37.50ID:7WScgW4R バッチスクリプトの引数参照(?)の展開を 通常の変数でも使いたい時ありますよね。
forを使えば、わざわざ関数に渡さなくていいってことですよね。覚えておきます。
forを使えば、わざわざ関数に渡さなくていいってことですよね。覚えておきます。
292デフォルトの名無しさん
2023/05/14(日) 01:53:53.57ID:4Al5Gork ばっちこーい!
293デフォルトの名無しさん
2023/05/21(日) 15:26:18.55ID:/zBPnU/J Sendtoに置いたバッチがある。
ここに複数のファイルを送り、それぞれのパスをプログラムに送りたい。
送った複数のファイル、はどう表現すればいいのでしょうか。
@echo off
for %%F in (*.jpg) do call :sub "%%F"
goto :EOF
:sub
echo "C:\hoge.exe" "%~dpnx1"
goto :EOF
sub以下は様子見コード
ここに複数のファイルを送り、それぞれのパスをプログラムに送りたい。
送った複数のファイル、はどう表現すればいいのでしょうか。
@echo off
for %%F in (*.jpg) do call :sub "%%F"
goto :EOF
:sub
echo "C:\hoge.exe" "%~dpnx1"
goto :EOF
sub以下は様子見コード
294デフォルトの名無しさん
2023/05/21(日) 15:31:45.83ID:WLjUQB8s shift /?
295デフォルトの名無しさん
2023/05/21(日) 16:33:43.21ID:uxeKp44S 何したいか若干よくわからないけど、
hoge.exeに引数全部一気に与えたいなら%*と書くと全部与えられる。
そうじゃなくて、
hoge.exe %1
hoge.exe %2
...
とそれぞれを1つずつ与えたいなら
shiftを使ってずらして%1の中身が無くなるまでループさせる。
hoge.exeに引数全部一気に与えたいなら%*と書くと全部与えられる。
そうじゃなくて、
hoge.exe %1
hoge.exe %2
...
とそれぞれを1つずつ与えたいなら
shiftを使ってずらして%1の中身が無くなるまでループさせる。
296デフォルトの名無しさん
2023/05/21(日) 17:33:53.16ID:/zBPnU/J >>295
ありがとう、それがわからなかった。
何がやりたいのかわからないのはたぶん echoとpauseのところですよね(^^;
もともとはググって見つけたフォトショ関係のバッチのコピペで、「複数ファイルできます!」って
書いてあるのに1つ送っても2つ送ってもそのファイルのフォルダ全部処理しちゃうので
様子見のために書き換えて、%%Fがおかしいんじゃ?とたどり着いて詰んだところでした。
ありがとう、それがわからなかった。
何がやりたいのかわからないのはたぶん echoとpauseのところですよね(^^;
もともとはググって見つけたフォトショ関係のバッチのコピペで、「複数ファイルできます!」って
書いてあるのに1つ送っても2つ送ってもそのファイルのフォルダ全部処理しちゃうので
様子見のために書き換えて、%%Fがおかしいんじゃ?とたどり着いて詰んだところでした。
297デフォルトの名無しさん
2023/05/21(日) 18:06:23.90ID:/vzELmbQ *.jpg を %* でも良さそう?
298デフォルトの名無しさん
2023/05/29(月) 17:17:55.21ID:MDtfdjpW head abc.txt はエラーになるが
head abc,txt >con とすると実行できた、なぜだろう?
head.exeは2003年のもの
head abc,txt >con とすると実行できた、なぜだろう?
head.exeは2003年のもの
299デフォルトの名無しさん
2023/05/30(火) 09:18:57.94ID:8/1/VW9e 環境もエラーメッセージも書いてくれてないしコマンドはtypoっぽいしでさっぱりだが
head.exeの標準入出力処理やらコンソール描画エリアサイズ取得やらに問題があるが
標準出力がリダイレクトされてることでその問題のある処理をスキップできてるとかじゃないの
head.exeの標準入出力処理やらコンソール描画エリアサイズ取得やらに問題があるが
標準出力がリダイレクトされてることでその問題のある処理をスキップできてるとかじゃないの
300デフォルトの名無しさん
2023/05/30(火) 09:27:21.04ID:bxkrR6Df 別のhead.exeを持ってくれば?
俺のPCに入ってた
msysの奴(2004/03/16)
Gitの奴(2017/02/14)
ではどっちもhead file名で表示される
俺のPCに入ってた
msysの奴(2004/03/16)
Gitの奴(2017/02/14)
ではどっちもhead file名で表示される
301デフォルトの名無しさん
2023/05/30(火) 09:59:41.15ID:flkBlmPK302デフォルトの名無しさん
2023/06/08(木) 04:51:39.25ID:qSJ8V+Su 初心者です
一桁のだけ出力されません
set m=1 と出すにはどうしたらいいでしょうか?
よろしくお願いいたします
echo off
set MEMO_OUT=memo.bat
echo set m=333>%MEMO_OUT%
echo set m=22>>%MEMO_OUT%
echo set m=1>>%MEMO_OUT%
echo set メモ>>%MEMO_OUT%
pause
----sub.batの結果-----
set m=333
set m=22
set m=
set メモ
------------------------
一桁のだけ出力されません
set m=1 と出すにはどうしたらいいでしょうか?
よろしくお願いいたします
echo off
set MEMO_OUT=memo.bat
echo set m=333>%MEMO_OUT%
echo set m=22>>%MEMO_OUT%
echo set m=1>>%MEMO_OUT%
echo set メモ>>%MEMO_OUT%
pause
----sub.batの結果-----
set m=333
set m=22
set m=
set メモ
------------------------
303デフォルトの名無しさん
2023/06/08(木) 04:54:13.59ID:qSJ8V+Su こちらでした
----memo.batの結果-----
set m=333
set m=22
set m=
set メモ
------------------------
----memo.batの結果-----
set m=333
set m=22
set m=
set メモ
------------------------
304デフォルトの名無しさん
2023/06/08(木) 05:51:11.43ID:/rH9ZSQw set m=^1>>%MEMO_OUT%
set "m=1">>%MEMO_OUT%
set "m=1">>%MEMO_OUT%
305デフォルトの名無しさん
2023/06/08(木) 07:04:40.20ID:qSJ8V+Su 304様♪
echo set m=^1>>%MEMO_OUT% で無事に解決できました!
本当にありがとうございました(*- -)(*_ _)ペコリ
echo set m=^1>>%MEMO_OUT% で無事に解決できました!
本当にありがとうございました(*- -)(*_ _)ペコリ
306デフォルトの名無しさん
2023/06/08(木) 08:47:23.51ID:vkPB32fx echo 2>>hoge.txt
みたいな事したくてハマったの思い出した
みたいな事したくてハマったの思い出した
307デフォルトの名無しさん
2023/06/08(木) 10:00:57.29ID:OrtrngoT 自分は前置する事が多い。少数派みたいだけど。
> %MEMO_OUT% echo set m=333
>> %MEMO_OUT% echo set m=22
>> %MEMO_OUT% echo set m=1
>> %MEMO_OUT% echo set メモ
> %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:14.14ID:5yq6DBkZ (echo set m=1)>>%MEMO_OUT%
for %%i in ("m=333" "m=22" "m=1" "メモ") do echo set %%~i>>%MEMO_OUT%
for %%i in ("m=333" "m=22" "m=1" "メモ") do echo set %%~i>>%MEMO_OUT%
309デフォルトの名無しさん
2023/06/09(金) 07:12:36.29ID:XYYWFLgO310デフォルトの名無しさん
2023/06/09(金) 14:04:54.27ID:du40Kh/C マイナーってこと以外の注意点はないと思う。
しいて言えばコマンドプロンプト上だと
プロンプトの「C:\>」とくっついて見づらくなるくらい。
しいて言えばコマンドプロンプト上だと
プロンプトの「C:\>」とくっついて見づらくなるくらい。
311デフォルトの名無しさん
2023/06/09(金) 14:10:41.30ID:iiwkTFZp 今までこのスレか関連スレで何度かは出てきてはいるけどね
312デフォルトの名無しさん
2023/06/10(土) 00:40:56.87ID:ZROvKvT1 バッチファイルでIPアドレスの変更をしようとしており、
変更前に現在設定されているアドレスを表示させたいです。
本来であればipconfigから抽出すれば良いのですが、ネットワーク接続されていない状況では表示されません。
netsh interface ipv4 show ipaddress "イーサネット"でIPアドレスが表示されることまでは分かったのですが、
その他とmanualで2種類表示されてしまい、manualのIPアドレスのみ抽出したいです。
また、サブネットマスクも表示させたいですが何か表示できるコマンドをご存じないでしょうか。
皆様のお力をお貸しいただきたいです。
変更前に現在設定されているアドレスを表示させたいです。
本来であればipconfigから抽出すれば良いのですが、ネットワーク接続されていない状況では表示されません。
netsh interface ipv4 show ipaddress "イーサネット"でIPアドレスが表示されることまでは分かったのですが、
その他とmanualで2種類表示されてしまい、manualのIPアドレスのみ抽出したいです。
また、サブネットマスクも表示させたいですが何か表示できるコマンドをご存じないでしょうか。
皆様のお力をお貸しいただきたいです。
313デフォルトの名無しさん
2023/06/10(土) 10:54:45.64ID:DPE/PSj9 >>312
固定IPならレジストリに保存されてるけど、抽出がめんどくさいですね。
HKLM\system\CurrentControlSet\control\network 配下から(イーサネットとか)インターフェース名のGUIDを拾って
HKLM\system\CurrentControlSet\services\Tcpip\Parameters\Interfaces 配下でGUID検索する
固定IPならレジストリに保存されてるけど、抽出がめんどくさいですね。
HKLM\system\CurrentControlSet\control\network 配下から(イーサネットとか)インターフェース名のGUIDを拾って
HKLM\system\CurrentControlSet\services\Tcpip\Parameters\Interfaces 配下でGUID検索する
314デフォルトの名無しさん
2023/06/10(土) 15:04:03.48ID:FuIdwErj >>309
The redirection can come anywhere on the line, so watch out for those spaces
https://devblogs.microsoft.com/oldnewthing/20170731-00/?p=96715
The redirection can come anywhere on the line, so watch out for those spaces
https://devblogs.microsoft.com/oldnewthing/20170731-00/?p=96715
315デフォルトの名無しさん
2023/06/10(土) 16:12:52.95ID:v3IkKBaD >>314
勉強になりました
勉強になりました
316デフォルトの名無しさん
2023/06/10(土) 17:59:46.69ID:Yvl44ooC317デフォルトの名無しさん
2023/06/11(日) 00:20:40.75ID:8nVmCa0A >>313
312です。ご教示いただきありがとうございます。
レジストリを確認すると確かにGUIDに応じて固定IPが設定されているのを確認できました。
しかし初心者過ぎてどうすれば値を引っ張ってこれる文になるのか分かりません。
もし可能であれば”イーサネット”のIPを引いてこれる文を教えていただけませんでしょうか。
スレ違い、勉強不足で申し訳ありません。よろしくお願いいたします。
312です。ご教示いただきありがとうございます。
レジストリを確認すると確かにGUIDに応じて固定IPが設定されているのを確認できました。
しかし初心者過ぎてどうすれば値を引っ張ってこれる文になるのか分かりません。
もし可能であれば”イーサネット”のIPを引いてこれる文を教えていただけませんでしょうか。
スレ違い、勉強不足で申し訳ありません。よろしくお願いいたします。
318デフォルトの名無しさん
2023/06/11(日) 01:18:07.90ID:ficsZH/3 "イーサネット"もOSで別のネットワークアダプタとして認識されると末尾に番号が付くから決め打ちは危険かも
319デフォルトの名無しさん
2023/06/12(月) 07:36:14.80ID:+mHefy5G 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
$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デフォルトの名無しさん
2023/06/13(火) 10:09:20.96ID:RNzu8ICZ ググっても書式バラバラだわ実行したらエラーメッセージ出るわ、もうわからん助けて・・・。
やりたいこと:ファイル名ごとに渡すプログラムを変えたい。
わからないこと:
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?は?と言われる
https://imepic.jp/20230613/364730
やりたいこと:ファイル名ごとに渡すプログラムを変えたい。
わからないこと:
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?は?と言われる
https://imepic.jp/20230613/364730
321デフォルトの名無しさん
2023/06/13(火) 10:11:36.00ID:RNzu8ICZ まちがえた、こっち
https://imepic.jp/20230613/366750
https://imepic.jp/20230613/366750
322デフォルトの名無しさん
2023/06/13(火) 10:14:16.97ID:sYfPkaoR C++でランチャー作るほうが楽そう
323デフォルトの名無しさん
2023/06/13(火) 10:19:37.96ID:v41Gwse2 >>320
画像が見えないけど
多分、if文が終了しててelseが単独で出てくるのでエラーになってるんだと思う
下のように書けば問題ないはず
if 変数==文字列 (
処理群
) else (
処理群
)
if 変数==文字列 処理 else 処理
if 変数==文字列 処理 else (
処理群
)
こういうのはエラーになる
if 変数==文字列 (処理)
else (命令)
画像が見えないけど
多分、if文が終了しててelseが単独で出てくるのでエラーになってるんだと思う
下のように書けば問題ないはず
if 変数==文字列 (
処理群
) else (
処理群
)
if 変数==文字列 処理 else 処理
if 変数==文字列 処理 else (
処理群
)
こういうのはエラーになる
if 変数==文字列 (処理)
else (命令)
324デフォルトの名無しさん
2023/06/13(火) 10:23:02.74ID:xwoVSiEY 見えんけどbatの分岐はgoto使え
325320
2023/06/13(火) 10:32:32.52ID:RNzu8ICZ326デフォルトの名無しさん
2023/06/13(火) 10:36:13.21ID:RNzu8ICZ 書式いろいろあるんですね・・・
Perl風にelsifって書いてみたりしました(苦笑)
>if 変数==文字列 処理 else 処理
>if 変数==文字列 処理 else (
>処理群
>)
処理が1行で終わる場合は上、複数行にわたるなら下という理解でいいですか?
Perl風にelsifって書いてみたりしました(苦笑)
>if 変数==文字列 処理 else 処理
>if 変数==文字列 処理 else (
>処理群
>)
処理が1行で終わる場合は上、複数行にわたるなら下という理解でいいですか?
327デフォルトの名無しさん
2023/06/13(火) 10:52:25.04ID:xwoVSiEY 素人に()を使いこなすのは無理
if で * なんか使えるわけね~だろ
もっと高級な言語で作ってから出直せ
if で * なんか使えるわけね~だろ
もっと高級な言語で作ってから出直せ
328デフォルトの名無しさん
2023/06/13(火) 11:10:48.21ID:RNzu8ICZ >>327
そうなんですねorz
その辺ググっても取っ散らかってて情報が・・・なんかもう・・・ごめん
Batファイルはファイルの移動・コピー・フォルダ一括作成・formatくらいしか使ったことなくてねorz
エクスプローラでファイル名検索→複数のBatファイルとかやってるのすら面倒になったところなんだが
堪能に使えるプログラム言語はないのでもうしょうがないかなorz
そうなんですねorz
その辺ググっても取っ散らかってて情報が・・・なんかもう・・・ごめん
Batファイルはファイルの移動・コピー・フォルダ一括作成・formatくらいしか使ったことなくてねorz
エクスプローラでファイル名検索→複数のBatファイルとかやってるのすら面倒になったところなんだが
堪能に使えるプログラム言語はないのでもうしょうがないかなorz
329デフォルトの名無しさん
2023/06/13(火) 11:28:39.90ID:v41Gwse2 >>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" ~
こんな感じでいいのでは?
: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デフォルトの名無しさん
2023/06/13(火) 13:37:35.35ID:lkLOH6hL 素直に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"」とかに。
: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デフォルトの名無しさん
2023/06/13(火) 13:47:29.71ID:lkLOH6hL 「&&」と「||」使うとこう。※記述量は減るがマイナー。
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")
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デフォルトの名無しさん
2023/06/13(火) 16:32:40.78ID:3egukpPD 文字列に特定の文字列が含まれるかを見たいときに私なら
if not "%aaa%"=="%aaa:foo=%" (処理)
と、元の文字列の入った変数から特定の文字列を抜き取ったときに
イコールにならないことで含まれてることを判断してるんだけど
これってマイナーなのかな?
if not "%aaa%"=="%aaa:foo=%" (処理)
と、元の文字列の入った変数から特定の文字列を抜き取ったときに
イコールにならないことで含まれてることを判断してるんだけど
これってマイナーなのかな?
333デフォルトの名無しさん
2023/06/13(火) 18:38:43.90ID:lkLOH6hL >>329もその方法だし、マイナーって事はないと思う。
if文本体だとANDとかORを表現し辛くて自分はfindstrにしがち。
今回だと拡張子の条件(jpg, jpeg, webp, png?)のいずれかにマッチしたら目的の処理、
またはいずれにもマッチしなかったらgoto next_loop、みたいな場合に楽。
if文本体だとANDとかORを表現し辛くて自分はfindstrにしがち。
今回だと拡張子の条件(jpg, jpeg, webp, png?)のいずれかにマッチしたら目的の処理、
またはいずれにもマッチしなかったらgoto next_loop、みたいな場合に楽。
334デフォルトの名無しさん
2023/06/13(火) 19:02:49.89ID:/Xa1+9fb >>331
「&&」と「||」ってそういう書き方出来るんだ知らなかった
「&&」と「||」ってそういう書き方出来るんだ知らなかった
335328
2023/06/14(水) 00:17:35.54ID:l4KAyHVD336デフォルトの名無しさん
2023/06/14(水) 01:04:20.11ID:8vZ7BVQu PowerShell を使いな
漏れは、Ruby だけど
漏れは、Ruby だけど
337デフォルトの名無しさん
2023/06/15(木) 07:11:35.58ID:VQiSmQhF terapadなつい
テキストコピペでいいのになぜ画像
テキストコピペでいいのになぜ画像
338デフォルトの名無しさん
2023/06/29(木) 22:56:13.24ID:2AoYQptZ あるフォルダの中のファイルにたいして定期的にプログラムを実施したいのですが、前回実行したあと追加されたファイルに実施というロジックだとどのように実装するのがリーズナブルでしょうか?
339デフォルトの名無しさん
2023/06/29(木) 23:31:28.60ID:xErdDB4N ぜんぜんわからん
まず質問をリーズナブルに書け
まず質問をリーズナブルに書け
340デフォルトの名無しさん
2023/06/29(木) 23:50:20.15ID:v2Nfxu0l >>338
プログラムを実行したファイルを削除する。
プログラムを実行したファイルを削除する。
341デフォルトの名無しさん
2023/06/29(木) 23:59:37.76ID:2AoYQptZ >>340
実行エラーした場合の対応が複雑になりそうで
実行エラーした場合の対応が複雑になりそうで
342デフォルトの名無しさん
2023/06/29(木) 23:59:54.09ID:8Orz0VrB >>338
月のはじめに自分で削除
月のはじめに自分で削除
343デフォルトの名無しさん
2023/06/30(金) 00:04:29.96ID:0Iq5JqfB >>342
1時間間隔なので
1時間間隔なので
344デフォルトの名無しさん
2023/06/30(金) 00:26:27.50ID:5iDE7+iq >>341
なんで?
なんで?
345デフォルトの名無しさん
2023/06/30(金) 00:35:49.00ID:ow+yGKXV ファイルの総数によってもコードが変わってくるからいくつくらいのファイルを触りたいのか教えてくれ
346デフォルトの名無しさん
2023/06/30(金) 07:06:37.99ID:y1MImIiE 誰かが勝手にタイムスタンプをいじったりしないって前提だけど
前回の最新タイムスタンプか、そのファイル名自体をどこかに保存しておいて
それより新しいファイルだったら処理
前回の最新タイムスタンプか、そのファイル名自体をどこかに保存しておいて
それより新しいファイルだったら処理
347デフォルトの名無しさん
2023/06/30(金) 09:08:51.37ID:pv7EwXK7 「追加されたファイル」ってなあに?
余所にあった古いファイルをコピーしたら
更新日時は古いままだけど
余所にあった古いファイルをコピーしたら
更新日時は古いままだけど
348デフォルトの名無しさん
2023/06/30(金) 10:28:33.45ID:u+TfOZmJ 実行済のファイルは別フォルダに移動が楽だろ
349デフォルトの名無しさん
2023/06/30(金) 12:14:39.24ID:0Iq5JqfB350デフォルトの名無しさん
2023/06/30(金) 14:03:26.68ID:pv7EwXK7 処理後にarchive属性をオフにしたら?
351デフォルトの名無しさん
2023/06/30(金) 15:56:39.55ID:YeFfrwhl 現れたなら聞かれた質問にくらい答えろよ
352デフォルトの名無しさん
2023/07/01(土) 00:26:35.37ID:xI+Y6sFQ >>349
後だし情報
後だし情報
353デフォルトの名無しさん
2023/07/01(土) 05:09:14.98ID:nMEzWNF9 タイムスタンプを記録しておく
初回は1970年以後で、年月日時分秒_1 以前のファイルを処理する。
次回は年月日時分秒_1 以後で、年月日時分秒_2 以前のファイルを処理する
初回は1970年以後で、年月日時分秒_1 以前のファイルを処理する。
次回は年月日時分秒_1 以後で、年月日時分秒_2 以前のファイルを処理する
354デフォルトの名無しさん
2023/07/01(土) 09:52:48.59ID:UDkRE5jB 追加ファイルの性質でアトリブートもタイムスタンプも使えるかどうかわからん
質問してる人がいるが回答が無いので
質問してる人がいるが回答が無いので
355デフォルトの名無しさん
2023/07/04(火) 17:06:41.56ID:LIey+Zab 作ってみました。行数ギリギリです。
356デフォルトの名無しさん
2023/07/04(火) 17:08:44.07ID:LIey+Zab @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% (
sort /R %update% > %temp%
set /P line=< %temp%
echo 前回更新日時 !line!
if "!line:~,16!"=="%date% %time:~0,5%" (
echo 更新が早すぎます しばらくお待ちください
:loop
if "!line:~11,5!"=="%time:~,5%" goto loop
)
set last=!line:~0,4!!line:~5,2!!line:~8,2!!line:~11,2!.!line:~14,2!
) else echo 初回更新です
dir /A-D /OD | findstr /R "^20[0-9][0-9]" | findstr /V "%ignore%" > %temp%
for /F "delims=" %%f in (%temp%) do (
set line=%%f
set ftime=!line:~0,4!!line:~5,2!!line:~8,2!!line:~12,2!.!line:~15,2!
if !last! lss !ftime! (
set fname=!line:~36!
echo [処理中] !fname! (処理をこの後に入れる)
set /A num+=1
))
if !num! equ 0 (
echo 更新ファイルはありません
) else (
echo %date% %time:~0,5% >> %update%
echo !num! のファイルを更新し %update% に更新日時を追記しました
)
setlocal enabledelayedexpansion
set update=update.txt
set temp=temp.txt
set ignore=%update% %temp% %~nx0
set /A num=last=0
if exist %update% (
sort /R %update% > %temp%
set /P line=< %temp%
echo 前回更新日時 !line!
if "!line:~,16!"=="%date% %time:~0,5%" (
echo 更新が早すぎます しばらくお待ちください
:loop
if "!line:~11,5!"=="%time:~,5%" goto loop
)
set last=!line:~0,4!!line:~5,2!!line:~8,2!!line:~11,2!.!line:~14,2!
) else echo 初回更新です
dir /A-D /OD | findstr /R "^20[0-9][0-9]" | findstr /V "%ignore%" > %temp%
for /F "delims=" %%f in (%temp%) do (
set line=%%f
set ftime=!line:~0,4!!line:~5,2!!line:~8,2!!line:~12,2!.!line:~15,2!
if !last! lss !ftime! (
set fname=!line:~36!
echo [処理中] !fname! (処理をこの後に入れる)
set /A num+=1
))
if !num! equ 0 (
echo 更新ファイルはありません
) else (
echo %date% %time:~0,5% >> %update%
echo !num! のファイルを更新し %update% に更新日時を追記しました
)
レスを投稿する
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 東京株式市場 インバウンド関連株が下落 中国政府の渡航自粛要請で [バイト歴50年★]
- スーパーが開くまで約4時間何すりゃいいんだ?
- 🏡
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 【動画】陽キャ、パルクール失敗
- 高市さんに土下座してもらったら一発解決なのに何でやらないんだろ??
- 日経時間外、5万円割れ 垂直落下始まる [402859164]
