1 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 07:00:26 ID:f3kW5kCx.net] 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう 過去スレ %13 mevius.2ch.net/test/read.cgi/tech/1542779527/ %12 mevius.2ch.net/test/read.cgi/tech/1489207631/ %11 echo.2ch.net/test/read.cgi/tech/1424858999/ %10 peace.2ch.net/test/read.cgi/tech/1374205515/ %9 toro.2ch.net/test/read.cgi/tech/1335015478/ %8 toro.2ch.net/test/read.cgi/tech/1315844420/ %7 hibari.2ch.net/test/read.cgi/tech/1298873550/ %6 hibari.2ch.net/test/read.cgi/tech/1277465356/ %5 pc12.2ch.net/test/read.cgi/tech/1242268171/ %4 pc12.2ch.net/test/read.cgi/tech/1229955189/ %3 pc11.2ch.net/test/read.cgi/tech/1217860043/ %2 pc11.2ch.net/test/read.cgi/tech/1197881068/ 【.cmd】 バッチファイルスクリプト %1 【.bat】 pc11.2ch.net/test/read.cgi/tech/1178281991/ バッチファイルプログラミング 3.bat pc11.2ch.net/test/read.cgi/tech/1148485555/ バッチファイルプログラミング 2.bat pc8.2ch.net/test/read.cgi/tech/1104911889/ バッチファイルプログラミング質問スレ pc5.2ch.net/test/read.cgi/tech/1040614686/
543 名前:デフォルトの名無しさん [2021/12/01(水) 14:33:15.12 ID:+U/ofie/.net] かなりシンプルになるな
544 名前:デフォルトの名無しさん mailto:sage [2021/12/01(水) 14:33:29.91 ID:eX2WGo0j.net] 訂正 set /a "m=1%%b-101, f=!m, y=%%a-f, m=m+12*f"
545 名前:デフォルトの名無しさん mailto:sage [2021/12/01(水) 19:30:16.15 ID:qmJDO3Rn.net] for /f "tokens=1-7 delims=/:." %%1 in ("%date%.%time: =0%") do set DateTime=%%1%%2%%3%%4%%5%%6%%7
546 名前:デフォルトの名無しさん mailto:sage [2021/12/02(木) 12:24:38.70 ID:xcTRUvQf.net] for /f "tokens=1-2 delims=/" %%a in ("%DATE:~0,7%") do set /a "m=1%%b-101, f=!m, m+=12*f, y=%%a-f" for /f "tokens=1-2 delims=/" %%a in ("%DATE:~0,7%") do set /a "m=1%%b-101, m+=12*(f=!m), y=%%a-f" for /f "tokens=1-2 delims=/" %%a in ("%DATE:~0,7%") do set /a "m+=12*(f=!(m=1%%b-101)), y=%%a-f" 少し直したけど綺麗だなこれ >>532 unixtimeも面白い 3月を頭にしてるんだな
547 名前:デフォルトの名無しさん mailto:sage [2021/12/02(木) 21:10:02.03 ID:NUCi8UEu.net] 0:00前後に実行するとおかしなことになるから%date%と%time%はかならず一時変数に入れるべき もっと言えば日付と時刻を同時に取れる手段を使うべき
548 名前:デフォルトの名無しさん mailto:sage [2021/12/02(木) 22:16:15.49 ID:sGas3Vn9.net] メモ フェアフィールドの公式
549 名前:デフォルトの名無しさん mailto:sage [2021/12/02(木) 22:37:42.24 ID:s/MRATw/.net] 割とクソゴミな式な 式の意味が分かり難くなるような式変形しちゃダメだわ 敢えてやってんだろうけどさ Wikipediaの解説とかも良く分かってないバカが書いたんだろうなと思う まあ導出のアプローチの仕方が悪いってだけだが
550 名前:デフォルトの名無しさん mailto:sage [2021/12/04(土) 22:30:00.94 ID:Nf0n5MKs.net] 日付の質問です。 CSVの日付部分のセルのデータが壊れていて、5桁の整数になっています。 ググって調べてみたら、どうも1899/12/30が0のシリアル値のようです。 これをYYYY/MM/DDの文字列に変換したいんですが計算式がわかりません。 よろしくお願いします。
551 名前:デフォルトの名無しさん mailto:sage [2021/12/04(土) 23:24:36.10 ID:vRpkCUu9.net] >>543 CDate( )
552 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 00:20:38.02 ID:KxbO9WQf.net] >>543 エクセルあればセルの表示設定を変える
553 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 06:43:24.27 ID:KxbO9WQf.net] >>543 変数 n を変換 set /a n+=693899,a=365,b=1461,c=36524,e=146097 set /a f=n/e,g=(n+1)/e-f,n-=f,n+=(n-g)/c,f=n/b,g=(n+1)/b-f,n-=f set /a n+=(n-g)/a*3+(n-61)/a+(n-122)/a+(n-214)/a+(n-275)/a-306 set /a y=n/372+1,m=n/31%%12+101,d=n%%31+101 set n=%y%/%m:~1%/%d:~1% 各定数は順に、 0/3/1〜1899/12/29の日数(全てグレゴリオ暦) 西暦1年から1,4,100,400年の日数 3〜4,3〜6,3〜9,3〜11,3〜12月の日数 31*12の日数
554 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 09:15:29.34 ID:/JnG12pN.net] > 1899/12/30が0のシリアル値 まあ実質的にはそれでも間違いでは無いけど エクセルは一応 1900/01/01 が 1 でも 1900/02/29 が存在するバグ仕様のせいで 1900/03/01 以降 +1 になってしまい 1899/12/31 が 1 のような値になってしまう 1900/03/01 以降の値しか無いなら一律で構わないけれど全てに対応させるには以下の3種必要 ・1900/01/01 〜 1900/02/28 ・1900/02/29 ・1900/03/01 〜 2/29だけ例外で扱って残りは03/01〜の時、通日をフラグで-1する感じかな 0/3/1 を 0 とした値に直して %1 に与えたら以下の式で年月日を出せる set /a "R=(R4=(R1oo=(R4oo=%~1%%146097)%%36524)%%1461)%%365, Y4oo=%~1/146097, Y1oo=R4oo/36524, Y4=R1oo/1461, Y1=R4/365, L=(Y1oo|Y1)/4, R+=L*365, k=(R*5+2)/153, d=R+1-(306*k+4)/10, f=k/10, m=k+3-f*12, y=400*Y4oo+100*Y1oo+4*Y4+Y1-L+f" echo %y% / %m% / %d%
555 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 09:29:31.66 ID:KxbO9WQf.net] シリアル値が60以下がどうとかいう話だよね 質問が5桁の整数とあるので無視したよ
556 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 10:57:38.65 ID:rW6bYpGZ.net] もしかしてみずほの案件やってた人?
557 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 11:31:10.50 ID:KxbO9WQf.net] そもそも60以下になるとソフトにより挙動が違う Excelとは限らない 出どころ確認が先決 スレチの話だけどね
558 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 11:31:33.19 ID:4iCsIwjm.net] ワロwww
559 名前:デフォルトの名無しさん mailto:sage [2021/12/05(日) 11:39:17.80 ID:4iCsIwjm.net] わざわざ対応する必要なんて無いとは思うけど 定数の説明なんかよりも60以下で不正な値になるという注意書きの方が重要だわな みずほも言われたことしかやらない企業体質がどうの言われてるね こんな感じで小さなバグが内包しまくってるのかもなw
560 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 16:06:42.92 ID:yBc7foB1.net] >>546 一旦閏日全部引いて、月が一律31日になるよう加算してるんだね 面白い (n-61)/a+(n-122)/a+(n-214)/a+(n-275)/a この式が4-11月の不足分を足してるんだろうけど なんでこの式で行けるのかイメージ出来ない
561 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 19:19:45.42 ID:+EfoGYZX.net] >>546 バッチありがとうございます。動作確認しました。助かりました。 >>550 ソフトはLibreOfficeです。後出しですみません。 シリアル値は全て連続です。質問は5桁設定でしたが60以下でもOKです。 >>547 詳細な情報ありがとうございます。Excelの場合は注意します。
562 名前:デフォルトの名無しさん [2021/12/07(火) 18:18:33.97 ID:gm0ARZfd.net] すみません、質問です。 SET hoge=hogehoge robocopy c:\piyo \\server1\foge %hoge% /r:3 & if errorlevel 8 ( echoコマンド exit /b 1 ) 上記、 robocopy c:\piyo \\server1\foge %hoge%の「%hoge%」はどのような意味合いになりますでしょうか。 また、/r:3 & if errorlevel 8 ( の意味合いも教えていただけないでしょうか。 恐縮ですが、よろしくお願いいたします。
563 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 18:50:14.46 ID:eGbAaLSQ.net] robocopy /? でヘルプが出るのでそれを読め
564 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 18:52:54.40 ID:eGbAaLSQ.net] なお&は命令の区切りだけど、別に手前の命令の結果を待っての動作じゃなくて 一行前までの結果で動作するんじゃなかったかな
565 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 19:03:57.81 ID:8LJtCh3/.net] &はコマンドを繋げているだけ その例だと robocopy opt if errorlevel 8 echoコマンド&exit /b 1 と同じ c:\piyo \\server1\foge %hoge% /r:3 がrobocopyのコマンドラインオプション %hoge%はhogehoge set a=xyz echo %a% はecho xyzと解釈されxyzと出力される 各コマンドについてはコマンドプロンプトで以下 set /? robocopy /? if /?
566 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 19:21:14.44 ID:eGbAaLSQ.net] >>558 >>557 でも言ったけど、&は命令を並列に記述できるだけで 前の命令の結果を反映したものじゃないので robocopy opt if errorlevel 8 echoコマンド&exit /b 1 と robocopy opt&if errorlevel 8 echoコマンド&exit /b 1 の結果は違ってくる っていうかこれは意味の無い間違った使い方だね 例 set data=abc set data=def&echo %data% echo %data% 実行結果 abc def
567 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 19:26:26.54 ID:eGbAaLSQ.net] あれ違うのか コマンドの場合は結果を見るんだな 環境変数が遅延するのか
568 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 19:34:45.64 ID:8LJtCh3/.net] >>559 pushd . if errorlevel 1 echo fail1 pushd a if errorlevel 1 echo fail2 pushd .&if errorlevel 1 echo fail3 pushd a&if errorlevel 1 echo fail4 pause 試してから発言しなよ
569 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 19:38:07.87 ID:eGbAaLSQ.net] 実行時の行の展開の式評価に環境変数は展開されるってことだな 式評価に影響されないものはちゃんと実行される &による命令の結合は if errorlevel 1 は問題ないが if %errorlevel% geq 1は問題がでてくる
570 名前:デフォルトの名無しさん [2021/12/07(火) 20:35:38.31 ID:FGGdMnHs.net] 皆さまありがとうございます cmdにて コマンド /? で見られること知りませんでした
571 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 06:22:16.06 ID:GPDURn2W.net] 変数・条件判断など、ややこしいのは、PowerShell で作った方がよい
572 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 20:11:32.12 ID:g8C6QNB9.net] 普通に「勘違いしてました。ごめんなさい。」と言えんのか
573 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 20:18:14.77 ID:CqDUxZrm.net] if errorlevel とか if defined って & で繋ぐ為にあるんじゃね?
574 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 21:48:59.30 ID:QG3j0cZG.net] バッチは罠が多すぎて&なんて横着しないからどうでもいい
575 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 22:49:45.89 ID:CqDUxZrm.net] 他にもifやdoの括弧のなかとか
576 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 10:08:38.60 ID:FBbu4srV.net] 次行に書いた方が見やすいしわざわざ&で繋ぐ意味なんてほぼ無いけど robocopy & if errorlevel としてるのは if errorlevel は直前のコマンドの errorlevel を評価するわけだから 「ココは直後である事に意味ありますよ。繋がっていますよ」をコード的に明示する為に次行では無く&で繋げて書いてあるんだと思う
577 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 13:59:42.09 ID:3uIKfwyJ.net] &で繋ぐのは大抵そんな感じ
578 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 14:06:23.73 ID:7XWC/XYC.net] 行数を少なくしたい時しか使わんかなあ まあ使うとしても エラーかどうかだけチェックするときは、&&,||を使うといい
579 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 15:08:39.73 ID:CZcGE7T9.net] >>571 > エラーかどうかだけチェックするときは、&&,||を使うといい なるほど、一行でみやすくなる
580 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 15:58:31.58 ID:y36UsJ/D.net] type "!TARGET_FILE!">>"!FILE_NAME!"で テキストの中身を出力して テキストファイルに出力するバッチファイルつくったんですけど 普段はうまく出力できたんですが 特定のファイルだけ The system cannot find the file specified. で中身が空になってしまいました 原因として考えられるのはなんでしょうか?
581 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 15:59:20.44 ID:y36UsJ/D.net] 中身が空というのは 本来は出力されるべきものが空になって出力された ということです わかりづらくてすいません
582 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 16:09:53.85 ID:y36UsJ/D.net] 自己解決です ファイル名がおかしかったでした すいません
583 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 09:23:54.32 ID:E/xxr9cU.net] Windows10で、Chromeで特定の複数Webページを開くバッチファイルを作りたいと思ってます cd /d "PATH_TO_CHROME" "PATH_TO_CHROME\chrome.exe" "http://〇〇/〇〇" "PATH_TO_CHROME\chrome.exe" "http://△△/△△" ↑ このようにすると指定したChromeが起動し、指定したURLを開けるところまでは できたのですが、これだと起動したChromeのタブを閉じないとバッチファイルが 先まないので、1サイトずつ開くことしかできません しかし cd /d "PATH_TO_CHROME" start "PATH_TO_CHROME\chrome.exe" "http://〇〇/〇〇" start "PATH_TO_CHROME\chrome.exe" "http://△△/△△" ↑ このようにすると、ChromeではなくIE(既定のブラウザ)で起動してしまいます 対処法をお教えいただけますでしょうか
584 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 09:32:06.00 ID:UVPMSOn+.net] srart /? 読めよ 定番の罠だぞ start "タイトル" "コマンド"
585 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 09:43:17.11 ID:B96qroJw.net] 実行前にcdしてるんだから、startでPATH_TO_CHROME必要なくない?
586 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 09:55:28.09 ID:E/xxr9cU.net] >>577 ご指摘ありがとうございます コマンドがタイトルとなっているようですね >>578 うまくいかず、いろいろ試行錯誤して残っておりますが、たしかに必要ないですね ご指摘ありがとうございます
587 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 11:16:20.09 ID:E/xxr9cU.net] 576です いただいた回答に基づき以下の様に修正し、うまく動作しました ありがとうございました cd /d "PATH_TO_CHROME" start "" chrome.exe "http://〇〇/〇〇" start "" chrome.exe "http://△△/△△" タイトルは、どうしようか迷いましたが、消すとまた忘れて罠にハマるかと思い、 残しておきました
588 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 12:54:10.13 ID:4x3UzFuB.net] chromeをdefault browserにする気は無かったのか?
589 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 13:46:43.89 ID:xm+AV3Ci.net] これかー https://github.com/MicrosoftDocs/windowsserverdocs/issues/4784 However the fact you need a Window Name is very annoying. Typically we have used: start /w "c:\path_name_here\filename.ext" But all this does now is open another cmd prompt window with "c:\path_name_here\filename.ext" as it's title. As a minimum, what is now required is this: start "" /w "c:\path_name_here\filename.ext" Why did this change?? まだopen question?闇深
590 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 13:58:58.96 ID:bi0x6bK+.net] いちいちcdとかせんでもこれでよくね? set chrome="フルパス\chrome.exe" start "" %chrome% "http://〇〇/〇〇" "http://△△/△△" タブに追加するだけならurlは羅列でいいはず
591 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 14:41:04.55 ID:xm+AV3Ci.net] /オプション無しのオプショナル引数を先頭に持ってくるという設計は完全に腐ってるから、[<title>]から<title>への変更はグッジョブ しかしアンドキュメンテッドはやめーや
592 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 10:32:27.87 ID:iAh3rPLr.net] cmdの作業効率が8%向上する裏技 prompt $E[92;40m$P$_$G$S$E[0m
593 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 14:12:22.20 ID:MDj1w4qb.net] ドキュメントしてしまうと公認してしまうから
594 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 01:14:44.64 ID:74yCYCRP.net] >>567 行毎に一括でパラメタ展開はモジュール化に役立つよ :: main call :subtract %1 %2 call :add %1 %2 goto:eof :subtract setlocal set a=%1 set b=%1 endlocal & set /a ret=%a%+%b% exit /b :: note that :: "endlocal & set /a ret=a-b" wont work: no expansion at line-parsing :: also :: "endlocal" :: "set /a a=%a%+%b%" :: because local vars already popped. :add setlocal set a=%1 set b=%2 endlocal & set /a ret=%a%-%b% exit /b ノーテストなんでなんか変だったらごめん スマホアプリですぐ試せられればいいんだけど、プロプライエタリだからなあ…
595 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 01:20:33.98 ID:74yCYCRP.net] 大事なとこぬけてた call :subr arg1 arg2 @echo %ret% みたいに返り値得てます
596 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 13:12:42.88 ID:0TpC/TXA.net] %time%で取得できる13:11:12.99を13111299に変換したい場合、変数を使って%time::=%、%_time:.=%として変換しています。 この文字列置換を複数条件設定するなど1行でスマートに置換させる方法はありませんか?
597 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 14:26:07.33 ID:g9YcY7nV.net] >>589 >>538 じゃ駄目なの?
598 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 15:16:40.00 ID:0TpC/TXA.net] >>590 できました。ありがとうございます。
599 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 10:47:19.32 ID:EP1qj6y9.net] >>538 すばらしい、一行でできるんだ、曲芸飛行 時間だけで5行かけていた
600 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 21:34:23.51 ID:Ttj+NiJr.net] >>540 の問題で痛い目を見るから俺は%date%%time%は使わない
601 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 22:26:24.88 ID:EYSEHsUE.net] >>593 そこまで気にするなら、時刻が 0:00:00.xxの時は日付を取得し直すとかすればいいかな 又は一旦ダミーファイルを作成してそのタイムスタンプを見るとか ちょっと具体的には思いつかないが日付時刻の付いた結果が出るシステム情報や結果ログ出力系のコマンドから貰うとか bat中で別言語(WSH,PowerShell)で取得するとか(new Date();やget-date) どういうのを使うと良いと言ってくれれば最高なレスになったのに
602 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 00:00:44.73 ID:7XMchLit.net] 通ぶりたいだけでしょw
603 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 21:17:59.55 ID:/gSQ5d+p.net] これで満足かな for /f "usebackq" %%a in (`powershell -nop "get-date -format 'yyyyMMddHHmmss'"`) do set now=%%a
604 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 14:42:24.69 ID:BDVQn7Pa.net] :: タイムスタンプ取得。秒未満無し copy nul $.txt :: tokens はシステム設定の日付形式に依存。環境毎に要調整 for /f "tokens=2-4,6-8 delims=/: " %%a in ('where /t $.txt') do set "dt=%%a%%b%%c%%d%%e%%f" del $.txt set "dt=%dt: =0%" echo %dt% pause &exit /b :: 怪しい時間帯(23:59:59-00:00:01)なら再取得。センチ秒(1/100)有り :GET_DT for /f "tokens=1-7 delims=/:." %%a in ("%date:~0,10%/%time: =0%") do set /a "d=%%a%%b%%c, t=1%%d%%e%%f%%g" if %t% GTR 123595900 timeout /t 2 /nobreak >nul &goto :GET_DT if %t% LSS 100000100 goto :GET_DT echo %d%_%t:~1,-2%_%t:~-2% pause &exit /b 別々に取得してるならまだしも同時に取得してそんな事故起こり得るの?都市伝説じゃね? ところで"20211217143411"みたいな年月日時分秒を区切り文字無しの数字のみで表した形式って名前あるなら教えて欲しい
605 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 14:50:54.89 ID:YK+z10uu.net] dateもtimeも参照する度に計算して返してるからありえなくはないはず んなこと気にしだしたらやってらんないからまあ気にすんな
606 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 15:15:49.48 ID:hTLZR6Rv.net] 怪しい時間はスリープしてしまうのも手 決済の日付なんか微妙なの下手に振り分けたら揉めるしな、23:59で〆切でヨシ そんなのbatでやってる人居るかはしらんが
607 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 17:15:52.28 ID:U9ZWMMsm.net] >>597 日時ってデータとしては埋もれて目立たないから軽視されがちだけど バッチでログ吐かせてY軸時間でグラフ出すような時にアッレッ!?ってなる
608 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 19:18:20.51 ID:b/qKwgTk.net] :loop set d=%date% set t=%time% if not %d%==%date% goto loop
609 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 20:24:45.70 ID:HfuHDFo+.net] >>601 これだと、time取得した後で日付が変わる可能性がごくわずか考えられる やっぱり時刻が0秒台かどうかで判定したほうがいいと思う [] [ここ壊れてます]
611 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 20:26:39.18 ID:HfuHDFo+.net] いや別に変わっても大丈夫だな
612 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 21:03:18.69 ID:BDVQn7Pa.net] >>601 あー同時に参照することばかり固執してたわ 敢えて順に取得して2度目との比較でTIMEの同日を保証出来るね その方がシンプルで良いな
613 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 01:12:16.03 ID:CB++7SQf.net] 8ビットマイコンで16ビットタイマーの値を読むときなんかに使ったっけ もちろんタイマー側にラッチ機能があって、そういう気遣いのいらないものもあったが
614 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 06:09:00.92 ID:LxI3AD9t.net] ラッチがいるならつければええやん
615 名前:デフォルトの名無しさん [2021/12/24(金) 11:39:23.31 ID:etjYYPj+.net] イベントログ保存したくて wevtutil epl system xxx.evtx /q:"条件" ↓ wevtutil al xxx.evtx /l:ja でディレクトリ名が無効ですって出るんだが理由わかる?
616 名前:デフォルトの名無しさん [2021/12/24(金) 11:43:38.16 ID:etjYYPj+.net] 自己解決しました 管理者で実行したら行けた
617 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 20:51:05.94 ID:wuqNqn+2.net] >>606 タイマーとかのラッチってペリフェラルの補助機能でしょ ソフトでそんなもんないから>>601 なわけで
618 名前:デフォルトの名無しさん mailto:age [2022/01/02(日) 19:41:59.70 ID:llzVm8Ys.net] Windowsでバッチファイルの%1とかに 今クリップボードに入ってるテキストを渡して起動したいけど なんか方法ある?
619 名前:デフォルトの名無しさん mailto:sage [2022/01/02(日) 20:13:43.31 ID:Wx5RR6tp.net] とりあえず何も追加する必要ないので PowerShell がお手軽 例えばクリップボードの内容を tmp.txt に出すならバッチファイルやコマンドプロンプトで >powershell -NoProfile -ExecutionPolicy Unrestricted -Command Get-Clipboard > tmp.txt 先に >chcp 65001 しておくと UTF8 での出力もいけるっぽい
620 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 02:27:56.29 ID:/1+Dp4vp.net] for /f "delims=" %%a in ('powershell -c "get-clipboard"') do hoge.bat "%%~a"
621 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 07:54:20.63 ID:yGzP40SI.net] >>611-612 powershellの1行呼び出しに-c or -Commandって必要ある? いつもpowershell -nop "コマンド"てやってるわ
622 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 09:26:29.55 ID:BdaWP45p.net] 漏れは下のような、Ruby スクリプト内で、powershell コマンドを呼んで、 クリップボード内の文字列を処理している # クリップボード内の複数行文字列の、各行の先頭・末尾から、 # 連続する空白類を除去して、クリップボードに入れる str = `powershell Get-Clipboard` str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換 ary = str.each_line.map( &:strip ) # 連続する空白類を除去する IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す clip.print( ary.join "\n" ) end
623 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 10:45:31.38 ID:CWfpiD5B.net] >>613 この場合なら最低限で書くと for /f "delims=" %%a in ('powershell get-clipboard') do で良い
624 名前:デフォルトの名無しさん mailto:sage [2022/01/03(月) 13:18:16.70 ID:0LszXjQc.net] 環境変数名に一部記号も使えることを発見 #で始まれば一時変数、$で始まればバッチ間共通など、少しわかりやすくできる
625 名前:デフォルトの名無しさん [2022/01/04(火) 00:14:37.12 ID:a2P6Hn/H.net] 塩野義製薬が週休3日制導入へ 来年4月、副業も解禁 塩野義製薬が「週休3日」選択可能に 給与は『週休2日の8割』副業や学び直しを支援 【フォーカス】サタケ/週休3日制 通年導入めざし夏季のみ試行中 交代制で水曜を休日に 旅館なのに週休3日!?陣屋・若女将の常識を覆した組織改革 “時代錯誤”から残業ゼロ、週休3日に! 鳥取の不動産会社が レガシー企業からDX先進企業になれたワケ ネクスウェイ、週休4日制・1日3時間勤務選択できる勤務体系を導入 日本初「週休4日制度」で、優秀な人材を採用するしくみとは? ? ナレッジソサエティ久田社長に聞いてみた
626 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 07:53:54.89 ID:JIskJ1L9.net] ファイルのリネームと ファイルの移動 フォルダ自動作成 これだけで普段の作業の手間がほんとうに省ける 逆に何ができると便利だろう
627 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 08:04:00.41 ID:JIskJ1L9.net] 環境変数って 普通の変数とは違うの? バッチファイル特有の言い回し? %1 %i %hoge だっけ?
628 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 13:18:17.45 ID:nDo7QbOD.net] アプリケーションプログラムの環境という意味 例えば一時作業フォルダを TEMP に指定するとアプリが参照して使ってくれる(事がある) dirコマンドのデフォルトオプションはdircmd変数に設定出来る いわゆる環境設定と呼ばれるね そしてバッチファイル内でプログラミング言語の変数としても使える
629 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 13:23:22.58 ID:nDo7QbOD.net] ちなみに %1 %%i は環境変数じゃないね shift /? や for /? を読もう 環境変数はsetコマンドでセットして参照は%変数名% set /? を読もう
630 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 04:31:27.84 ID:a6a8bxfJ.net] 最低限 for /f "delims=" %a in ('powershell clipboard') do echo %a
631 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 21:13:49.45 ID:aASmTB60.net] dir /b の結果を explorerの名前順(昇順|降順)にソートする簡単な方法無い? 数字を数値と見做してソート バッチから利用出来るならOK。ps全く分からんけど powershellとかで出来ないかな? カレントディレクトリの dir /b 相当なら dirで無くてもいい for /f "delims=" %%a in ('dir /b ^| numsort.exe') do みたいな感じで外部ソートツール導入でもOK。むしろ理想形 ファイル数は2000未満くらい。万単位とか考慮しなくていい なるべくなら余計なインストールは避けたいけど自前でパースとソート作るのはハードル高過ぎなので何か方法があれば教えて欲しい 最悪逆順にするだけなら自前でも出来そうなのでせめて(昇順|降順)どちらかだけでも出来れば
632 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 21:22:10.78 ID:s4YEdFZn.net] >>623 dir /b の結果とexplorerの名前順(昇順|降順)って違うん? もし同じなら、単に dir /b > uuu.txt でリダイレクト
633 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 21:28:36.67 ID:OaU1XWUD.net] 半角数字だけでいいなら GnuWin の sort.exe を gsort.exe にリネームして使ってる gnuwin32.sourceforge.net/packages/coreutils.htm の Binaries の zip に入ってるやつ >dir /b *.txt | gsort -n 11.txt 0123.txt 2222.txt 3333.txt 11111.txt >dir /b *.txt 0123.txt 11.txt 11111.txt 2222.txt 3333.txt こんな具合 漢数字とかは知らないので日本語(漢数字・全角)に対応したの あれば知りたい……
634 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 21:53:08.80 ID:aASmTB60.net] >>625 ありがとう試してみます
635 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 21:59:16.95 ID:s4YEdFZn.net] >>626 あんた数字を数値と見做すて言うたやん? 11.txt 11111.txt 2222.txt になっていいわけ?
636 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 22:26:05.82 ID:aASmTB60.net] >>625 教えてもらったようにgsort.exeにリネームして使ってみたら libintl3.dll が見つからないため、コードの実行を続行できません。プログラムを再インストールすると、この問題が解決する可能性があります。 とアラート出て使えなかった。win10 libintl3.dllをググったらjp.dll-files.comてとこ検索出て落とせるようなんだけどこれ入れて大丈夫?
637 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 22:30:15.41 ID:OaU1XWUD.net] >>627 落ち着いて そこは比較のために出した素の 「dir /b 」 の結果ですよ >>628 ごめんなさい 上のページの Binaries の下の Dependencies も要るんだった
638 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 23:14:16.23 ID:aASmTB60.net] >>629 ありがとう libをシステムにコピーして使えました でもコレ dir /b *.ext | gsort -n 1.txt 2.txt … 9.txt 10.txt と、数字.ext なら数値順にソート出来ましたけど 文字列+数字.ext だと無理なようです xxx1.txt xxx10.txt xxx2.txt xxx20.txt みたいになります xxx_1.txt と文字列と数字の間に区切り記号入れても駄目 エクスプローラーのようには並ばないみたいですね win32api使うかvbかpowershellかで出来るような事を以前どこかで読んだ気がするのですがそのソースが見付けられない。。
639 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 01:07:47.03 ID:td9ayUMw.net] 普通に見つかったけど、本当に探した? @echo off echo class P{[System.Runtime.InteropServices.DllImport("shlwapi.dll", >SortLogical.cs echo CharSet = System.Runtime.InteropServices.CharSet.Unicode, ExactSpelling = true)] >>SortLogical.cs echo public static extern int StrCmpLogicalW(string str1, string str2); >>SortLogical.cs echo static void Main(){ string[] lines = System.Console.In.ReadToEnd().Split >>SortLogical.cs echo (new string[] { "\r\n" }, System.StringSplitOptions.RemoveEmptyEntries); >>SortLogical.cs echo System.Array.Sort(lines, StrCmpLogicalW); >>SortLogical.cs echo System.Console.Out.WriteLine(string.Join("\r\n",lines));}} >>SortLogical.cs for /f %%i in ('dir /s /b "%windir%\Microsoft.NET\csc.exe"') do set csc="%%i" %csc% /nologo SortLogical.cs dir /b | SortLogical
640 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 04:18:02.04 ID:aOgfZBdB.net] >>631 すげぇ。生成されたexeで希望するソートが出来るようになりました マジ感謝です ありがとう > 本当に探した? 検索語すら分からず「バッチ dir エクスプローラー並び順」とか他にも結構色々試して探しては見たのですが。。 StrCmpLogicalW が分かった今でもその方法を見付けられていません
641 名前:デフォルトの名無しさん mailto:age [2022/01/26(水) 06:51:01.88 ID:fC9okRVc.net] エクスプローラーの並び順って 辞書順か数字順か レジストリで変更可能だよね
642 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 08:10:19.47 ID:JawhZMcA.net] 何のために並び順を揃えるの?
643 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 08:34:25.15 ID:e2k0MxNT.net] なるほど、数字の部分だけは数値に変換してから、小さい順に並べるのか このアルゴリズムを考えるのは、難しい