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/
756 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 22:54:20 ID:h/bjIQIw.net] rubyはスレ違い
757 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 23:04:39.20 ID:s3lLVMWt.net] 3桁連番付けただけ @echo off & set n=1001 for %%i in (*.txt) do set a=%%i& call :x goto :eof :x ren "%a%" "%n:~1%-%a%" & set /a n+=1
758 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 23:14:39.66 ID:J0u+GdjC.net] リネームは結構難しい リネーム後のファイルが再びリネーム対象となる場合がある
759 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 23:27:06 ID:alPdontK.net] set N=1000 :LOOP if "%~1"=="" exit /b set /a N+=1 ren "%~1" "%N:~-3% %~nx1" shift goto :LOOP
760 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 23:28:37 ID:s3lLVMWt.net] リネーム後のファイル名が既存だったりするし
761 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 23:49:32 ID:GY5lnYbX.net] リネームは一覧を一旦ファイルに出力してから回した方が安全だよ それとファイル名にUNICODE文字が混ざってる場合も考慮するとバッチファイルではやらん方がいいよ
762 名前:vbsかjsかpowershell [] [ここ壊れてます]
763 名前:724 mailto:sage [2020/04/21(火) 23:57:26 ID:HADG6GDb.net] >>724 のRuby では最初に、Dir.glob( "C:/Users/Owner/test/*" ) で、そのフォルダ内のすべてのファイルを取得しているから、 各ファイルを、rename していく途中で、 rename後のファイルを、再びrenameすることはない
764 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 00:04:16 ID:vEO7RF6u.net] >>730 ファイル出力というかfor/fでdir出力の取り込みでいいんじゃね? UNICODE文字は関係あるかね?
765 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 06:52:59.32 ID:gobEj/px.net] >>721 @echo off & set "n=1001" & set t=tmp_dir md %t% & for %%i in (*.txt) do set a=%%i& call :x move %t%\* . > nul & rd %t% & goto :eof :x move "%a%" "%t%\%n:~1%-%a%" > nul & set /a n+=1 tmp_dirの名前は何でもいいが既存の名前を避けてください。
766 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 09:12:13 ID:UZ0N9G3p.net] >>732 >UNICODE文字は関係あるかね? SJISに含まれてない文字が入ってると酷いことになる
767 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 10:16:03 ID:MJO3kN2U.net] 駄目文字のせいでSJISコードがバグると言うならまだわかるが その逆って意味がわからないな MSは全くテストしてないってことか
768 名前:デフォルトの名無しさん [2020/04/22(水) 11:07:12 ID:/W5c3Vma.net] >>722-735 どうも 勉強中です
769 名前:デフォルトの名無しさん [2020/04/22(水) 11:53:22 ID:/W5c3Vma.net] 複数行を一行にまとめる場合は、&でつなぐんでしょうか? これが改行と同じ意味でしょうかね。
770 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 12:07:17 ID:vEO7RF6u.net] >>736 @echo off & set n=1001& chcp 65001 > nul for /f "delims="eol^= %%i in ('dir /b *.txt') do set a=%%i& call :x goto :eof :x ren "%a%" "%n:~1%-%a%" & set /a n+=1 >>734 コードページ変えればいいだけ
771 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 19:08:42.79 ID:nR8TNEgs.net] >>737 複数行をまとめるって、、 文字列の足し算の話? コマンドを複数行に分割して記述する話? (継続文字のこと?)
772 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 19:11:46 ID:nR8TNEgs.net] >>739 または複数コマンドを一行で記述する話?
773 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 20:05:53.95 ID:j1ZYXyL3.net] >>735 コマンドプロンプトは自体はUNICODE対応 各種コマンドもUNICODE対応 だけどバッチファイルは過去の互換性が必要なので デフォルトではOSの設定(日本語だとSJIS)の文字コードとして使われる。 その設定はchcpで変えることが出来る 単にコマンド呼び出しをしてるだけならUNICODEとして扱われるが forでバッチファイルの世界に招き入れたら、 chcpの設定によって文字コードの変換が行われる テストはしてるだろ。この文字コード変換は仕様なので バッチファイルでUNICODE文字を扱いたければchcpで UTF-8に変更しなければならないというだけのこと
774 名前:デフォルトの名無しさん [2020/04/23(木) 06:47:17 ID:153+oMoq.net] >>739 バッチファイルではなくて、複数行をコマンドプロンプト上で実行したい場合があったりします
775 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 08:24:04.38 ID:5iduMLE+.net] >>742 複数行をコピペじゃ駄目なの? 例えば、この内容をメモ帳に記述しておいて rem ―- ここから ―― dism /online /cleanup-image /restorehealth sfc /scannow rem ―- ここまで ―- 4行をコピペする
776 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 09:07:36 ID:Z6s7Y3Lu.net] >>742 複数コマンドを1行で実行したいということなら、、、 A & B ... A実行後にBを実行 A | B ... Aの実行結果をBに渡して実行 A && B ... Aが成功したらBを実行 A || B ... Aが失敗したらBを実行 長いコマンドを複数行に分割したいなら、、、 Sentence1 ^<改行> Sentence2 (サーカムフレックスで継続)
777 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 12:04:05.59 ID:qTwHi2aC.net] ()で囲めばいい。 (timeout /t 300 cd d f:\hoge for %f in ( *.jpg ) do ( ・・・ ) ) 正式名称が何かは知らないが勝手にブ
778 名前:ロックと呼んでる。 [] [ここ壊れてます]
779 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 14:59:02.07 ID:WFX6w8Jo.net] >>744 そういうのがあるのか、| 以外知らなかった
780 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 14:59:42.71 ID:WFX6w8Jo.net] >>745 これも知らなかった
781 名前:デフォルトの名無しさん [2020/04/23(木) 15:25:29.03 ID:153+oMoq.net] >>743 コピペでももちろんいいですが、知っておきたかったです
782 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 16:03:20.39 ID:eZrYYRVL.net] なんでバッチ嫌なの?
783 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 17:31:56.25 ID:P2MaiEJS.net] >>748 だったらこんなところで聞くんじゃなくて 一次資料に当たる努力をしなよ
784 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 21:20:47 ID:M8I+Acr1.net] >>745 それ駄目。 遅延変数展開しないと痛い目に遭うよ。
785 名前:デフォルトの名無しさん [2020/04/26(日) 18:05:24 ID:FVxXRtXH.net] 連番をつけるコードでまだ躓いています hoge.txt hogehoge.txt を hoge(1).txt hogehoge(2).txt としたいです echo off & for %i in (*.txt) do (ren %i ???) このはてな部分に連番を指定するためにインデックスを指定しないといけないと思うんですが、%i自体にはファイル名が入っていると思います。インデックスは取れるんでしょうか?
786 名前:デフォルトの名無しさん [2020/04/26(日) 18:36:58 ID:FVxXRtXH.net] バッチでset /aなどのオプションがありますが、/aは計算を伴う場合に使うそうです。 この/aに意味はあるのですか? 何らかの単語の略だと覚えやすいんですが。
787 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 18:40:50 ID:Pfsg7A5O.net] その程度ぐぐれば出てくるでしょ インデックスのカウント用変数が必要+変数の遅延展開 丸括弧のエスケープが必要 aはarithmeticの略
788 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 20:15:42 ID:cczyU4e/.net] @echo off & set n=1& chcp 65001 > nul for /f "delims="eol^= %%i in ('dir /b *.txt') do set a=%%i& call :x "%%a%%" goto :eof :x ren %1 "%~n1(%n%)%~x1" & set /a n+=1
789 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 22:00:20.95 ID:zKIVBOto.net] 1Point ノウハウ dir ですべてのファイル、フォルダを表示したい場合は dir /A
790 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 22:18:32 ID:DxwpR+0O.net] 普通に do call :x "%%~i" でいいと思うんだが何故いちいち set a=%%i とかしてるの? 何か理由あるん?
791 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 22:22:15 ID:YV1WqKFq.net] >>757 ファイル名に「%」入ってるとマズくない?
792 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 05:49:29 ID:ceHl0duT.net] シェルスクリプトってお手軽省略表記にこだわりすぎるあまり エスケープ処理が複雑化しバグりやすくなって本末転倒だよな
793 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 05:57:02 ID:l2PF55i3.net] そんなところで躓く能なしは、他の言語で書いても同じだよ
794 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 13:01:40 ID:DKHJb1hS.net] 他の言語でもエスケープは必要なことはあるし同じこと ただbatのように自身を置換して逐次実行するするようなことは eval系の命令を使う場合なのでほぼ無いに等しいので意識されないだけ
795 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 16:44:00 ID:3RXW9/E3.net] 要するに分かりにくい ここで初心者にイロハから質問されてもレスがしにくい リネームソフトでも使え
796 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 17:37:46 ID:7TaGv6sC.net] >>759 シェルスクリプトでエスケープ処理が複雑なんて したことがないんだがどういうケース? むしろバッチファイルのほうがややこしすぎる バッチファイルでダブルクォートはいつつけるか言える? スペースが含まれたファイル名とか バッチファイルでこれの出力結果は echo "C:\Program Files" ↓これです。(ダブルクォート含む) "C:\Program Files"
797 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 18:05:03 ID:3RXW9/E3.net] どういうケースって、すぐ上の奴だろ
798 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 18:18:07 ID:7TaGv6sC.net] >>764 もしかしてバッチファイルとシェルスクリプトの違いわかってないの?
799 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 18:19:14 ID:7TaGv6sC.net] シェルスクリプトっていうのはUnixやLinuxの /bin/shとかbashのことなんだが
800 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 18:20:52 ID:RB8xSOb3.net] ファイル数
801 名前:からんけどリネームソフト使えば一分かからんで終了 [] [ここ壊れてます]
802 名前:デフォルトの名無しさん [2020/04/28(火) 20:35:28 ID:C/yTg51l.net] >>766 俺の定義ではバッチファイルはシェルスクリプトだ config.sysに shell=command.com /e:1024 とか書いてたからな
803 名前:デフォルトの名無しさん [2020/04/28(火) 20:39:22 ID:C/yTg51l.net] ちなみにMS-DOSにはエスケープ文字なんて無い
804 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 20:40:45 ID:f4hk4dsD.net] >>768 意味わかんないから調べたが、 今では全く通用しない話じゃねーかよ。 てめーの定義を押し付けんな。
805 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 20:51:25.37 ID:l2PF55i3.net] >>770 頑張ってググってきたんだからほめてやれよ
806 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 22:38:03.31 ID:0mXw36Cx.net] >>769 Delims句でイコールを区切り文字にしたいときはサーカムフレックスでエスケープする必要があるときがあるけどね。
807 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 23:55:09.09 ID:3RXW9/E3.net] cmdはシェルだ。定義も糞もない
808 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 00:05:03 ID:kLiglYQz.net] >>768 cmdじゃないじゃん
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