【.cmd】 バッチファイルスクリプト %15 【.bat】 (907レス)
【.cmd】 バッチファイルスクリプト %15 【.bat】 http://mevius.5ch.net/test/read.cgi/tech/1663153441/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
5: デフォルトの名無しさん [] 2022/09/16(金) 00:42:16.15 ID:9kvq1ahn >>4 ありがとうございます! 神! http://mevius.5ch.net/test/read.cgi/tech/1663153441/5
6: デフォルトの名無しさん [] 2022/09/25(日) 20:41:32.40 ID:0LVDTkG9 set /a hoge1=%random% set /a hoge2=%random% set /a hoge3=%hoge1%+%hoge2% echo %hoge3% hoge3のところには単に「+」と表示され、 echoのところにはなにも表示されず、 その次に「オペラントがありません」と表示されます。 これはなにが起こっているのでしょうか… http://mevius.5ch.net/test/read.cgi/tech/1663153441/6
7: デフォルトの名無しさん [sage] 2022/09/26(月) 00:15:07.76 ID:7oxCYWvG if とか for のブロックの中? https://otnx.jp/CMD/?%C1%B4%C8%CC/%B9%BD%CA%B8%B2%F2%C0%CF http://mevius.5ch.net/test/read.cgi/tech/1663153441/7
8: デフォルトの名無しさん [] 2022/09/26(月) 00:46:39.21 ID:ou4YDIZU >>7 御明察です!理由が分かって安心しました。ありがとうございます。 forループの中で、このような処理を書くことはできないのでしょうか。毎回ランダムで少し変えて実行する、という処理を書きたいのですが… http://mevius.5ch.net/test/read.cgi/tech/1663153441/8
9: デフォルトの名無しさん [sage] 2022/09/26(月) 01:01:52.99 ID:3mhNpNjH for文の展開で解釈が一回多く入るから1回目の解釈後も環境変数として残すようにする %%hoge%% → %hoge% → 環境変数hogeの中身に置換 上の方法はトリッキーなので正規には遅延環境変数展開を使う(setlocal /?) setlocal EnableDelayedExpansion http://mevius.5ch.net/test/read.cgi/tech/1663153441/9
10: デフォルトの名無しさん [] 2022/09/26(月) 01:47:37.41 ID:ou4YDIZU >>9 ありがとうございます!できました! setlocal enabledelayedexpansion forループの初め set /a hoge1=%random% set /a hoge2=%random% set /a hoge3=!hoge1!+!hoge2! echo !hoge3! forループの終わり という風にしたら、動きました。 デフォルトではforループ全体が一気に読み込まれるので、変数への代入が実行される前に変数の内容が確定してしまうという仕様なんですね。それを回避するために、!を付けて展開遅延変数を用いる、ということですね。 ただ、ランダムにしたはずなのに、毎回同じ値が表示されますね… 何故… http://mevius.5ch.net/test/read.cgi/tech/1663153441/10
11: デフォルトの名無しさん [sage] 2022/09/26(月) 01:54:43.87 ID:yGyQXERn %random% じゃなくて !random! http://mevius.5ch.net/test/read.cgi/tech/1663153441/11
12: デフォルトの名無しさん [sage] 2022/09/26(月) 05:19:01.77 ID:L5dyrqoL そういえば、181系って、完全に揃った編成ってあったんだろうか? 台車違いの編入車や、485系仕様の編入車・新製車とかで、 いつも凸凹でちぐはぐだったイメージしかない もし、153系の前面が165系の塗りになったら 足回りとか見慣れた目にはやっぱり違和感あるんだろうなぁ クハ164は塗装変更しないで正解だったと思うわ http://mevius.5ch.net/test/read.cgi/tech/1663153441/12
13: デフォルトの名無しさん [sage] 2022/09/26(月) 05:19:38.74 ID:L5dyrqoL 誤爆失礼! http://mevius.5ch.net/test/read.cgi/tech/1663153441/13
14: デフォルトの名無しさん [sage] 2022/09/26(月) 11:49:53.74 ID:7oxCYWvG >>10 set /a hoge1=!random!, hoge2=!random!, hoge3=hoge1+hoge2 set /a は , 区切りで複数の式を指定可 環境変数は展開せずとも計算可能。その場合存在しない変数名は0として扱われ、展開した場合(多くはエラーになる)とは違ってくるので意図した計算になっていない事に気付き難い事に注意が必要 random などの特殊環境変数は環境変数としては存在せず、展開時に代入されるので展開が必要 setlocal enabledelayedexpansion for /L %%i in (1,1,4) do ( set /a a=!random!, b=!random!, c=a+b echo !c! ) pause こんな風にも書ける set /a c=(a=!random!)+(b=!random!) echo !a! + !b! = !c! 「遅延環境変数」という名称はそういう変数が別にあるのかと紛らわしくて良く無いと思うわ 環境変数 特殊変数 標準展開、事前展開、%展開 (展開されてから構文解析) 遅延展開、!展開 (構文解析されてからコマンド実行直前に展開) 用いるなら「環境変数の遅延展開」だろう http://mevius.5ch.net/test/read.cgi/tech/1663153441/14
15: デフォルトの名無しさん [sage] 2022/09/26(月) 12:58:23.71 ID:3mhNpNjH 英語だと delayed expansion delayed variable expansion 説明文的には Enables the delayed environment variable expansion Setting EnabledDelayedExpansion will cause each variable to be expanded at execution time rather than at parse time http://mevius.5ch.net/test/read.cgi/tech/1663153441/15
16: デフォルトの名無しさん [sage] 2022/09/26(月) 17:38:32.28 ID:dNpEj5o9 set /a a=random は0なんやな 一般変数と処理が違うんだ http://mevius.5ch.net/test/read.cgi/tech/1663153441/16
17: デフォルトの名無しさん [] 2022/09/26(月) 21:36:40.64 ID:ou4YDIZU >>11 >>14 ありがとうございます。 うまく動きました! http://mevius.5ch.net/test/read.cgi/tech/1663153441/17
18: デフォルトの名無しさん [sage] 2022/09/28(水) 11:14:01.39 ID:RG22wEyx >>16 > 一般変数と処理が違うんだ 違わない set a= set random= set /a b=a, c=random echo %b%, %c%, %random% #set /a では環境変数として定義されていない文字列は0として扱われる set a=1 set random=1 set /a b=a, c=random echo %b%, %c%, %random% #特殊変数は環境変数として定義されると環境変数が優先され特殊変数としては機能しなくなる set random= echo %random% #環境変数を削除すれば元通り pause http://mevius.5ch.net/test/read.cgi/tech/1663153441/18
19: デフォルトの名無しさん [sage] 2022/09/28(水) 12:04:21.93 ID:Cg5haYXb >>16 set /a a=%random% http://mevius.5ch.net/test/read.cgi/tech/1663153441/19
20: デフォルトの名無しさん [sage] 2022/09/29(木) 13:35:46.81 ID:ezl+1hvw 確かに違わないんだけど、どう違わないのか勝手に補足。 set /?に基づくここでの用語定義: ・「環境変数」(一般変数) … 値が一旦決まれば勝手には値が変わらない普通の環境変数。Windowsの機能がベース。 ・「動的な環境変数」(dynamic environment variables)(特殊変数) …「RANDOM」「ERRORLEVEL」など。cmdの独自機能。 仕様仮定(私の認識): ・set /a での名前だけで値を参照できる機能は「環境変数」だけ対象としている。 ・cmdの構文解釈による「%〜%」で値を参照できる機能は 「環境変数」と「動的な環境変数」を対象としている。 以上を踏まえたうえで 「set /a a=random」の「random」は「動的な環境変数」ではなく「環境変数」であり、 『他の「環境変数」の扱い』と「違わない」。 「一般変数と処理が違う」のはcmdによる構文解釈の「%〜%」での扱い。 また、「set /a a=%random%」での「%random%」は まずcmdの構文解釈により「動的な環境変数」として「123」のように展開され 「set /a a=123」となり、setには「環境変数」すら使われていないように見える。 ※cmdの内部コマンドである「set」からは「動的な環境変数」も見えてもいいのにね。 同じく内部コマンドの「if」からは見えてるみたいだし。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/20
21: デフォルトの名無しさん [] 2022/10/05(水) 15:17:30.50 ID:NmGDxxah 質問です。 ファイルのフルパスを表示するときに、 このコマンド使っていますよ、という意味で rem %0 echo %0 と買いているんですが、remの方の変数まで展開されてしまいます。 展開させずに文字列のまま表示するにはどうしたらよいでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1663153441/21
22: デフォルトの名無しさん [sage] 2022/10/05(水) 15:28:26.09 ID:yuT90fin rem %%0 http://mevius.5ch.net/test/read.cgi/tech/1663153441/22
23: デフォルトの名無しさん [] 2022/10/05(水) 16:34:14.38 ID:NmGDxxah >>22 出来ました!ありがとうございます。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/23
24: デフォルトの名無しさん [] 2022/10/08(土) 17:33:40.37 ID:zk6uj/6h C:\test>"C:\test\app.exe" というコマンドを間違えて実行したらapp.exeが0バイトに書き変わったのですがなぜでしょうか http://mevius.5ch.net/test/read.cgi/tech/1663153441/24
25: デフォルトの名無しさん [sage] 2022/10/08(土) 17:43:53.04 ID:f2a8Snt9 空の標準出力をリダイレクトで書き込んでるからだろう http://mevius.5ch.net/test/read.cgi/tech/1663153441/25
26: デフォルトの名無しさん [sage] 2022/10/08(土) 17:48:05.02 ID:R/0NVeNc なぞなぞじゃね? http://mevius.5ch.net/test/read.cgi/tech/1663153441/26
27: デフォルトの名無しさん [sage] 2022/10/08(土) 18:00:30.98 ID:zk6uj/6h コマンドプロンプトからバッチファイルにコピペしたら間違えて作業フォルダが付いてしまって 何かのコマンドなのでしょうか http://mevius.5ch.net/test/read.cgi/tech/1663153441/27
28: デフォルトの名無しさん [sage] 2022/10/08(土) 18:59:40.31 ID:f2a8Snt9 オカルトかな? ん?お前のパソコン何かおかしくね? http://mevius.5ch.net/test/read.cgi/tech/1663153441/28
29: デフォルトの名無しさん [sage] 2022/10/08(土) 21:15:53.37 ID:4RiXxOsU >>27 日本語でOK http://mevius.5ch.net/test/read.cgi/tech/1663153441/29
30: デフォルトの名無しさん [sage] 2022/10/08(土) 21:20:11.87 ID:NCKRr8hU エラーになってもリダイレクトは実行されちゃうんだな バグとちゃうか http://mevius.5ch.net/test/read.cgi/tech/1663153441/30
31: デフォルトの名無しさん [sage] 2022/10/08(土) 21:31:19.08 ID:bRwGYufv プロンプトまでバッチにコピペするなよ http://mevius.5ch.net/test/read.cgi/tech/1663153441/31
32: デフォルトの名無しさん [sage] 2022/10/09(日) 11:18:46.47 ID:yk0ofCIK >>30 指定された実行対象ファイルがない、 というのは実行時エラーなので(構文エラーではない) そのエラーメッセージをファイルリダイレクトして記録できる事は有益。 なのでバグ(仕様バグ)ではないと思われる。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/32
33: デフォルトの名無しさん [sage] 2022/10/09(日) 12:38:18.26 ID:r7gKIzvL 一貫性のある動きだよな エラー出力は欲しいけど標準出力はリダイレクト自体をなかったことにしてくれというのは無理がある そもそもリダイレクト先がログファイルなら気にも留めないような話 びっくりする理由があるとしたらexeにリダイレクトしても容赦なく書き換えられるという点で、コマンドラインはそういう点で結構慈悲がない ある程度はパワーユーザー向けという位置付けなので気をつけるしかない http://mevius.5ch.net/test/read.cgi/tech/1663153441/33
34: デフォルトの名無しさん [sage] 2022/10/12(水) 04:44:03.67 ID:Jko2ebMR window-position異なる位置のバッチをそれぞれ作ってるのですが bat2個目を起動すると1個目の起動したバッチにつられてカスケード起動します 何か対処方法ありますでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1663153441/34
35: デフォルトの名無しさん [] 2022/10/13(木) 18:33:52.32 ID:Fb+ro4ZF UIから起動されたCMDからのバッチなのか判別する方法ありますか?LinuxでいうTERMみたいな http://mevius.5ch.net/test/read.cgi/tech/1663153441/35
36: デフォルトの名無しさん [sage] 2022/10/13(木) 20:39:40.77 ID:tHyHHwT5 うん 過去スレで全く同じ質問してる子いるから漁っておいで http://mevius.5ch.net/test/read.cgi/tech/1663153441/36
37: デフォルトの名無しさん [sage] 2022/10/30(日) 06:52:23.05 ID:i1fpLCEI zipファイルに書き込むコマンドはありますか? copy foo.txt bar.zip とやっても「bar.zipに上書きしますか?」になるだけなんですけど 上書きがしたいんじゃなくアーカイブしたいんです。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/37
38: デフォルトの名無しさん [sage] 2022/10/30(日) 08:16:49.21 ID:oF72FRjI 7za.exe http://mevius.5ch.net/test/read.cgi/tech/1663153441/38
39: デフォルトの名無しさん [sage] 2022/10/30(日) 17:16:25.85 ID:RObFZ+1A compressコマンドはcabだけだったかな? pwsh -c "gh compress-archive"参照 http://mevius.5ch.net/test/read.cgi/tech/1663153441/39
40: デフォルトの名無しさん [sage] 2022/10/30(日) 20:28:18.19 ID:WT6dub7d explorerで操作すると書き込めるからコマンドありそうな気がする http://mevius.5ch.net/test/read.cgi/tech/1663153441/40
41: デフォルトの名無しさん [sage] 2022/10/30(日) 20:49:57.93 ID:JhK1ASYS zipコマンドでググれ http://mevius.5ch.net/test/read.cgi/tech/1663153441/41
42: デフォルトの名無しさん [sage] 2022/10/31(月) 15:34:40.68 ID:aCuyX04T pwsh -c "Get-help -name compress-archive" http://mevius.5ch.net/test/read.cgi/tech/1663153441/42
43: デフォルトの名無しさん [sage] 2022/10/31(月) 22:51:09.43 ID:HZxZgtz6 >>40 Explorerと同じ圧縮処理は、ExplorerのCOMオブジェクト(Shell.Application)を操作する事でできる。 確か、正式に提供した機能ではないので動作は保証しない、非推奨、みたいな扱いだった気が。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/43
44: デフォルトの名無しさん [sage] 2022/11/02(水) 15:48:21.33 ID:ZBNaiNsJ 質問失礼します。 ファイル名の一部の文字列(例:4文字目から8文字目まで)を一括削除するバッチを作りたいのですが… [例]a1b2c3d4e5.m4a→a1b2e5.m4a 検索の結果、先頭4文字を削除するバッチ(下記)を見つけたので、アレンジしたいのですが、その方法がわからずにおります。 アレンジ方法がわかる方、もしくは別の方法でも構いませんので、教えて頂けないでしょうか? ------------------------ for %%i in (*) do ( if not "%%i"=="%~nx0" ( set vv=%%i call ren %%i %%vv:~4%% ) ) ------------------------ 参考になりそうなURLでも助かります。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/44
45: デフォルトの名無しさん [sage] 2022/11/02(水) 16:00:09.07 ID:ZBNaiNsJ 44>> スミマセン間違えました。2行目 [誤]例:4文字目から8文字目まで [正]例:5文字目から8文字目まで http://mevius.5ch.net/test/read.cgi/tech/1663153441/45
46: デフォルトの名無しさん [sage] 2022/11/03(木) 03:42:12.99 ID:lhbjAvOX rem ファイル名を変数に入れて set FILENAME=a1b2c3d4e5.m4a rem 4文字目から8文字目まで削除 set MODIFYNAME=%FILENAME:~0,4%%FILENAME:~8% rem リネーム ren %FILENAME% %MODIFYNAME% http://mevius.5ch.net/test/read.cgi/tech/1663153441/46
47: デフォルトの名無しさん [sage] 2022/11/03(木) 06:22:30.68 ID:7S7IyYLz @echo off :x set "a=%~n1" ren "%~1" "%a:~0,4%%a:~8%%~x1" shift if not "%~1"=="" goto x ファイル名やフォルダ名が英数字だけならこれでいけるんじゃね http://mevius.5ch.net/test/read.cgi/tech/1663153441/47
48: デフォルトの名無しさん [sage] 2022/11/03(木) 13:02:59.28 ID:yr3S2O5F >>45 > 5文字目から8文字目まで削除 set /? 1~4 %vv:~0,4% 9~ %vv:~8% > set vv=%%i > call ren %%i %%vv:~4%% set "vv=%%~ni" call ren "%%~i" "%%vv:~0,4%%%%vv:~8%%%%~xi" %%~ni %%~xi のnとかxは for /? なるべくcall使わない方が速いのでファイル名に !文字が無いなら setlocal enabledelayedexpansion して遅延展開使え 対象ファイル数が多くないとかで引数の文字数制限に掛からないのなら >>47 のやり方が入れ子にならず良い http://mevius.5ch.net/test/read.cgi/tech/1663153441/48
49: デフォルトの名無しさん [sage] 2022/11/03(木) 13:10:19.17 ID:P2O5CHdk 東京都、富山県、ネバダ州、東京都、東京都、雲南省、ネバダ州、東京都、みたいな数百行のfindの標準出力があって何種類の出力があるのかだけ欲しいんだけど何かスマートな方法ないですか http://mevius.5ch.net/test/read.cgi/tech/1663153441/49
50: デフォルトの名無しさん [sage] 2022/11/03(木) 14:00:45.43 ID:sS4Fs93N スマートな方法なんてバッチに無いから別のスクリプトあたれ バッチでやるなら以下みたいな感じに一意なものだけ書き出して最後に行数見るか書き出した回数を数えるか copy nul $tmp.txt for /f %%a in (findの結果とやら) do find "%%a" $tmp.txt >nul || >>$tmp.txt echo %%a for /f "delims=:" %%a in ('findstr /n "^" $tmp.txt') do set n=%%a echo %n% 新大阪と大阪みたいに項目名を含む別項目があるならfindstr /r /c:"^%%a$" http://mevius.5ch.net/test/read.cgi/tech/1663153441/50
51: デフォルトの名無しさん [sage] 2022/11/03(木) 15:21:55.26 ID:PVTx0HrP それほどスマートじゃないけどWSHを(batに埋め込んで)使う方法 (WSHには連想配列の要素数をカウントするものがないのでループで回してカウント) (powershellと使う方法がいいかもしれないがpowershellはイニシャルコストが大きいのでよく使う人向き) @if (0)==(0) echo off cscript //nologo /e:jscript "%~f0" < data.txt rem findstr "." data.txt|cscript //nologo /e:jscript "%~f0" goto :eof @end var table={}, data, count=0; while(!WScript.StdIn.AtEndOfStream) { data = WScript.StdIn.ReadLine(); if (data.length) { table[data] += 1; WScript.Echo(data); } } for (i in table) { count++; } WScript.Echo(count); http://mevius.5ch.net/test/read.cgi/tech/1663153441/51
52: デフォルトの名無しさん [sage] 2022/11/03(木) 15:28:23.28 ID:/STCGL2q 46様、47様、48様 >>44です。 早速のご回答&アドバイス、ありがとうございました。 どの方法でもうまくrenameでき、とても参考になりました。 ただ、for文に組込むと、1つ目のファイルだけ、 2回処理が実行されてしまいます。 例えば、以下のバッチ ------------------------------------------- for %%i in (*.m4a) do ( set "vv=%%~ni" call ren "%%~i" "%%vv:~0,4%%%%vv:~8%%%%~xi" ) ------------------------------------------- を実行すると、 a1234567890a.m4a→a123.m4a ←2回 b1234567890b.m4a→b123890b.m4a c1234567890c.m4a→c123890c.m4a となってしまいます。 これは、私のfor文の使用法に誤りがあると考えられ ますので、自力解決すべく調べているのですが… 参考になりそうなサイトなどご存知でしたら、教えて頂けませんでしょうか? 何度も申し訳ありません。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/52
53: デフォルトの名無しさん [sage] 2022/11/03(木) 15:30:10.92 ID:IcpXc6LC powershell -Command "('東京都','富山県','ネバダ州','東京都','東京都','雲南省','ネバダ州','東京都' | Sort-Object | Get-Unique ).Count" http://mevius.5ch.net/test/read.cgi/tech/1663153441/53
54: デフォルトの名無しさん [sage] 2022/11/03(木) 15:31:53.88 ID:IcpXc6LC findの標準出力ってことはこうだな powershell -Command "(find 引数 | Sort-Object | Get-Unique ).Count" http://mevius.5ch.net/test/read.cgi/tech/1663153441/54
55: デフォルトの名無しさん [sage] 2022/11/03(木) 15:38:59.81 ID:PVTx0HrP あ、+= 1には意味なかったな http://mevius.5ch.net/test/read.cgi/tech/1663153441/55
56: デフォルトの名無しさん [sage] 2022/11/03(木) 16:10:12.19 ID:7S7IyYLz >>52 だから for (*) do ren ~ はお勧めしない 同じファイルに複数回処理する可能性がある ren を move にして別のフォルダに送れ !文字がある時は for の内部で遅延展開設定、解除しろ http://mevius.5ch.net/test/read.cgi/tech/1663153441/56
57: デフォルトの名無しさん [sage] 2022/11/03(木) 16:37:27.42 ID:7S7IyYLz for /f "delims=" %%i in ('dir *') do (ren ~ でもいいかな http://mevius.5ch.net/test/read.cgi/tech/1663153441/57
58: デフォルトの名無しさん [sage] 2022/11/03(木) 16:40:46.92 ID:7S7IyYLz すまんdir/bだ http://mevius.5ch.net/test/read.cgi/tech/1663153441/58
59: デフォルトの名無しさん [sage] 2022/11/03(木) 17:36:43.52 ID:sJbSZrhN cmd には split | sort | uniq | wc みたいなコマンドはないの? http://mevius.5ch.net/test/read.cgi/tech/1663153441/59
60: デフォルトの名無しさん [sage] 2022/11/03(木) 17:41:34.26 ID:7S7IyYLz ない http://mevius.5ch.net/test/read.cgi/tech/1663153441/60
61: デフォルトの名無しさん [sage] 2022/11/03(木) 18:18:22.55 ID:P2O5CHdk 皆さんありがとうスマートっていうか単に速度の問題なのでどれが速いか競走させてみます http://mevius.5ch.net/test/read.cgi/tech/1663153441/61
62: デフォルトの名無しさん [sage] 2022/11/03(木) 18:56:34.58 ID:NbsIPyEs >>59 少なくとも標準では無いね まあ使いたいならwslに行くか同等の機能をPowerShellで書くとかかな http://mevius.5ch.net/test/read.cgi/tech/1663153441/62
63: デフォルトの名無しさん [sage] 2022/11/03(木) 23:17:13.75 ID:0ov2k6Uz >>49 PowerShellなりでやる内容だとは思うが、どうしてもバッチでやるなら 入力データ(findの結果)をソートして、データの変動を検知したらカウントアップ、でもできる。 ただし入力データに記号(メタキャラ)が含まれる場合はうまく動かない可能性あり。 setlocal EnableDelayedExpansion set Count=0 set PrevLine= for /f "delims=" %%A in ('find なんたら ^| sort') do ( if "%%A" neq "!PrevLine!" set /a Count+=1 set "PrevLine=%%A" ) echo,!Count! http://mevius.5ch.net/test/read.cgi/tech/1663153441/63
64: デフォルトの名無しさん [sage] 2022/11/12(土) 20:19:55.55 ID:/WV4ttu0 set /p で異体字セレクタ(IVS)を入力できない IMEパッドが作動しない いちいちメモ帳からコピペ入力するしかないのか 表示も化けてるし… http://mevius.5ch.net/test/read.cgi/tech/1663153441/64
65: デフォルトの名無しさん [sage] 2022/11/12(土) 20:44:49.08 ID:/WV4ttu0 IMEパッドはダメなので、文字コード+F5 でいけた http://mevius.5ch.net/test/read.cgi/tech/1663153441/65
66: デフォルトの名無しさん [sage] 2022/11/13(日) 19:33:26.85 ID:sU7z5EJX >>64 Windows Terminal IMEパッド可 異体字(IVS)表示可(対応フォントのみ) cmdの標準ターミナルは仕様が古いまま放置されている http://mevius.5ch.net/test/read.cgi/tech/1663153441/66
67: デフォルトの名無しさん [sage] 2022/11/17(木) 22:22:21.92 ID:k+rrgD4B conhostも放置されずに結構手がはいってる 𠮷とか🐕とかのサロゲートペアも表示されるようになったし エスケープシーケンスで画面のサイズが変えられるようになった > sigcheck c:\windows\system32\conhost.exe Sigcheck v2.71 - File version and signature viewer Copyright (C) 2004-2018 Mark Russinovich Sysinternals - www.sysinternals.com c:\windows\system32\conhost.exe: Verified: Signed Signing date: 7:59 2022/11/05 Publisher: Microsoft Windows Company: Microsoft Corporation Description: Console Window Host Product: Microsoftョ Windowsョ Operating System Prod version: 10.0.22621.675 File version: 10.0.22621.675 (WinBuild.160101.0800) MachineType: 64-bit http://mevius.5ch.net/test/read.cgi/tech/1663153441/67
68: デフォルトの名無しさん [sage] 2022/11/18(金) 07:02:24.39 ID:LiWOBYzs >>66 サンクス 入力時に文字化けするので確認できない echoで表示されるが文字の両側のスペースが気持ち悪い でも標準画面よりはマシかな。おれは使わないけど http://mevius.5ch.net/test/read.cgi/tech/1663153441/68
69: デフォルトの名無しさん [sage] 2022/11/21(月) 20:53:34.41 ID:+ccbL4tM カーソルの位置を知る方法はありますか? for /F %%E in ('cmd ^< nul /D /K prompt $E') do set esc=%%E set /P CPR=%esc%[6n だとenterキー待ちで止まります。enterを押せばCPRに結果が入りますが 押さずに結果を得る方法はないでしょうか。 あるいはまったく別の方法でカーソルの位置を知る方法はないでしょうか。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/69
70: デフォルトの名無しさん [sage] 2022/11/21(月) 21:55:41.71 ID:o6gng8CJ 手段の拘りなければこんなんとかで。 powershell -nop -c "[Console]::CursorTop; [Console]::WindowTop;" http://mevius.5ch.net/test/read.cgi/tech/1663153441/70
71: デフォルトの名無しさん [sage] 2022/11/22(火) 09:23:33.75 ID:IBEEH7ii 過去にも似たような話があったなあ 何かでenterキーの入力を省略したいって 結局、うまい方法が見つからない http://mevius.5ch.net/test/read.cgi/tech/1663153441/71
72: 69 [sage] 2022/11/22(火) 21:44:34.08 ID:CBUeGsgY なるほど情報ありがとう PowerShell なら [console]::CursorLeft と [console]::CursorTop で取得できるのを確認しました。 PowerShellを呼ぶか全部PowerShellで書くか悩ましい… http://mevius.5ch.net/test/read.cgi/tech/1663153441/72
73: デフォルトの名無しさん [sage] 2022/11/25(金) 01:48:24.17 ID:is72b8Mh コンソールの座標が必要になるってことはGUIを検討すべき時がきたんじゃないか コンソールの画面でいくらがんばっても大したことできんよ http://mevius.5ch.net/test/read.cgi/tech/1663153441/73
74: デフォルトの名無しさん [sage] 2022/11/25(金) 20:54:30.19 ID:YIxTypne そんなたいしたことじゃなくてね 画面に合わせた出力がしたくて行数を知りたかっただけ mode con は WindowsTerminal ではいいけど conhost ではうまくない PowerShellで得られる [console]::WinndowHeight が欲しいのに [console]::BufferHeight が返ってきてしまう それなら %esc%7%esc%[999;999H%esc%[6n%esc%8 みたいなエスケープシーケンスで カーソル位置を使って調べようかと思って で質問した後で気づいたけど 代替画面バッファーに切り替えて mode con すればいいのな まあ PowerShell 一発で取れるなら楽だしもういいかなって でも他の方法があるなら知りたい http://mevius.5ch.net/test/read.cgi/tech/1663153441/74
75: デフォルトの名無しさん [sage] 2022/11/27(日) 05:02:29.30 ID:IKV/PDeN powershellなんぞ使わずとも行数ごとき得る方法はあるぞ 昔はpowershell自体無かったんだからな まあ具体的には思い出せないんだがぐぐれば出てくるだろ http://mevius.5ch.net/test/read.cgi/tech/1663153441/75
76: デフォルトの名無しさん [sage] 2022/11/27(日) 11:26:11.98 ID:nWgXfjD8 いくらぐぐってもファイルの行数を調べるとか画面の行数を変更するしか見つからない… 行数ごときというならぜひ思い出して教えてください http://mevius.5ch.net/test/read.cgi/tech/1663153441/76
77: デフォルトの名無しさん [sage] 2022/11/27(日) 12:43:26.54 ID:WeJVO7HI powershell (get-host).ui.rawui.windowsize powershell (get-host).ui.rawui.windowsize.height powershell (get-host).ui.rawui.windowsize.width http://mevius.5ch.net/test/read.cgi/tech/1663153441/77
78: デフォルトの名無しさん [sage] 2022/11/27(日) 17:27:16.98 ID:fMz//05T mode か? http://mevius.5ch.net/test/read.cgi/tech/1663153441/78
79: デフォルトの名無しさん [sage] 2022/11/27(日) 18:49:52.00 ID:WeJVO7HI for /f "tokens=3" %%i in ('reg query HKCU\Console /f WindowSize^|findstr WindowSize') do set h=%%i set /a h=%h:~0,-4% echo %h% http://mevius.5ch.net/test/read.cgi/tech/1663153441/79
80: デフォルトの名無しさん [sage] 2022/11/27(日) 19:34:17.80 ID:fMz//05T Consoleにサブキーがいっぱいあるな http://mevius.5ch.net/test/read.cgi/tech/1663153441/80
81: デフォルトの名無しさん [sage] 2022/11/27(日) 21:48:39.87 ID:nWgXfjD8 PowerShellを使う方法もmodeを使う方法も >>74 で既出 それ以外の方法があったと >>75 は言ってるようなのだが… なお reg を使う >>79 は今のウインドウのサイズじゃないから失格かなあ http://mevius.5ch.net/test/read.cgi/tech/1663153441/81
82: デフォルトの名無しさん [sage] 2022/11/28(月) 00:00:04.17 ID:so4XQ+4A more で画面毎に止まってくれるが あれはどこから画面行数情報を得ているのだろう http://mevius.5ch.net/test/read.cgi/tech/1663153441/82
83: デフォルトの名無しさん [sage] 2022/11/28(月) 23:31:47.71 ID:YeZSlVdS PowerShell を使っていいなら for /F "tokens=2 delims=[;" %%L in ('pwsh -nop -c "[console]::Error.Write(\"`e7`e[999^;999H`e[6n`e8\"); [console]::Error.Flush(); do { $k = [console]::ReadKey().KeyChar; } until ($k -eq \"R\"); \"\""') do echo LINES: %%L Windows PowerShell だと `e が使えないからもう少しごちゃっとする http://mevius.5ch.net/test/read.cgi/tech/1663153441/83
84: デフォルトの名無しさん [sage] 2022/11/29(火) 22:16:00.02 ID:noJ3pHan ぐぐって出てこないならもうpowershell使うしかないんじゃね >>83お前こんな糞コード晒す前にちょっと考えろよ頼むよ白けるわ http://mevius.5ch.net/test/read.cgi/tech/1663153441/84
85: デフォルトの名無しさん [sage] 2022/11/29(火) 22:25:15.99 ID:WKccTgje ウインドウの行数を調べる方法まとめ mode(とcmd)を使う方法 for /F %%E in ('cmd ^< nul /D /K prompt $E') do ( set < nul /P =%%E[?1049h set LINES= for /F "tokens=2 delims=:" %%L in ('mode con') do ( if not defined LINES set /A LINES=%%L ) set < nul /P =%%E[?1049l ) PowerShellを使う方法 for /F %%L in ('pwsh -nop -c "[console]::WindowHeight"') do set LINES=%%L エスケープシーケンス(とPowerShell)で頑張る方法 for /F "tokens=2 delims=[;" %%L in ('pwsh -nop -c "[console]::Error.Write(\"`e7`e[999^;999H`e[6n`e8\"); [console]::Error.Flush(); do { $k = [console]::ReadKey().KeyChar; } until ($k -eq 'R')"') do set LINES=%%L http://mevius.5ch.net/test/read.cgi/tech/1663153441/85
86: デフォルトの名無しさん [sage] 2022/11/29(火) 23:27:39.60 ID:F0R68kvV エスケープシーケンスはwin10以前だとダメじゃなかったっけ ansi.sysがwin8.1までは組み込まれない http://mevius.5ch.net/test/read.cgi/tech/1663153441/86
87: デフォルトの名無しさん [sage] 2022/12/01(木) 15:35:07.57 ID:a9edrtS0 set d=%DATE:/=% とやった後、1日前の日付にしたいのですがうまい方法・コマンドないですか 20221201 -> 20221130 20221202 -> 20221201 20220101 -> 20211231 20200301 -> 20200229 うるう年と月末年末に気を付けてif文で分けるしかないのかなと思いますが case文ってコマンドプロンプトにないですよね http://mevius.5ch.net/test/read.cgi/tech/1663153441/87
88: デフォルトの名無しさん [sage] 2022/12/01(木) 15:58:56.25 ID:Z3Gzq7Gr gotoがある http://mevius.5ch.net/test/read.cgi/tech/1663153441/88
89: デフォルトの名無しさん [sage] 2022/12/01(木) 19:38:25.34 ID:gTSnhqIH 計算すれば出来るんだろうけど面倒くさいのでPowerShell使ってる http://mevius.5ch.net/test/read.cgi/tech/1663153441/89
90: デフォルトの名無しさん [sage] 2022/12/01(木) 21:59:03.06 ID:CyN7Asjt powershell -c "(get-date).adddays(-1).tostring('yyyyMMdd')" http://mevius.5ch.net/test/read.cgi/tech/1663153441/90
91: デフォルトの名無しさん [sage] 2022/12/01(木) 22:14:49.13 ID:M8gPga1Y もうここpowershellスレにしたら http://mevius.5ch.net/test/read.cgi/tech/1663153441/91
92: デフォルトの名無しさん [sage] 2022/12/01(木) 22:30:45.79 ID:CyN7Asjt 過去スレにBATがあったと思って探してみた 何故かそのスレは過去ログに保存されてないので別サイトの方を示しとく https://geolog.mydns.jp/www.geocities.co.jp/yggdrasil_leaf2000/log00/dos/win06.htm ここのレス番65あたり http://mevius.5ch.net/test/read.cgi/tech/1663153441/92
93: デフォルトの名無しさん [sage] 2022/12/02(金) 07:27:12.50 ID:elckNyGo >>87 set /a d=20221201 set /a f=10000,g=100,h=8869,i=69,j=278803 set /a "n=d-1,n-=!(n%%f-g)*h,c=n/f" set /a "a=j-!(c%%4)+!(c%%100)-!(c%%400)<<6" set /a "n-=!(n%%g)*(i+(a>>(n%%f/g)*2&3))" echo %n% http://mevius.5ch.net/test/read.cgi/tech/1663153441/93
94: デフォルトの名無しさん [sage] 2022/12/02(金) 21:24:55.56 ID:JHo2A9dA 日時の操作に関してはもう便利すぎてpowershellへ丸投げしたほうがいいな powershellというか.NETのDateTimeのメソッドではあるが >>93とか何してるか本当に合ってるのかわからんような事をするよりは http://mevius.5ch.net/test/read.cgi/tech/1663153441/94
95: デフォルトの名無しさん [sage] 2022/12/02(金) 22:23:50.58 ID:elckNyGo 確かにそうだな。計算できん奴はやめとけ http://mevius.5ch.net/test/read.cgi/tech/1663153441/95
96: デフォルトの名無しさん [sage] 2022/12/04(日) 15:45:51.56 ID:xdG8GXCM 変数1の値を変数2にsetするとエラーになります。 値は文字列で不定ですが、記号文字が原因のようです。 遅延展開ではありません。 うまい方法はないですか。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/96
97: デフォルトの名無しさん [sage] 2022/12/04(日) 20:44:29.33 ID:pNrDPWEq ダメな質問の見本になってるぞ 書ける範囲でいいから、再現性のある最低限のコードと エラーメッセージとその時の実際の変数値を書いてくれ http://mevius.5ch.net/test/read.cgi/tech/1663153441/97
98: デフォルトの名無しさん [sage] 2022/12/05(月) 19:02:53.29 ID:RxlUOQVH >>96 原因の記号文字は何? ()<>&|%!"^ とか? 引用符(")が含まれていない場合は set "変数2=%変数1%" 含まれている場合はキャレット(^)で全部エスケープ でもこれ「うまい方法」とは思えないけど set /p 変数1=変数1= set "変数2=" & set "CARET=^" setlocal enabledelayedexpansion :LOOP set 変数2=!変数2!!CARET!!変数1:~0,1! set 変数1=!変数1:~1! if defined 変数1 goto LOOP endlocal & set 変数2=%変数2% rem 結果を確認する set 変数1 set 変数2 http://mevius.5ch.net/test/read.cgi/tech/1663153441/98
99: デフォルトの名無しさん [sage] 2022/12/05(月) 23:44:59.81 ID:Xw9Qnajp 「変数1の値を変数2にset」という意味では良い方法だと思う。 でも変数間でコピーだけして終わりって事はまずないから あとは>>96が自分のコードにどう馴染ませて組み込んだりヒントにできるかだろうなぁ。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/99
100: デフォルトの名無しさん [sage] 2022/12/06(火) 10:31:46.97 ID:VnO+filq いやこれだめだろ 試した? http://mevius.5ch.net/test/read.cgi/tech/1663153441/100
101: デフォルトの名無しさん [sage] 2022/12/06(火) 11:36:48.90 ID:vjJKyhqV 続きはpowershellで http://mevius.5ch.net/test/read.cgi/tech/1663153441/101
102: デフォルトの名無しさん [sage] 2022/12/06(火) 22:47:20.75 ID:LWPkE6+S setlocal enabledelayedexpansion for /f "delims=" %%i in ("set var2=!var1!") do endlocal & %%i http://mevius.5ch.net/test/read.cgi/tech/1663153441/102
103: デフォルトの名無しさん [sage] 2022/12/07(水) 08:08:54.78 ID:6/SG3KPg >>100 不具合は無さそう >>102 これシンプルでいいね。エスケープ不要だし http://mevius.5ch.net/test/read.cgi/tech/1663153441/103
104: デフォルトの名無しさん [sage] 2022/12/07(水) 14:11:06.83 ID:CzrTyJD4 何でも答えてくれるChatGPTに質問して教えてもらう時代になるかも http://mevius.5ch.net/test/read.cgi/tech/1663153441/104
105: デフォルトの名無しさん [sage] 2022/12/17(土) 08:43:39.74 ID:P7hTh7GB %*を他の変数に入れる方法あります? http://mevius.5ch.net/test/read.cgi/tech/1663153441/105
106: デフォルトの名無しさん [sage] 2022/12/17(土) 13:02:14.02 ID:z3eWXHPR set http://mevius.5ch.net/test/read.cgi/tech/1663153441/106
107: デフォルトの名無しさん [sage] 2022/12/17(土) 13:56:37.78 ID:hGrODwcv >>97 http://mevius.5ch.net/test/read.cgi/tech/1663153441/107
108: デフォルトの名無しさん [sage] 2022/12/18(日) 11:04:55.68 ID:3jhv+1oP batch.cmd を batch.cmd echo ' ^& echo ^" ^& echo ! として実行した場合の %*を他の変数に入れる方法あります? http://mevius.5ch.net/test/read.cgi/tech/1663153441/108
109: デフォルトの名無しさん [sage] 2022/12/18(日) 14:23:46.88 ID:8FmKOvk1 方法は無いよ。たぶん 引数はやめてファイルで渡すか、set /p で入力したら http://mevius.5ch.net/test/read.cgi/tech/1663153441/109
110: デフォルトの名無しさん [sage] 2022/12/19(月) 21:25:44.08 ID:OdY4312I もしかして遅延展開が有効だったら set VAR1=!VAR2! は特殊文字おかまいなしの万能? http://mevius.5ch.net/test/read.cgi/tech/1663153441/110
111: デフォルトの名無しさん [sage] 2022/12/21(水) 21:17:40.11 ID:yR9jaPsy よくわからんけど >>102 でいけるなら setlocal enabledelayedexpansion for /f "delims=" %%i in ("!var1!") do endlocal & set var2=%%i もいけそうで、それなら for /f "tokens=1* delims==" %%i in ('set var1') do if %%i==var1 set var2=%%j でもいけそう http://mevius.5ch.net/test/read.cgi/tech/1663153441/111
112: デフォルトの名無しさん [sage] 2022/12/21(水) 22:08:11.62 ID:DgZmdBnN 上のは値の先頭が ; だと消える eol^= にすればいい 下のは値の先頭が = だとその文字が消える http://mevius.5ch.net/test/read.cgi/tech/1663153441/112
113: デフォルトの名無しさん [sage] 2022/12/21(水) 22:13:22.39 ID:DgZmdBnN set var1 の出力は複数かもしれない http://mevius.5ch.net/test/read.cgi/tech/1663153441/113
114: デフォルトの名無しさん [sage] 2022/12/21(水) 22:54:47.75 ID:DgZmdBnN if で確認しているのか。失礼いたしました。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/114
115: デフォルトの名無しさん [sage] 2022/12/22(木) 03:20:20.56 ID:rMNtcPRb バッチファイル内でキー入力を受けとろうと思って >SET /P YN_Check="(Y/N):" >Echo 入力されたのは %YN_Check% としたのですが、%YN_Check% にちゃんと入力した文字が入らないのですが、何故でしょうか…? この2行だけのバッチファイルなら、問題なく入力した値が入るのですが、 本来その処理をしたいバッチファイル内に記述すると、とたんにおかしくなります… Y にしても y になったり、y を入力してるのに N になったり訳が分からない。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/115
116: デフォルトの名無しさん [sage] 2022/12/22(木) 08:07:54.84 ID:i1WKtawW >>115 その本来の処理がおかしいと思われる http://mevius.5ch.net/test/read.cgi/tech/1663153441/116
117: デフォルトの名無しさん [sage] 2022/12/22(木) 09:17:11.00 ID:GhJnH83b echo onで眺めてみよう 環境変数は実行前に展開される 遅延展開という謎機能をしっているか? http://mevius.5ch.net/test/read.cgi/tech/1663153441/117
118: デフォルトの名無しさん [sage] 2022/12/22(木) 10:18:32.17 ID:DSfJPeBV for文とかの中で入れてるとかだろう で変な値とかは実行前の変数に残ってる値 http://mevius.5ch.net/test/read.cgi/tech/1663153441/118
119: 115 [sage] 2022/12/22(木) 13:27:25.08 ID:rMNtcPRb 「遅延展開」なんて、全く知りませんでした。 ここで質問しなかったら、永遠に解決出来ませんでした。 有り難う御座いました! http://mevius.5ch.net/test/read.cgi/tech/1663153441/119
120: デフォルトの名無しさん [sage] 2022/12/23(金) 08:34:41.65 ID:FT8V4kp7 特殊記号のドキュメントはどこで見られますか http://mevius.5ch.net/test/read.cgi/tech/1663153441/120
121: デフォルトの名無しさん [sage] 2022/12/24(土) 00:46:30.79 ID:Q5Ixgqn/ powershellに実装されてない<とか&&とか||を隠ぺいするために抹消された http://mevius.5ch.net/test/read.cgi/tech/1663153441/121
122: デフォルトの名無しさん [sage] 2022/12/24(土) 00:55:19.42 ID:oMpeQZG3 サポート対象外になったOSとかの技術情報がMSサイトから消されつつあるな この問題を消すと増える法則が発動しないインターネットから情報消えすぎ問題と呼称したい http://mevius.5ch.net/test/read.cgi/tech/1663153441/122
123: デフォルトの名無しさん [sage] 2022/12/26(月) 15:27:21.10 ID:aZQzx7UN Using multiple commands and conditional processing symbols https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc737438(v=ws.10)#using-multiple-commands-and-conditional-processing-symbols http://mevius.5ch.net/test/read.cgi/tech/1663153441/123
124: デフォルトの名無しさん [sage] 2023/01/03(火) 11:08:17.44 ID:2hETcG3j 最近職場でbatファイルを知った者です。 住民様にご質問がございます。 自分の仕事の中に「デジカメで撮った今日の現場の写真をPCに移す」という作業があるのですが そちらはbatファイルで対応することは可能なのでしょうか? xcopyでバックアップではフォルダに過去の写真を残していないと毎回膨大な写真を写すことになってしまい 職場の脆弱なPCではすぐに容量オーバーしてしまいます。 今日の写真のみをPCに移す方法がもしあるなら恐れながらご教授していただけると助かります。 何卒宜しくお願いします。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/124
125: デフォルトの名無しさん [sage] 2023/01/03(火) 13:27:43.33 ID:sLJn58EA >>124 更新日時が今日以降のファイルをコピー先に今日の日付のフォルダを作ってコピー set ymd=%date:~0,4%%date:~5,2%%date:~8,2% robocopy コピー元 コピー先\%ymd% /S /MAXAGE:%ymd% http://mevius.5ch.net/test/read.cgi/tech/1663153441/125
126: デフォルトの名無しさん [sage] 2023/01/03(火) 14:21:42.12 ID:axWhet1W IF の中から GOTO で外に飛ぶと、括弧の使い方が間違っている というエラーになるのですが、どうやって回避するのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1663153441/126
127: デフォルトの名無しさん [sage] 2023/01/03(火) 15:15:36.56 ID:cXTWG1PB >>126 コード出してみ http://mevius.5ch.net/test/read.cgi/tech/1663153441/127
128: デフォルトの名無しさん [sage] 2023/01/03(火) 15:27:36.49 ID:VP4Ca8Qj 勝手な想像だけどgoto関数かラベルの次の行がカッコになってるパターンだと思う goto :AAA ) とか :AAA ) バッチファイルは実行時に1行になって解釈されるからこういう書き方だと例えば else (goto :AAA) となって閉じ括弧までがラベルの一部と解釈される 簡単な回避策としては括弧の前の行にremを挿入する http://mevius.5ch.net/test/read.cgi/tech/1663153441/128
129: デフォルトの名無しさん [sage] 2023/01/03(火) 16:15:31.69 ID:JXGfY3Iz 別のところに原因があるんじゃ コード出して http://mevius.5ch.net/test/read.cgi/tech/1663153441/129
130: デフォルトの名無しさん [sage] 2023/01/03(火) 16:51:21.56 ID:z3dTsyyT gotoは便利かもだけど、使わないにこしたことはない http://mevius.5ch.net/test/read.cgi/tech/1663153441/130
131: デフォルトの名無しさん [sage] 2023/01/03(火) 16:58:09.34 ID:2hETcG3j >>125 正月にもかかわらず手早い返信ありがとうございます!!! 早速組んでみます!! ありがとうございました!!! http://mevius.5ch.net/test/read.cgi/tech/1663153441/131
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 776 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.026s