1 名前:デフォルトの名無しさん mailto:sage [2018/11/21(水) 14:52:07.84 ID:v84I4o+L.net] 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。 ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。 前スレ 【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net echo.2ch.net/test/read.cgi/tech/1424858999/ 【.cmd】 バッチファイルスクリプト %12 【.bat】 https://mevius.5ch.net/test/read.cgi/tech/1489207631/ それ以前の過去スレ %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 pc12.2ch.net/test/read.cgi/tech/1197881068/ %1 pc11.2ch.net/test/read.cgi/tech/1178281991/
809 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 06:34:57 ID:bLWOmnfL.net] UNIXとかでshやbashがログインシェルとかインタラクティブシェルになるのと同じだよ shやbash=cmd シェルスクリプト=バッチファイル シェアが段違いのWindowsのバッチファイルがシェルスクリプトよりずっと複雑なのは当たり前
810 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 06:56:52.10 ID:SXZJio07.net] とはいえ逆にunixでバッチがどうとか言うと違和感あるしな >>766 みたいな感覚が一般的
811 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 07:15:11 ID:sus1L+2H.net] >>775 > シェアが段違いのWindowsのバッチファイルがシェルスクリプトよりずっと複雑なのは当たり前 シェアならLinuxのシェルスクリプトの方が多いよ 今はsystemdに置き換えられつつあるが、起動処理の多くで シェルスクリプトが使われていた。 各アプリのビルドなどでもシェルスクリプトは使われている。 それに対してバッチファイルは殆ど使われていない。 そもそもWindowsのコマンドは、他のコマンドの出力を読み取って 別のコマンドで処理するように設計されていない 単に呼び出すだけ。だからバッチファイルという名前になってる 例えばcopyコマンドであってもシェルスクリプトであれば、コピーが正常に終了した場合 なにも表示されないのでスクリプトとして使いやすいが Windowsのcopyは人間用のメッセージがいちいち出る コマンドの出力を変数に入れるだけでも大変 遅延環境変数の展開を使わなければ変数の中にメタ文字的なものが入るだけで簡単に壊れる そもそもの設計思想がスクリプトを組むためではなく、単にコマンドを並べるという使い方を するためだからバッチファイルはシェルスクリプトだけでなく PowerShellスクリプトやVBScriptよりも使いづらくなってしまっている 一方、PowerShellスクリプトやVBScriptはコマンドをよびだすのが 面倒になってるので両立してるシェルスクリプトにはかなわない
812 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 07:22:12 ID:VzuV0Enx.net] アスペがうだうだ言ってるだけで全く「会話」が進行していないな
813 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 07:36:25.95 ID:SXZJio07.net] スレチだから、もうやめろ
814 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 07:51:09.96 ID:sus1L+2H.net] やなコッタ
815 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 22:15:38.24 ID:f6LPbIhG.net] パンナコッタ
816 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 22:43:10 ID:sus1L+2H.net] メロンパンナ
817 名前:デフォルトの名無しさん mailto:sage [2020/04/30(木) 00:25:02 ID:6g7fIyNp.net] マンコッタ茶園のアッサムティーをすすりながら仕事するのが何よりの贅沢
818 名前:デフォルトの名無しさん mailto:sage [2020/04/30(木) 23:56:54 ID:4NDFLh29.net] アッサムティー好き、いいよね
819 名前:デフォルトの名無しさん mailto:sage [2020/05/01(金) 20:45:42 ID:I+dUmCMk.net] カタコッタ
820 名前:デフォルトの名無しさん [2020/05/07(木) 18:46:37 ID:jiFNKMfo.net] 滅茶苦茶初歩的な質問ですまん バッチファイルからPythonスクリプト実行してPythonスクリプト側でprintした文字列をバッチファイル側で取得する方法ってある?
821 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 18:51:16 ID:cw3NlGJG.net] FOR /F ["オプション"] %変数 IN
822 名前:('コマンド') DO コマンド [コマンド パラメーター] または usebackq オプションの場合: FOR /F ["オプション"] %変数 IN (`コマンド`) DO コマンド [コマンド パラメーター] [] [ここ壊れてます]
823 名前:デフォルトの名無しさん [2020/05/07(木) 18:51:30 ID:jiFNKMfo.net] もしくはコマンドプロンプトに出力された文字列を出所問わず取得したい
824 名前:デフォルトの名無しさん [2020/05/07(木) 19:01:03 ID:jiFNKMfo.net] >>787 ありがとう、いけたわ logzero使ってるライブラリでこれやろうとすると途中で処理が止まるけど、これは他の問題かもしれんな
825 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 19:33:24 ID:lct9jPsZ.net] 昔だったら tail -f
826 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 19:34:28 ID:2gF3mugX.net] >>789 標準出力じゃなくて、標準エラー出力の方にprintしてるんだろ ('py foo.py 2^>^&1')
827 名前:デフォルトの名無しさん [2020/05/07(木) 19:47:29.96 ID:jiFNKMfo.net] logzeroさらっと調べても設定全く分からんので今回は該当部分の出力だけlogzero.infoからprintにして無駄な出力を省いた 出力取得できたのでまあよし
828 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 20:17:47 ID:2gF3mugX.net] >>792 @echo off setlocal enabledelayedexpansion set n=0 for /f "tokens=*" %%i in ('py test.py 2^>^&1') do ( set IN!n!=%%i set /a n+=1 ) set /a n-=1 for /l %%i in (0,1,%n%) do ( echo.!IN%%i! ) endlocal
829 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 09:27:08.95 ID:hWMQZbFi.net] >コマンドプロンプト入門 Kindle版 2020年にこれを出すとはチャレンジャーすぎるな
830 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 16:03:14 ID:PeLhefIP.net] amazonで、確認すると、2019/09の出版みたいですね。 どうせなら、power shellの本出したほうが良かったかも。
831 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 18:45:23 ID:NJ7uTfC9.net] ファイル名に「b」を含むファイルをコピーするときに たとえば abc.txt というファイルがあって copy *b*.txt def.txt がオッケーで copy *b* def.txt がエラーなのはなぜですか? *は0文字以上の文字列なので 両方とも成功すると思っていたのですが
832 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 19:05:09 ID:fhydWmjd.net] >>795 KindleストアにPowerShellのがいっぱいあるやん
833 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 19:55:35 ID:UaCqmgBQ.net] >>796 普通にできるけどどんなエラーが出るの? ちなみにその書き方だと *a* が複数ある時は連結されてしまうけどな
834 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 19:59:26 ID:fhydWmjd.net] *b* が一つでもゴミが付くしね(0x1A)
835 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 20:41:18.51 ID:H5g1ckea.net] Windows Terminal で音を鳴らすにはどうすればいいですか コマンドプロンプトではControl-Gを出力してたんですが Windows Terminalでは無視してくれやがります
836 名前:デフォルトの名無しさん [2020/05/23(土) 22:23:07.24 ID:105ldQbQ.net] start beep.wav
837 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 22:45:59.81 ID:H5g1ckea.net] そんなんだったら >copy con beep.cmd echo ^G waitfor /T 3 waiting ^Z 1 個のファイルをコピーしました。 >start /min cmd /d/c beep.cmd とするけどもっといい手はないかなと
838 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 23:00:15 ID:H5g1ckea.net] ああstartで自分を呼んで鳴らせばいいんだ 自己解決しました
839 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 00:25:04.68 ID:VYuvM9gt.net] >>802 echo ^G>beep.dat としておいて type beep.dat beep.dat は 0x07 (1byte)だけ
840 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 00:40:12.55 ID:f4O9jhZ+.net] その手がWindows Terminalでは使えないって話 https://aka.ms/terminal-documentation Windows ターミナルの概要 | Microsoft Docs
841 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 00:46:46 ID:VYuvM9gt.net] >>805 そうでしたか Windows Terminal、使うか
842 名前:デフォルトの名無しさん [2020/06/03(水) 20:30:01 ID:H
] [ここ壊れてます]
843 名前:abAm56l.net mailto: バッチでやるような処理でも 勉強兼ねてpowershell使って処理するようにしたほうがいいですか? [] [ここ壊れてます]
844 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 20:31:25 ID:5eIQQTQm.net] 勉強でなら、そりゃそうだろと言うしかないね
845 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 20:32:34 ID:HabAm56l.net] 実務上はどうです? バッチの方が情報多いからいいんですか?
846 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 21:04:50.01 ID:mm84GRB0.net] >>809 どういう現場か知らないけど Widn7 SP1 PSv2 縛り なんて現場でPS書きたいとか思わないね。 使わせてくれる現場なら使うべきだし、そうでないならバッチをシコシコ書くしかないのよ。
847 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 21:27:53 ID:QZ+HyrOs.net] シコシコかくのよ
848 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 22:11:19 ID:JNM2fzED.net] PSでできること=C#でできることだからバッチとは全然できることが違うよ PSv2でも十分バッチとは天地の差がある
849 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 22:22:36 ID:5eIQQTQm.net] 元の質問が、「バッチでやるような処理でも」なんだけどな ちゃんと読んでるか?
850 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 23:24:38 ID:Gm6SBE/O.net] >>809 情報量ならPowerShellの方が上だし TechnetフォーラムならPowerShellのカテゴリーあるし ポケットリファレンスの著者である牟田口大介まで出没している ストアアプリのインストールとかはPowerShell必須だし バッチのみじゃ書けない物も割と多い 処理の内容は忘れたけどバッチでやれた事を PowerShellで書いたらキー入力を要求されて かえってバッチの方が良かった場合もあるけど そんなパターンは圧倒的に少ないと思う でもウチの場合、PowerShell使いがいないから というのが最大の理由で実務はバッチだらけ 良いか悪いかならきちんとメンテナンスが出来る物が良いであるべき 個人の感想ならばPowerShellって バージョンが上がって非互換が出そうなので避けたい
851 名前:デフォルトの名無しさん [2020/06/04(木) 09:41:35.56 ID:Di3Z81qX.net] 9x系(95/98/Me)のWindows用MS-DOSプロンプトとNT系(それ以外)のWindows用コマンド・プロンプトの違いさえ 意識していれば、バッチファイルの利用は難しくないと思う。 VBScript(WSHことWindows Script Host)の場合は9x系とNT系に関係なく、WSHバージョン5.1以降かどうかさえ 気をつけていれば概ね大丈夫だと思う。 それらに比べてPowerShellは、個人的にはハードルが極めて高い。
852 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 15:05:12.56 ID:iofqxoab.net] >>813 当然「バッチでやるような処理でも」PSなら十二分にこなせるよ このスレで話題になるような変なクセや制限もないしね
853 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 15:12:12.70 ID:iofqxoab.net] >>814 PSはバージョン指定(-vオプション)すればそのバージョンが実行される仕組みを持ってるから互換性についてもある程度クリーンだよ
854 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 15:16:33 ID:efimIni8.net] BATの典型的なものとしては シーケンシャルに ・外部アプリ呼び出し ・ファイルコピーや移動 ・メッセージ表示 であって、こんなものをPowerShellで書く必要は無いし、ステップ数も余分にいる
855 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 21:18:27 ID:U7KCPoET.net] PSの話したいなら該当スレへ ここでするのはスレチ
856 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 09:26:58 ID:YNSaAEsR.net] バッチファイル内で、複数の文字列の一部だけを羅列して、それをまとめて補完したものを変数に入れたい 具体的には set LOGFILES=%LOG%\tech\*.dat %LOG%\prog\*.dat %LOG%\win\*.dat %LOG%\newsplus\*.dat ... のように指定するのではなく setlocal enabledelayed... for %%f in (tech prog win
857 名前: newsplus) do ( set LOGFILES=%LOGFILES% %LOG%\%%f\*.dat ) のようにして、増減や修正を簡単に出来るようにしたい したいんだけど、なんかうまく動いてくれない 何かヒントもらえますか? [] [ここ壊れてます]
858 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 10:14:13 ID:YNSaAEsR.net] 自己解決 どうやらこんな感じで動きそう for %%f in (tech prog win newsplus) do ( call :APPEND %%f ) :APPEND set LOGFILES=%LOGFILES% %LOG%\%%f\*.dat goto :EOF
859 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 11:33:35 ID:xkF+o6Lc.net] >>820 setlocal enabledelayedexpansion for %%f in (tech prog win newsplus) do ( set LOGFILES=!LOGFILES! %LOG%\%%f\*.dat ) じゃダメなの?
860 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 11:53:35.34 ID:YNSaAEsR.net] あれ?出来ますね 実は!で囲むのもやってみた(つもりだった)んだけど (たぶん、どっか別のちょっとしたところでミスしてて) その時はうまく動かなかったんですね 失礼しました
861 名前:810 mailto:sage [2020/06/06(土) 00:36:10 ID:ZNTMwsEj.net] >>817 業務システムのくせに -v の無いPSスクリプトを Win7 上で動かしてるクソシステム、あるよ。改修したくもないけど。 PS は ver.3 で破壊的変更がなされたから、ver.2 に合わせて勉強するだけ無駄だと言われている。 core になって COM も切られたから Word や Excel ファイルへのアクセスも今後どーなんの?的な段階。 また、PS が「管理の自動化」を目指しているのに対して、バッチや WSH は「一般ユーザーの定型操作の自動化」を目指しているから方向性自体が違う。 おまけにバッチとWSHはもう仕様変更が無いという強みがある。 等価なものを個人的に PS でリライトしてみる、はいいと思うけど、本番環境に入れるのはNGかな…。
862 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 07:37:38.68 ID:xQo5RGeQ.net] 長々と更新してもcmd変わらず放置 不具合あればPS使えということか バッチに未来は無い
863 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 21:59:44.80 ID:Phlj4K/L.net] cmdはもう更新しないってアナウンス出てなかったっけ?
864 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 22:16:29.17 ID:aAgqnyde.net] バッチ処理って簡単な定時処理に使ってる人がほとんどだろうし 現状維持でこのまま使えたらそれでいいよ
865 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 08:05:01.57 ID:Nip9LUw0.net] 教えてください。 引数以外でショートカットの情報をバッチに渡すことはできますか? バッチ自体のファイル名、パス名を取得する方法はよく見かけますが、、 ショートカットのファイル名や親フォルダの情報をバッチに渡す手段ってやっぱりないですかね?
866 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 10:09:40.34 ID:Rvue1P4U.net] ショートカットって何の?起動したバッチファイルのもの? ショトカ自体は dir *.lnk で取れるけど複数あると特定は面倒臭かったり無理かも どのlnkからバッチが起動されたか?は作業ディレクトリがそのlnkと同じだとか限定条件下でないと無理じゃないかな
867 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 10:41:39.28 ID:Nip9LUw0.net] >>829 やっぱり無理そうですね。 ショートカットのファイル名をショートカットのコマンドラインに渡してバッチに引き渡そうと企んだのですが、、、 %0とか%~dp0とか記述しても記述そのままで%1に渡るだけでした。 何か方法ないのかなと思い、、あきらめます。 ご回答ありがとうございます。
868 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 11:24:19.06 ID:2FaHAA2B.net] ショートカットのプロパティで作業フォルダを弄ればいいだろ。 リンク先のバッチで%cd%参照。 ファイル名なんてリンク先に合わせりゃいいだろ。
869 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 11:26:00.19 ID:Q6c7IGAp.net] >>830 もしショートカットファイルから元のファイル名を取得したいってことなら wmicコマンドとか使えば良いんじゃない? https://stac
870 名前:koverflow.com/a/29650022 [] [ここ壊れてます]
871 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 11:45:22.44 ID:2FaHAA2B.net] プロパティのリンク先に自分のフルパスを追加してもいい リンク先のバッチで%1参照。
872 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:14:20.27 ID:Nip9LUw0.net] >>831 仰る通り。 それがメンドーだな、と思っただけです。 プロパティ弄らずにファイル名変更だけで挙動変えようかと、、、
873 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:15:45.60 ID:Nip9LUw0.net] >>832 そういうの、いろいろありますね。 VBSとかPSとか。 後者をSendToに入れてフォルダ内調査に使ったりしてます。
874 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:16:13.25 ID:Rvue1P4U.net] ショートカット名を動的に生成してダブルクリックだけでリンク先のバッチへ引数として渡したいって事なんじゃないの? ショートカット名を一時ファイル代わりにしたかったんだと思ってたけど
875 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:17:49.77 ID:Nip9LUw0.net] >>833 プロパティ弄るなら、素直に引数指定すれば良さそうです。 みなさんご意見ありがとうございます。
876 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:18:03.34 ID:2FaHAA2B.net] 作業フォルダを空欄にするだけなんだけど
877 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:20:20.62 ID:Nip9LUw0.net] >>836 ショートカットを別フォルダにコピーするだけで、そのショートカットの親フォルダをバッチに渡すということをしたかったです。 ただのめんどくさがりです。すみません。
878 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:25:13.85 ID:Nip9LUw0.net] ショートカットの代わりにバッチを呼ぶためのバッチを作ればよいことに今気づきました。 ショートカットのコマンドラインで自分を参照する記述が出来そうもないことも確認できたので収穫でした。 みなさんおつきあい頂きありがとうございます。
879 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:32:21.09 ID:Rvue1P4U.net] >>839 それなら >>838 で可能 作業フォルダを空欄にしたショートカットを目的のフォルダにコピーしてダブルクリック echo %cd% で取れる
880 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:47:38 ID:zWNqxiy9.net] 別フォルダにコピーする時点で親フォルダ分かってるんじゃない?
881 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 19:57:43.39 ID:Nip9LUw0.net] >>841 おおお、なるほど! StartInを指定しなければ、CurrentDirectoryは移動しないのか。 リンクファイル名の方は無理そうですが、親フォルダはこれでいけそうです。 感謝!! VBAのApplication.Callerみたいなのが書ければいいんですけどね。
882 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 20:09:16.72 ID:2FaHAA2B.net] 作業フォルダが空だと他所のフォルダからD&Dしたらそっちになるけどな。 あと、管理者権限で実行したらC:\WINDOWS\system32になったりする
883 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 20:15:00.02 ID:Nip9LUw0.net] >>844 そうなりますね。気をつけます。
884 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 21:58:02.09 ID:Nip9LUw0.net] すみません。もう1つ質問です。 バッチ自身を最小化して起動するときどうされてますか? これが理由の1つでショートカット起動していたのですが、代わりにバッチを使うとコンソールが表示されてしまいます。 サイトでよく見かける、@If not "%~0"... というやつは、Win7のためか機能しません。 普段は固定的に行う場合は、ショートカットやVBSをはさみ最小化実行しているのですが、、 うまい方法があれば教えてください。
885 名前:デフォルトの名無しさん [2020/06/15(月) 14:19:29.38 ID:YYrFY+5A.net] 無い
886 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 19:14:00.08 ID:X3dRtIQ2.net] >>847 了解!
887 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 19:21:32.94 ID:bzzr0fEY.net] start
888 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 21:31:09.57 ID:xZsc1Mf0.net] pause
889 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 06:44:47 ID:zfRgO9so.net] PowerShell なら、 # ショートカットファイルのフルパス $fn = "フルパス" # ショートカットファイル(.lnk)から、リンク先パス(TargetPath)を読み取る $link = $wsh.CreateShortcut( $fn ) # 画面に表示する Write-Host "$( $fn )`
890 名前:nTargetFile: $( $link.TargetPath )" [] [ここ壊れてます]
891 名前:851 mailto:sage [2020/06/16(火) 06:47:46 ID:zfRgO9so.net] >>851 修正 一番上に、これを入れて $wsh = New-Object -ComObject WScript.Shell
892 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 09:13:19.74 ID:n71ojSL1.net] wsh呼び出すならvbsでも使えばいいわけで…
893 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 15:49:55.53 ID:0FicG8jZ.net] リンク先バッチ本体をコピーしたらあかんの?
894 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 16:06:26.98 ID:0FicG8jZ.net] 動的に変化するのか?
895 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 22:29:49.48 ID:woSalLPH.net] >>851 あれ、まだ続いてましたね。 えーと、リンクファイルの情報を取得するのではなくて、リンク先からリンク元を取得できないか、という相談でした。 結論としては、.LnkのStartInをクリアすることでBatch側から%CD%にて.Lnkの親フォルダは取得可能だが、 .Lnkのファイル名を取得する手段はない、と認識しました。 もしかして、PowerShellなら取得できますか?
896 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 22:38:20.68 ID:woSalLPH.net] >>854 Batchを複製すればできますね。 でも仕様を変更したくなったときばらまいたBatchをすべてメンテするのがメンドーなので設計は1カ所にしておきたい。 ショートカットファイルだとリンク先からリンク元のファイル名を取得できない (Pathは取得可)のでこれを別のバッチで代用すれば対応できる。 (現時点、これで代用してます) でもこんどは起動がショートカットからBatchに変更されたことで最小化起動ができなくなった。 で、バッチを最小化で生起動する方法は、、無い!という結論です。 というところで諦めています。
897 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 23:14:22.53 ID:yH2E1+y3.net] おまえ要領を得ないって良く言われるだろ 何を最小化したいの?コンソール画面?バッチから起動したアプリ? アプリ起動にバッチを介するようになって困っているようだけど コンソールはすぐ消えるから大して困らんでしょ その一瞬も困るってこと? コンソールならバッチへのショートカットのプロパティに[実行時の大きさ] アプリならstart /min そのバッチを貼れない理由でもあるの?
898 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 23:24:30.52 ID:C/0BZ8DU.net] そんなへんなことするようなものは俺なら要らんと言うな 説明書に手順を書くなり、起動用のps1やvbsでも同梱しとけばいいと思う
899 名前:デフォルトの名無しさん [2020/06/16(火) 23:48:59.36 ID:zfRgO9so.net] 漏れなんか、ダブルクリックで、Ruby スクリプトを実行するために、 test.vbs に、起動部分だけを書いてる CreateObject("WScript.Shell").Run "ruby .\script.rb", 0
900 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 02:23:38.88 ID:1C8hVY+b.net] もうやめろ。くだらねえ
901 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 03:27:41.75 ID:pABU+G65.net] だから結論はでた、諦めてると言ってるだろ。 返してくれた方がいたので返答しただけ。 ただ一瞬コンソールが表示される挙動がきっちゃないからキライってだけ。 はい、本件Close。 有用な情報提供いただいた皆さんありがとう。
902 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 07:10:17.14 ID:jbUYdqRV.net] よくわからんけど start /b /min を使うのではだめなのかしら と独り言
903 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 08:16:21.96 ID:tu0J1xQb.net] >>863 /bスイッチって何でしたっけ?
904 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 03:29:25.23 ID:00is865e.net] >>858 >その一瞬も困るってこと? 悪いことしたい時に、それでは困るよね?
905 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 07:09:08.15 ID:EpKOfb9E.net] >>865 単なる気分の問題 本件はクローズ。皆さんありがとうね
906 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 15:00:22.59 ID:L9lBZl+g.net] そんな自己満足でひとりよがりなものを配布したりして欲しくはないかな
907 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 20:51:24.52 ID:sqKtSFf3.net] ここまでの流れで誰も配布するなんて話してないのにお前
908 名前:は何を言ってるんだ? 866の好きにさせとけよ [] [ここ壊れてます]
909 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 22:53:59.19 ID:EpKOfb9E.net] >>868 はい、自分用です。ご安心を。 中身もつまらない小物ツールですので。 技術的な情報が知りたかっただけです。 また教えてください。
910 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 00:05:08.15 ID:HgOFevSP.net] クローズしたそうだが コンソール画面を見たくないのなら レイアウトの位置を右下に詰めろ。 ほとんど見えなくなるぞ
911 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 00:27:18.52 ID:TPV7TWbz.net] 殆どじゃダメなんだよ 神経質な奴に見つけられてしまう
912 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 00:33:46 ID:HgOFevSP.net] お前、質問者か?
913 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 03:17:24.40 ID:7A38Sw4m.net] テキストファイルから空行を除く方法 findstr /R . ただし空白やタブのある空行は失敗
914 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 05:11:07.46 ID:HgOFevSP.net] >>873 タブやスペースだけの行をスキップするには findstr /r /c:"[^ ]" ^と]の間にタブとスペース入力 バッチではエディタでタブ入力できるが コマンドプロンプトでタブ入力するには cmd /f:off で
915 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 05:34:11.61 ID:HgOFevSP.net] for〜do〜echoでやった方がいいかも
916 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 20:08:23.94 ID:dZCme2QN.net] テキストファイルに入ってる文字列を 一行ごとに読み込んで フォルダを作るバッチをつくったのですが 半角スペースの文字列が分割されてしまいます これって対応策ありますか?
917 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 20:23:13.74 ID:7ozUCHmg.net] >>876 for /f "tokens=*" %%i in (data.txt) do md "%%~i"
918 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 21:21:38 ID:elMokmc1.net] >>877 できたサンクス 助かった
919 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 15:01:18.03 ID:SwuJ9TNP.net] ファイル名全角英字の大文字小文字を同じとみなしていた A.txt に他フォルダのa.txtを上書きコピーしてもA,txtのままだった Aaは全角英字 芸が細かい、いいか悪いかは別として
920 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:03:57 ID:PSeL/c0z.net] ワイルドカードの ? の仕様がイマイチ分からない abc と abc1 のファイルがあったとして >dir /b abc? abc abc1 >dir /b ?abc ファイルが見つかりません >dir /b a?bc ファイルが見つかりません なぜ見つからないのか 1ないし0個の文字じゃないのか
921 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:07:42 ID:/pl8PJcc.net] ワイルドカードで?は任意の1文字を示す
922 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:14:29.14 ID:PSeL/c0z.net] では abc? で abc が一致するのはなぜ
923 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:19:02.81 ID:/pl8PJcc.net] abc.でマッチするからだと思う
924 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:21:41.87 ID:PSeL/c0z.net] なるほど。ありがとう
925 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:28:18.05 ID:PSeL/c0z.net] abc?? や abc??? でも一致するようだ
926 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:49:40.78 ID:tIigavUn.net] https://www.pg-fl.jp/program/dos/doscmd/str_wildcard.htm kayuitoko.blog129.fc2.com/blog-entry-2.html
927 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:59:31.31 ID:PSeL/c0z.net] abc??.?? とかも一致するね。たぶん仕様というよりバグ
928 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 21:39:19 ID:clO9Gt1K.net] ピリオドが絡むとワイルドカードはおかしな動きするよ。 filename_yyyy.mm.dd.dat みたいなもんが dir *_????.??.??.dat で引っかからない。>>887 の言う通り、多分バグ。ピリオド以降を拡張子とみなすみたい。 filename_yyyy-mm-dd.dat として dir *_????-??-??.dat だとちゃんと引っかかるから、俺はファイル名に日付を付けるなら - を使っている。
929 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 07:22:43.96 ID:sbIkpZ+y.net] ワイルドカードは色々とおかしい >echo > "abc" & echo > "
930 名前: abc" >for %i in ("abc*") do @echo "%i" "abc" " abc" [] [ここ壊れてます]
931 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 07:57:25.88 ID:9hqgfVHi.net] そっちはたぶん8.3形式が引っかかってるんだろう
932 名前:デフォルトの名無しさん [2020/07/04(土) 22:02:55.18 ID:r0U5W+Xd.net] PC初心者です。 初めてバッチファイルの作成にチャレンジしています。 ドライブ(丸ごと)→別のドライブのフォルダ、にバックアップを取りたくてrobocopyを使ってミラーコピーをしました。 コピーはうまくいくのですが、コピーする度にコピー先に「Recovery」という名の空フォルダが作成されてしまいます。 これはなぜでしょうか?回避方法はありますか?
933 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 22:37:12.45 ID:KIcU78VY.net] >>891 ggrks
934 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 22:39:29.92 ID:QUXtQ3do.net] たぶん、A ファイルがあって、それを上書きする時に、 安全確保のために一旦、別のフォルダ・Recovery へコピーしてから、上書きして、 正常に上書きした後に、Recovery内のA を削除している ただ、すべて正常に済んだ後に、Recoveryフォルダを削除し忘れているのだろう
935 名前:891 mailto:sage [2020/07/05(日) 11:17:14.37 ID:eLIuBas1.net] >>893 ありがとうございます。 バックアップ自体は問題なさそうなので、このままで使ってみようと思います。
936 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 15:06:46.22 ID:1amJ61U+.net] >>893 >>894 コピー元のドライブに SH 属性(システム属性+隠し属性)で「Recovery」っていう空のフォルダがあるはずなの。 ドライブを丸ごと robocopy すると強制的に SH 属性が付くから、最後に attrib -S -H してやる必要があるし、>>894 はそれをしてると思う。 そしたら「Recovery」が見えるようになった、というだけの話でしょ…これ。 コピー元のルートディレクトリに行って「dir /a」して確認してみ?
937 名前:891 mailto:sage [2020/07/07(火) 00:32:35.56 ID:TndHy5rX.net] >>895 「dir /a」して確認してみたところ、仰る通りでした!「Recovery」フォルダは不要なので削除しました。 有難うございました!
938 名前:デフォルトの名無しさん [2020/07/08(水) 04:28:57.30 ID:lPT19RKJ.net] 超初歩的な質問いいですか? @https://i.imgur.com/hyYJbJE.png Ahttps://i.imgur.com/REf3PXQ.png Bhttps://i.imgur.com/UIqO0ye.png @のCというフォルダを中にある1.txt 2.txtごとAにコピーしてBのようにしたい時、どう入力したらいいですか? すでにBのような状態にある時もコピーして上書きしたいのですが ググれって言われるのはわかってますが、ディレクトリがどうのこうのとか、robocopyだのxcopyだの説明が糞下手くそであんなの理解できるわけないので
939 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 04:57:01.58 ID:xPuqy2ih.net] >>897 せめて、何を試してうまく行かなかった、とか試行錯誤の具体的な 過程があれば説明、答えを教えてくれるひとがいるかも
940 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 05:13:48.40 ID:H59ZusVp.net] >>897 普通にcopy使えよ
941 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 05:29:09.34 ID:plYM8yLW.net] >>897 要件はそれだけか? メッセージを表示しないだとか、\A\Cには他ファイルやサブフォルダがあり それはコピー対象/対象外だとか無いの? \Cは常に同じなら、事前にフォルダを作っておいて、あとは毎回copyだけを実行するだけ A,B,Cが実際には半角空白を含んでいたりしたらパスは""で括ること mkdir C\Users\a\Desktop\B\V\C copy /y C\Users\a\Desktop\A\C\*.txt C:\Users\a\Desktop\B\V\C xcopyを使うなら xcopy /s/e/i/y C:\Users\a\Desktop\A\C C:\Users\a\Desktop\B\V\C 又は xcopy /s/e/i/y C:\Users\a\Desktop\A C:\Users\a\Desktop\B\V
942 名前:デフォルトの名無しさん [2020/07/08(水) 05:44:34.05 ID:lPT19RKJ.net] >>900 どうもありがとうございました。 自分でも色々やって試しててうまくいかず質問したのですが、 原
943 名前:が保存した文字コードがUTF-8だったためでした。 ANSIに変えたらうまくいきました。 [] [ここ壊れてます]
944 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 11:29:53 ID:Z8A6jaoN.net] xcopy よりは、robocopy を使った方が良いのでは? xcopyは、あまり見ない
945 名前:デフォルトの名無しさん [2020/07/08(水) 12:24:18.71 ID:lp5P2pBO.net] dosで使えなくなるだろ
946 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 12:46:00.57 ID:Lb+zauke.net] たしかに、DOSは、Xcopyまでだったか。 pureDOSには、robocopyはないのだな。
947 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 12:56:46.06 ID:plYM8yLW.net] robocopyは絶望的に遅い 複雑な条件がないのならxcopyがいい
948 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 15:01:55.81 ID:z330e5aM.net] robocopyは、ミラーリングで使用したときに、 消される側にフォルダのシンボリックリンクがあると、 リンク先実体フォルダ内のファイルごと消されるというバグが有る。 /xjd /xjf /xj /sl 全部ダメ。 怖くて使えない。
949 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 18:21:45.08 ID:ebRsk5Wi.net] ま?
950 名前:895 mailto:sage [2020/07/08(水) 19:29:53.78 ID:fFkGRU4d.net] >>896 空なら大丈夫だと思うけど、場合によってはそこに WinRE (Windows 回復環境)が入ることがある。 (バグやディスク容量の関係) https://www.atmarkit.co.jp/ait/articles/2002/19/news006.html だから丸っきり不要ってわけでもないのだよ。
951 名前:デフォルトの名無しさん [2020/07/09(木) 01:19:26.67 ID:oG8bZA2s.net] itomo.cocolog-nifty.com/itomolog/2011/06/windows-4df1.html このサイトを参考に実験フォルダにテキストファイルを量産して*.txtで検索するように書き換えて実行したんだけど (ファイル名)が見つかりません。って表示が出るだけで上手くいかないけど何か抜けてるのかな? もちろん対象フォルダには移動している
952 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 02:32:11.02 ID:zMPqHoYq.net] >>909 先頭のecho off をいったん外して、変数がどう展開されてるか確認してみたら?
953 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 04:53:54.78 ID:gEWbrPAM.net] Ruby で作った。 ただし、DryRun なので実際には実行されません! require 'fileutils' # 絶対パスのディレクトリ名の後ろに、* を付けること! # . で始まる、隠し directory, file を除く glob_pattern = "C:/Users/Owner/Documents/*.txt" num = 5 # 更新時刻の新しいものからの順で、フォルダに残しておくファイルの数 Dir.glob( glob_pattern ) .select { |full_path| File.file?( full_path ) } # ファイルのみ処理する .sort_by { |full_path| File.mtime( full_path ) } # 更新時刻の古い順で、ソートする .reverse # 更新時刻の新しい順へ、逆転 .drop( num ) # 新しいものから、num個を処理しない .each { |full_path| FileUtils::DryRun.rm( full_path ) } # ファイルを削除 表示 rm C:/Users/Owner/Documents/a.txt rm C:/Users/Owner/Documents/b.txt
954 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 06:30:12.62 ID:o2t2WZIU.net] rubyなんて論外、PowerShellですらギリアウト ギリアウトだがPowerShellのコマンドラインで標準のエイリアスを使う場合 カレントフォルダの *.txt の最新3個以外をリストアップするには gi *.txt | sort LastWriteTime -Descending | select -Skip 3 削除までやるなら gi *.txt | sort LastWriteTime -Descending | select -Skip 3 | ri エイリアスを使わずに書くと Get-Item *.txt | Sort-Object LastAccessTime -Descending | Select-Object -Skip 3 | Remove-Item
955 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 06:31:35.37 ID:o2t2WZIU.net] ああ LastAccessTimeじゃくてLastWriteTime
956 名前:デフォルトの名無しさん [2020/07/09(木) 13:30:39 ID:oG8bZA2s.net] >>910 初歩的なミスで恥ずかしいですが量産したテキストファイル名に空白が入っている
957 名前:事が原因でした そこで汎用性を持たせるために空白が入ったファイルも検出したいのですがワイルドカードで検索する方法はありますか? [] [ここ壊れてます]
958 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 16:17:08 ID:t1UM8kjV.net] >>914 ファイル名に相当する箇所をクオート
959 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 06:27:24.24 ID:pJbYwVEp.net] https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/set_1 setコマンドのパラメータで/pとか/aとか指定できますがこのアルファベット1文字が何の略か教えてください pはPromptStringかな〜と予想してるんですがaは全く見当がつかないです
960 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 06:51:32 ID:73kyB1S/.net] Arithmetic
961 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 15:46:16.46 ID:nRIpdjFe.net] if 感染者数==0 ( goto campaign ) else ( goto campaign )
962 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 21:08:21.69 ID:NpGOzuTH.net] w
963 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 22:58:28.42 ID:SqApoBlS.net] >>916 MSの英語フォーラムとか 英語版StackOverFlowとか Redditとか で尋ねたら?英語で。 本当に知りたいなら英語圏に聞け。英語圏に。
964 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 23:48:35.91 ID:vc+VU4Sj.net] >>917 が教えてくれてるよ
965 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 23:53:31.66 ID:SqApoBlS.net] >>921 arithmetic(算術) もいいけど algebra(代数)て解釈もあんじゃね?
966 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 00:26:22.36 ID:3qBZIgLF.net] /a は 単純に answer かな
967 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 05:41:06.12 ID:smyagw08.net] >>923 まじで? いや普通にarithmeticでしょw
968 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 11:47:24.17 ID:lU9BoPI+.net] 以降あいうえお作文スレ
969 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 13:33:25.11 ID:d6//+ANU.net] Arithmeticって+-*/のことじゃないの?
970 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 00:25:33.43 ID:C6Q8EyYV.net] +とか-はarithmetic operatorだね
971 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 01:59:17.03 ID:6qVTTMhl.net] 大体は理想通りに出来たのですが時々不要なpathをremで無効にするとstartコマンドがなぜかC:\hoge\を開いてしまうので回避できないでしょうか? バッチ初心者なので汚いのはご容赦下さい SET TARGET_EXE1=C:\hoge\hoge.bat SET TARGET_EXE2=C:\hoge\huge.lnk rem SET TARGET_EXE3=C:\hoge\hege.exe for /l %%i in (1,1,6) do (call :F_NM "%%TARGET_EXE%%i%%") timeout /t 8 > NUL exit 0 :F_NM echo %~nx1 START "" %1 goto :EOF
972 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 05:56:42.11 ID:mgWYGhz7.net] if not "%~1"=="" START "" %1
973 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 08:09:21.26 ID:ddPranTH.net] if exist "%~1" start "" "%~1"
974 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 08:50:03.50 ID:ddPranTH.net] for /l %%i in (1,1,6) do (if defined TARGET_EXE%%i call :F_NM "%%TARGET_EXE%%i%%")
975 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 14:36:51.45 ID:4sfyyT7O.net] >>929 ->>931 ありがとうございます not exist definedの違いなど勉強して盛り込んでみます
976 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 15:31:48 ID:GUFQRDdz.net] >>929 すいません startコマンドのクォーテーションを二重がけにはどんな意味があるのでしょうか?
977 名前:デフォルトの名無しさん [2020/07/18(土) 15:40:41.02 ID:VVrReUQE.net] start /? 最初のは "タイトル"
978 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 19:10:23.40 ID:mgWYGhz7.net] >>933 %1の引用符なしが%~1 だから"%~1"は二重がけではない
979 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 20:08:37.75 ID:xxg3trOa.net] "" START "" に見えたってことなら if not "%~1"=="" ( START "" %1 ) こうね
980 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 00:01:19.79 ID:nPf
] [ここ壊れてます]
981 名前:Uu10f.net mailto: >>933 ちなみに"start"でもダメ 一般的に内部コマンドは引用符で囲むとエラーになる 昔はstartが外部コマンドだった時もあったが [] [ここ壊れてます]
982 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 00:15:51.03 ID:nmSNkapE.net] >>936 完全にこれでしたすみません
983 名前:デフォルトの名無しさん mailto:sage [2020/07/31(金) 20:28:20.67 ID:uhGaPqk6.net] 面白い書き方見付けた c:\APP\DoeView>popd c:\APP>set /p<nul=%date%%time% [pushd:&@pushd doeview >nul 2>&1 && echo ok]||echo fail] 2020/07/31 (金)20:14:34.70 [pushd:ok] c:\APP\DoeView>set /p<nul=%date%%time% [pushd:&@pushd doeview >nul 2>&1 && echo ok]||echo fail] 2020/07/31 (金)20:14:38.48 [pushd:fail]
984 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 00:13:59.61 ID:oGghCVi0.net] >>939 解説お願いします
985 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 01:53:16.42 ID:mxUlZpQQ.net] 他のプログラムと標準入出力でやりとりするバッチファイルを作ろうとしています。 :INPUT set /p INP= if "%INP%"=="コマンド1" ( 処理1 echo 結果1 goto INPUT) if "%INP%"=="コマンド2" ( 処理2 echo 結果2 goto INPUT) … goto INPUT こんな感じにしたんですが、コマンドが連続で送られてくると取りこぼしてしまうようです。 何か対策は無いでしょうか?
986 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 06:07:29.27 ID:hnL660kY.net] 他のとやらが標準出力読めるなら set /p INP=inputok 読めないならこぼさない程度に決め打ちでsleep挟んで送るようにするしか
987 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 10:06:48.10 ID:KdkXblI6.net] >>939 なるほど set /p<nul=%date%%time% [pushd: と @pushd doeview >nul 2>&1 && echo ok]||echo fail] を & でつないだという訳か。で前半を普通の順番に書き直すと set /p =%date%%time% [pushd:<nul で、set /pの変数名を空にすることで、改行をつけないechoの代わりとして使っていると。 後半はpushd doeviewを実行して、成功したらok]、失敗したらfail]を表示してるだけだな。
988 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 15:48:10.34 ID:mxUlZpQQ.net] >>942 やりとり相手のプログラムはバッチファイルでもないし自分で作ったわけでもないので調整できません… やっぱ無理ですかね…
989 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 16:20:21.81 ID:hnL660kY.net] copy nul $tmp.txt hoge.exe >>$tmp.txt for /f "delims=" %%a in ($tmp.txt) do ( if "%%a"=="コマンド1" (処理1 &echo 結果1) if "%%a"=="コマンド2" (処理2 &echo 結果2) … ) こういう風に一旦txtに書き出しじゃダメなん?
990 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 17:49:00.41 ID:y/Re9bvj.net] >>944 実行速度を気にしないゆっくりでいいのなら、 tasklist に実行するプログラムがあれば待機する 実行するプログラムの終了コード(errorlevel)の癖がわかっているなら errorlevelで終わったかそうかわかるかも
991 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 23:16:08 ID:mxUlZpQQ.net] どうも「相手のプログラム」がイメージしづらいようなので、プログラムそのものを貼ります。 将棋所 shogidokoro.starfree.jp/index.html USIプロトコル shogidokoro.starfree.jp/usi.html USIプロトコル対応の将棋エンジンをバッチファイルで作る、という遊びをしようとしています。 現状将棋エンジンとして登録する(usiコマンドに対してid他を返す)ところまではできますが、 対局しようとするとsetoptionとisreadyが連続で送られてきてisreadyを認識できず、readyokを返せない、等でまともに動きません。 デバッグウィンドウからコマンドを送れば一応動きますが… >>945 一旦txtに出力するのは考えましたが、具体的な書き方が思いつきません… 将棋所に登録するバッチファイルと、コマンドを処理するバッチファイルの2つに分ける、 とかも考えたんですが、結局その2つのやり取りをどう
992 名前:キれば良いのか… [] [ここ壊れてます]
993 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 00:01:49.63 ID:SCuZm8dn.net] >エンジンは常に(たとえ思考中であっても)コマンドの受信ができる必要があります guiからのコマンドにどういったものがあるのかまではまだ見てないけどバッチ一つじゃ無理だと思う 制御用兼入出力用Aのバッチと思考エンジンBのバッチの最低2つは要るんじゃないかな Bは候補手をtmpに書き出し続けてguiから時間て言われたらAがtaskkillしてtmp読み取りして返すとか これでもgui側でコマンド送る最低間隔何秒とかを設定出来無いと取りこぼすかも 思考エンジン部分はバッチで出来るだろうけどコマンドやり取りする制御部分はバッチでは厳しいかも
994 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 00:12:10.36 ID:SCuZm8dn.net] > setoptionとisreadyが連続で送られてきてisreadyを認識できず、readyokを返せない あーこの時点で無理なら厳しいね バッファ用としてのプログラムを間に挟まないと で、バッファ挟むくらいならどうせなら制御も…てなるだろうし
995 名前:947 mailto:sage [2020/08/02(日) 15:10:30.75 ID:pqbO4ExB.net] >>949 やっぱそうですか… 残念ですが諦めます ありがとうございました
996 名前:デフォルトの名無しさん [2020/08/07(金) 17:37:19.06 ID:ztGuRGFM.net] フォルダが複数あり、フォルダ内の先頭のファイルネームをフォルダ名としたいです これを フォルダ1 ├ファイル1 ├ファイル2 フォルダ2 ├ファイル1 ├ファイル2 こうしたいです ファイル1 ├ファイル1 ├ファイル2 ファイル1 ├ファイル1 ├ファイル2 フォルダ名が重複した場合の処理も必要かもしれないです バッチは読みにくすぎですね
997 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 22:11:16.88 ID:wnzPeWR5.net] >>951 そもそもツリー表現が変だと思う。 ├フォルダ1 │├ファイル1 │└ファイル2 └フォルダ2 ├ファイル1 └ファイル2 tree コマンドの出力をトラップして改変する方向で考えたら楽なんじゃない?
998 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 22:17:23 ID:5wWI/sIC.net] >>951 エクスプローラーでの表示順と dir コマンドでの表示順は異なるけど それを考慮する必要あるの?
999 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 00:00:00.04 ID:c43C7xo+.net] for /r %%i in (.)で下位フォルダ名取得 そのフォルダ内の最初のファイル名を取得(ソート指定) 対象フォルダ名の変更 もしやるならvbs噛ませると思う
1000 名前:デフォルトの名無しさん [2020/08/08(土) 05:43:20.34 ID:jNP2OM4q.net] >>953 とりあえずいらないですが、名前順で並び替えた場合、先頭にくるものをフォルダ名としたいです
1001 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 08:06:33.19 ID:ulitZ7VR.net] >>955 だからその「名前順で並べ替え」がdirとエクスプローラーで違うって話 https://support.microsoft.com/ja-jp/help/319827/the-sort-order-for-files-and-folders-whose-names-contain-numerals-is-d
1002 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 08:25:04.94 ID:HPaGwZBp.net] どうでも良いことに拘るアホ
1003 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 09:01:08.32 ID:nLoi7MqI.net] どうでもいいと言うならテメーがどっちかに決めろや どうでもいいと言いながらできてからなんで違うんだ?とか言う奴多すぎ
1004 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 09:25:59.89 ID:XY4Xe7zO.net] ところで、質問者本人は、どちらを・・・・。
1005 名前:デフォルトの名無しさん [2020/08/08(土) 09:32:21.16 ID:d2hZRkL/.net] 仕様を全て決めないと取り掛かれないマヌケ多すぎ 無能は本筋から外れたところで発狂してろ
1006 名前:デフォルトの名無しさん [2020/08/08(土) 09:59:17.57 ID:jNP2OM4q.net] >>956 では今回はエクスプローラ側の並び順がいいです
1007 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 10:22:17.59 ID:cJmgrNkw.net] >>960 吠えるしかできない間抜け乙w >>961 ならStrCmpLogicalW()を使わないとダメだからバッチではほぼ無理
1008 名前: PowerShellかC#とかでやった方がいい [] [ここ壊れてます]
1009 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 11:11:14 ID:6XUmF/b8.net] とりあえずこんな感じ?(先頭はdir順) if "%1" neq "" pushd "%~1" for /d %%i in (*) do call :sub "%%~i" popd goto :eof :sub for /f "tokens=*" %%j in ('dir /b /on %1') do ( call :rename %1 "%%~j" goto :eof ) goto :eof :rename ren %1 %2 if errorlevel 0 call :rename-retry %1 %2 goto :eof :rename-retry rem ---todo--- goto :eof
1010 名前:デフォルトの名無しさん [2020/08/08(土) 11:14:22 ID:jNP2OM4q.net] >>962 ではcmdでいいです あるいはpython環境のほうが楽ですか? >>963 cmdのコードは理解が難しいですね、、、
1011 名前:デフォルトの名無しさん [2020/08/08(土) 12:00:51 ID:jNP2OM4q.net] globでやってみます
1012 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 12:16:11.89 ID:XwBZfJ1v.net] リネーム処理とかはもうPSの方がいいんじゃない? @echo off &setlocal enabledelayedexpansion for /f "delims=" %%G in ('dir /ad /b') do ( set N= for /f "usebackq delims=" %%H in (`dir /a-d /b "%%~G" 2^>nul`) do if not "%%~H"=="" if not defined N set "N=%%~nH" if defined N ( if not exist "%%~dpG!N!" (ren "%%~G" "!N!") else ( set dt=!date:~0,10!!time: =0! set dt=!dt:/=! set dt=!dt::=! ren "%%~G" "!N!_!dt!" ) ) ) pause &exit /b
1013 名前:デフォルトの名無しさん [2020/08/08(土) 14:01:14.15 ID:jNP2OM4q.net] pythonでは向いてないですか
1014 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 15:20:59.87 ID:IdUt1ux3.net] pythonはスレチ
1015 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 15:22:12.94 ID:0U8ymD0p.net] >>967 ならPythonスレで聞けよ…
1016 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 16:11:06.79 ID:Uh3gedSc.net] dir /ad /b /s > tmp.txt とかで処理対象のディレクトリ名をテキストに落としてから wshでリネーム用のバッチファイルを作る方が楽かな wshではテキストを一括読みして変数に入れて テキストを順次読みしながら↑の変数の内容をバッチファイルのコマンドに変更してく 下位ディレクトリや同一フォルダ名になるときの判定などもしやすい もし失敗しても、原因を見つけやすいしリカバリーもしやすい
1017 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 04:55:36 ID:z2n3MQIn.net] 仕様がないと取りかかれないと言うが 発注者が仕様を曖昧にしておくほうが罪深いだろ 要件定義が甘くて泣きをみるのはいつも現場だ
1018 名前:デフォルトの名無しさん [2020/08/09(日) 05:42:25.80 ID:KFfdng53.net] Ruby で、チェックツールを作った 隠しファイル・ディレクトリは、どう扱うのか? ファイル名に、. がある場合に、どうするのか? require 'pathname' p base_dir = Pathname.new( "C:/Users/Owner/Documents/test/" ) folders = base_dir.children.select( &:directory? ) # 直下のディレクトリのみ p folders.length, folders files = folders.map { |folder| folder.children.select( &:file? ).first } # 直下の最初のファイルのみ # nil は、直下にファイルが存在しない、ディレクトリ nil_cnt = files.count( &:nil? ) p files.length, nil_cnt, files # compact で、nil の要素を省く hash = files.compact.each_with_object( { } ) do |file, hash| filename = file.basename.to_s # ファイル名を、ハッシュに追加していく if hash.has_key? filename # ハッシュに、既に追加されていれば hash[ filename ] += 1 else hash[ filename ] = 1 end end # 2 以上のもの、つまり、同じファイル名になったものを表示する p hash, hash.select { |key, val| val >= 2 }
1019 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 06:16:13.05 ID:wnSURbps.net] そろそろ出てくるかと思ってた
1020 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 06:38:11.28 ID:fObB6/0g.net] 予
1021 名前:ェ通り? [] [ここ壊れてます]
1022 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 08:51:35.00 ID:AwQ8dIl5.net] >>971 それはSEが無能なだけ 一から十まで決定しなくても開発は進められる
1023 名前:デフォルトの名無しさん [2020/08/09(日) 16:47:47.63 ID:0zxLTv88.net] 典型的な無能の発言だな
1024 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 23:22:34.78 ID:TBMXuXvF.net] >>972 オワコンRubyジジイが出てきたか 困るよね、こういう老害 >>975 進められるけど手戻りして予算オーバーするわけね お前が無能
1025 名前:デフォルトの名無しさん [2020/08/10(月) 01:55:02.34 ID:9+h/1Osf.net] >>977 > 進められるけど手戻りして予算オーバーする マヌケが要件定義を担当するとそうなるねw バカな開発チームだと、なぜか「ユーザーが悪い」という認識になるww
1026 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 03:38:30.58 ID:1F6bB0mG.net] あいまいなのはユーザーが自分でも要求を把握しきっていないためだから あとでこうしてくれやっぱりああしてくれとコロコロと仕様変更してくるのが常だろ
1027 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 04:21:21.96 ID:mFEy/HZR.net] > あいまいなのはユーザーが自分でも要求を把握しきっていないため ブレない軸を導き出せないような無能SEは多いよね ある程度ブレてもダメージが少ないように開発するのが主流ですよ
1028 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 11:53:14.80 ID:ZLJuvAm6.net] ある程度ブレても、いいように開発できればいいのですけれどもね。 時折、ニュースでも、開発できなかったということで、クライアント側と、 メーカー側で裁判になっていますから、難しいのだろうと思うのですが。
1029 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 21:32:34 ID:+SLQPb+P.net] >>981 それは折衝役がシステム開発に疎いだけ 営業トークだけの人間が事態を悪化させる
1030 名前:デフォルトの名無しさん [2020/08/13(木) 21:47:50.59 ID:5FyzI8Jm.net] Soft\Soft.ini 12 LastCheck = Mon Aug 3 00:00:00 2020 13 LastUpdate = Mon Aug 3 00:00:00 2020 Soft\Plugins\update.txt 1 Update time: Wed Aug 12 23:59:59 2020 Soft.iniの12行目と13行目「Mon 〜 2020」を update.txtの1行目「Wed 〜 2020」から置換して 12 LastCheck = Wed Aug 12 23:59:59 2020 13 LastUpdate = Wed Aug 12 23:59:59 2020 のように上書きしたいのですが batファイルでどのように書けば出来ますか?
1031 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 22:00:40.82 ID:E452L2zK.net] >>983 情報不足。 ・Soft.ini の絶対に12行目と13行目か?んなこたぁねぇだろ。 ・update の日付が更新されなかった場合はどうするの? ・ていうか .ini で「=」の左右に半角空白を入れるってどういうアプリだ? 書きようはあるが、for /? と打って自分で調べた方が早いだろ、これは。 どこかの新入社員だとか学生の課題っぽいな…
1032 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 08:32:48.63 ID:SCMnTycc.net] Ruby では、これで設定できる require 'inifile' str = "Wed Aug 12 23:59:59 2020" ini = IniFile.new( :filename => "test.ini" ) ini[ "abc" ] = { "LastCheck" => str, "LastUpdate" => str } ini.write( ) # save 結果 [abc] LastCheck = Wed Aug 12 23:59:59 2020 LastUpdate = Wed Aug 12 23:59:59 2020
1033 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 09:14:47.97 ID:oJspCYOK.net] イヤミでは、なく止したら? <Ruby
1034 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 09:32:16.73 ID:cdtRNbgQ.net] Swiss File Knife
1035 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 09:39:33.54 ID:dCe/n24a.net] ・
1036 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 14:59:12.49 ID:uGqrrAzw.net] >>983 @echo off set src=Plugins\update.txt set ini=Soft.ini for /f "usebackq tokens=1* delims=:" %%G in (`findstr /c:"Update time" "%src%"`) do set "VER_UT=%%H" for /f "usebackq tokens=1* delims==" %%G in (`findstr /c:"LastUpdate" "%ini%"`) do set "VER_IT=%%H" REM 比較するならここで処理 REM echo "%VER_UT%" "%VER_IT%" ren "%ini%" "%ini%.bak" && copy nul "%ini%" || (echo ERROR &pause &exit /b) for /f "usebackq tokens=1* delims==" %%G in ("%ini%.bak") do ( if "%%G"=="LastCheck " ( >>"%ini%" echo %%G=%VER_UT% ) else ( if "%%G"=="LastUpdate " ( >>"%ini%" echo %%G=%VER_UT% ) else ( >>"%ini%" echo %%G=%%H ) ) ) REM 空行消したくなければ findstrで読んで行番号を表示させる
1037 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 21:06:33 ID:II+YlR7/.net] ・
1038 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 22:02:35.58 ID:TmzvbeJo.net] >>995 ウンコみたいにダサいコードをよく晒せるな。 生きてて楽しい?
1039 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 22:14:12.37 ID:B6QaDwta.net] 未来予知乙 生きてる価値もないなw
1040 名前:デフォルトの名無しさん [2020/08/14(金) 22:43:27 ID:9FGl+Ien.net] 低能Ruby厨か
1041 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 23:06:43.67 ID:TmzvbeJo.net] リダイレクトカードオープン! >>991 から >>995 へのアンカーは >>985 へリダイレクトされる! が、Ruby爺は人格障害者だった! 精神的ダメージを受けていない! Ruby爺がVZ爺を召喚しようとしている! が、自分自身だったので召喚できない! Ruby爺がダサいコードを唱え始めた! 似非プログラマーは発狂した! 歴戦のプログラマーは何も感じていない! 歴戦のプログラマーの攻撃! Ruby爺は5のダメージ! 歴戦のプログラマーはRuby爺をやっつけた! 経験値を0exp、ゴールドを0G 手に入れた! 「何だよ無職ニートの爺かよ…」と歴戦のプログラマーは思った。
1042 名前:デフォルトの名無しさん [2020/08/14(金) 23:10:45 ID:SCMnTycc.net] Windows には、ini ファイルを読み書きできる、コマンド・アプリは無いの?
1043 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 23:35:08.04 ID:LY+T9Pmp.net] EDLIN
1044 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 00:03:00.44 ID:fUIncIgN.net] ・
1045 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 01:45:30.34 ID:t8slxubu.net] 次スレは?
1046 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 02:14:16.82 ID:RWxrHj8y.net] https://www.vector.co.jp/vpack/filearea/dos/util/bat/
1047 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 06:59:18.06 ID:R7NunwzB.net] 質問いいでしょうか
1048 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 632日 16時間 7分 11秒
1049 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています