Windowsのコマンドプロンプト(cmd.exe)、使ってる? 174
補完 部門より
Windows からコマンドプロンプトが簡単にはなくならないことについて、Microsoft が再び解説している (Educator Developer Blog の記事、 On MSFT の記事、 BetaNews の記事)。
コマンドプロンプト (cmd.exe) の運命については、Windows 10 Insider Preview で標準のコマンドシェルが Windows PowerShell に置き換えられた時にも話題となり、Microsoft では Windows のビルドでも使用する多数の cmd スクリプトの実行環境などとして必要なコマンドプロンプトが簡単にはなくならないと明言していた。
今回は Windows ターミナルがコマンドプロンプトを置き換えるのではないかと話題になっていることを受けたものだという。そもそも Windows ターミナルはコマンドプロンプトや Windows PowerShell、Linux シェルなどのコマンドシェルプログラムを実行するためのホストプログラムであり、コマンドプロンプトを置き換える性質のものではない。
記事ではその違いを解説する Open at Microsoft のエピソードを紹介しつつ、Windows ターミナルがコマンドプロンプトを置き換える可能性の有無に言及するなど混同した様子もみられるが、結論として Windows ターミナルや PowerShell が Windows のコマンドライン環境でコマンドプロンプトを補完する存在だと述べている。
最近コマンドライン環境が注目される AI 開発の場面ではコマンドプロンプトがメインとなることはないが、多くのユーザーがコマンドの文法や構造を熟知したコマンドプロンプトの人気が簡単に失われることはないという。コマンドプロンプトは現在も多くの Windows ユーザーの心に特別な場所を占めているとのこと。スラドの皆さんはコマンドプロンプトに愛着があるだろうか。
割と使えると思うコマンド(ついでに 備忘録) (スコア:5, 参考になる)
【新規 PC の初期設定として】(修復無限ループに陥らない用心の為)
「bcdedit /set {default} bootmenupolicy legacy」
起動時に「F8」キー連打で起動メニューが出てきます
(Windows7までは標準だったのが8以降隠されてしまった機能)
Windows10 標準に戻すには
「bcdedit /set {default} bootmenupolicy standard」
(この状態でも『回復処理』の中で設定をすれば起動メニュー出せるが面倒臭い)
【ディスクのチェック】(直接経過が見えるのでGUIのツールより精神衛生上良い)
日常的に「chkdsk c:」(読取り検査)
↑で修復必要と言われたら「chkdsk c: /f」(論理障害があったら修復)
たま~に思い出したらその日の作業終りに「chkdsk c: /r」(ドライブ全体の表面チェック)
【ログインパスワード失念者のお助け用】
Windows インストールメディアで起動 → 回復処理で cmd を選択
「ren utilman.exe utilman.org」
「copy cmd.exe utilman.exe」
再起動してログイン画面まで来たら『ユーザ補助』のボタンをクリックすると
コマンドプロンプトが登場
1)ローカルアカウントの場合
「net user "ユーザ名" *」
→ 新規パスワード入力を2回促されるので入力(ただEnter押せばパスワード解除)
2)マイクロソフトアカウントの場合(自身の腕ではパスワード変更/解除不可)
「net user administrator /active:yes」→ 再起動
ログイン画面に「administrator」が現れるのでそちらにログイン
新規にユーザーを作成し、パスワードを失念したユーザーフォルダから
新規のユーザーフォルダにデータを移す
作業が終了したら管理者権限ならどこでもいいので
「net user administrator /active:no」→ 再起動(administrator 退場)
今後は新規のユーザーで作業するよう促す
※マイクロソフトアカウントにオフィスの登録等している人には
携帯電話を登録して、そちらで本人確認できるよう促している。
「パスワードを変更していないのに通らなくなる」という事例が結構あるので。
【パフォーマンスインデックスの表示】
Windows7 では『システムのプロパティ』にクリックボタンで簡単に表示された機能
ソフト不要なのと、割と体感に近い比較ができるので事務用PCの評価に使用
cmd または powershell にて「WinSAT formal」→ ベンチマークが行われる
上記コマンドでは結果が表示されないので結果表示のコマンドを打つ
「Get-CimInstance Win32_WinSAT」← cmd にはこのコマンド無いので powershell必須
パフォーマンスインデックスの結果表示例
( CPU:Ryzen 5 1600, RAM:8GB(DDR4), SSD:256GB(M.2), Video:GT730 )
PS C:\Users\Administrator> Get-CimInstance Win32_WinSAT
CPUScore : 9.2
D3DScore : 9.9
DiskScore : 8.1
GraphicsScor : 8
MemoryScore : 9.2
TimeTaken : MostRecentAssessment
WinSATAssessmentState : 1
WinSPRLevel : 8
PSComputerName :
# 最近 Windows11-Home をローカルアカウントでログインさせる依頼が増えてます
# OOBE 中に「Shift」+「F10」を押して cmd 起動
# 「Windows\System32\oobe」フォルダ中の「passnro.cmd」を実行
# 再起動すると、今度は OOBE 中にローカルアカウントに進むボタンが出て来る
Re:割と使えると思うコマンド(ついでに 備忘録) (スコア:1)
# 「Windows\System32\oobe」フォルダ中の「passnro.cmd」を実行
passnro.cmd → BypassNRO.cmd
Re:割と使えると思うコマンド(ついでに 備忘録) (スコア:2)
ご指摘ありがとうございます。
ちなみにコピペした元のテキストファイルでタイプミスしておりまして
そちらが修正できて助かりました。
Re:割と使えると思うコマンド(ついでに 備忘録) (スコア:1)
chkdskは/scanと/spotfixにしろ
私のバイブル「バッチファイルは人類には早すぎる」 (スコア:4, 参考になる)
https://qiita.com/yz2cm/items/8058d503a1b84688af09 [qiita.com]
まとめてくれて感謝に堪えない
windows が unix に対して優れている 3つのポイント (スコア:3, 興味深い)
https://srad.jp/~uratan/journal/552443/ [srad.jp] (自分の日記、これを書いたのは11年前か)
今でも作業の基本で、ええ愛着はあります。(ただしvimとUnxUtilsは必須)
tcsh に向かってる時に比べてちょっと身構えながら使う感じが、
親戚の家で微妙にくつろげない感じにちょっと似てていい。
あと仕事でコマンドプロンプトで作業してると新人が
「この人黒い画面開いたままマウスも触らず何してるんだろ?」
と怪訝な反応するのもおもしろい。
自分の日記の[3]っつ目(オフトピ) (スコア:1)
[3] ウィンドウアプリで特定の文字列を置き換える目的でコピペする時に、
Windowsでは選択した文字列をクリップボードの文字列で置き換えることができる、繰り返し実行も問題ない。
X Windowでは置き換えたい文字列を選択するだけでコピーしちゃうので、変更先文字列をコピペで持ってくることができない。
(これtwmとか古いwindow managerでの挙動なので今時のwmでは当てはまらないかもです)
自分の日記の[1]つめに追加…? (スコア:1)
[1.2]
cmd.exe では cd や rmdir に対しては補完候補がディレクトリのみに限定される。
…先頭一文字入れるのが癖になってて あまりありがたみを感じないけど実は恩恵を授かってたのかなぁ。
手持ちの csh,tcsh,bash ではそういう区別はしてくれなかったので書いてみたが、そんなシェルもありそうだからエントリーは却下かな。
知らんけど (スコア:2, すばらしい洞察)
ipconfigコマンドを打つためだけに立ち上げている
自IPと内部に持っているバーチャルなネット?のIPを確認するので一番手っ取り早いのがコマンドプロンプトでこのコマンド打つので
他に使用してないなぁ
Re:知らんけど (スコア:3)
自分もほぼ同じです。
PowerShellでもできるけど最初の起動が断然cmd.exeのほうが早い。
Re:知らんけど (スコア:1)
PowerShellの起動、遅いですよね。なにやってるんだろ?
あとログイン直後に一瞬ふわっと表れて消える黒い窓、あれってcmdじゃないですか?PowerShellでやったら目で確認できるくらいの時間窓が残っていそうな?
Re:知らんけど (スコア:2)
複数ファイルのファイル名を一括で変えたりするときにcmd.exe使ってる。
dir /b > foo.bat でファイル一覧取得
(/b:ファイル名だけ表示。必要なら、/s:サブディレクトリ化のファイルを全部表示、も付ける)
Excel でfoo.bat を開く。batをExcelドラッグドロップするとテキストファイルとして開かれる
ファイル一覧をB列に移し、A列は「ren」にして、C列に変更後のファイル名を入れていく
上書きするとタブ区切りテキストになるので、foo.bat実行
てな感じで。
Re:知らんけど (スコア:1)
機械的なりネームは for 使わない?
Re:知らんけど (スコア:1)
それはpowershellでもできるな。
「dir -Name」とか「dir -Name -Recurse」とかを使えばよい。
オプションが長すぎる、という文句もあるかもしれないけど、cmd.exeと違ってTAB補完も利く。
Re:知らんけど (スコア:1)
C:>ren *.txt *.csv
とかで複数ファイルの拡張子を書き換えるのだけは、cmd.exe(command.comじゃないんだ)が1番便利な気がする。
---- 6809
Re:知らんけど (スコア:1)
ipconfigやpingなどはやっぱりコマンドプロンプトですね。
ついでに言うと、コマンドプロンプトが
Windowsキー+R ⇒ cmdと入力 => エンター
でさくっと呼び出せるのもありがたい。
Windows11になってバッチスクリプトが動かなくなった (スコア:2)
Windows11になってバッチスクリプトが動かなくなった
と思ったが、sjisファイルにおける日本語の問題でした。
スクリプトの上の方に、
set LANG=ja_JP.sjis
と追加したらOKでした。
変数名に日本語を使いまくっていました。
bashを標準にしてくれ (スコア:1)
cmdの良さが全くわからん。
Re: (スコア:0)
別に良いものでは無い。
paint.netがインストールされていても単純な用途ではペイントの方が合っていることはあるのだ。
Re:bashを標準にしてくれ (スコア:1)
Git for Windows は入れてるけど、MinGW とかは好きじゃないのでわざわざ bash は外している。
git.exe は PowerShell から使う。
それとは別に、WSL2 の bash は時々使っている。
ipconfigを叩く際に呼び出すなぁ (スコア:1)
PowerShellでも良いんですが、findコマンドで文字列検索する時とか引数でダブルコーテーションだけで良かったのが、
その前後にシングルコーテーション付けるとか手間なので、微妙にPowerShell面倒なんですよねー。
どちらかというと... (スコア:1)
コマンドプロンプト は MS-DOS時代からの互換性のためにないと困る
Linuxぽく使いたいので、bash とか busybox が使いたい
PowerShell がいらない子。
Re:どちらかというと... (スコア:1)
古くから使っていて、それで困ってないので、新しい奴は要らない。
新しい奴なんか、覚えてやる気がしない。
なるほど。
私なんか、老害って呼ばれるのが嫌で、新しいものを試しがちなんですが、
新しい事を試すことによって特に害は無いですし、
むしろ新しいものの方が優れていることも多いわけで。
Re:どちらかというと... (スコア:1)
仕事の蓄積がある分野こそ、新しいものを学んでいかないと蓄積の優位性が失われていくけどなぁ。
で、古いものにしがみついていると、老害って言われちゃう。
特にIT分野ってそうでしょ?
Re:どちらかというと... (スコア:1)
念のため確認しておくけど、私はcmd.exeを無くせ、と言う話はしていない。
Re:どちらかというと... (スコア:1)
微妙なところで互換性がなくてハマる原因に…
Re:どちらかというと... (スコア:1)
64bitWindowsだと、16bit時代のEXEが動かせないからね。
32bit版CMD.exe(SysWOW64\cmd.exe)ならいけるかと思ったら無理だったぜ(涙)。
Re:どちらかというと... (スコア:1)
Get-Content -Encoding Byte a,b,c | Set-Content -Encoding Byte d
で、できると思う。PowerShell の 7以降なら、-Encoding Byte の替わりに -AsByteStream で。
愛着はないけど普通に使う (スコア:1)
まあ使い慣れてる、というのが一番かな。
ネットワークの試験で1つのインターフェースに複数のIP Addressを
設定したい時とかGUIでちまちまやれるほど我慢強くないので適当に
バッチファイルにして実行というパターンなんかが典型例。
PowerShellなんでもできすぎてセキュリティ的に問題が (スコア:1)
スクリプトを運用とかしようとすると、会社標準のセキュリティポリシーでブロックされるとかそういうことが起きてしまうのがね……。
その気になればC#のソース実行してWin32APIを直接叩けたりしてしまうので、まあブロックもやむなしとは思うんだけど、それじゃあツールとして使いにくいんだよね。
そういうわけで、バッチファイルで出来ることはそっちでやるほうが便利で、cmdの出番はなくならないというのが実情。
しもべは投稿を求める →スッポン放送局がくいつく →バンブラの新作が発売される
Re:PowerShellなんでもできすぎてセキュリティ的に問題が (スコア:1)
CMD.exeと違って、VBScriptはWindows 7の頃に非推奨になった [microsoft.com]古い環境なので、そろそろ新しいのに乗り換えた方が良いよ。
日々常用 (スコア:1)
プライベートでは、日々常用している
デジカメデータをexiftoolでメタデータを吸い出してログを取り、かつそれにもとづきリネームし、
Irfanviewで縮小画像を作り、とか
かつ、デジカメの機種によって処理を変えたりとか云々で、バッチスクリプトが千行近くに至ってた。
そのほか、ffmpegで立体動画を作ったりとか、GPSデータを処理したりとか。
あと、職場のサーバーでは、
ウィンドウズのエクスプローラーの検索が時間かかったり、まともに調べてくれなかったりするので、
旗Rでcmdを起動し、dir *検索文字列*.* /s /b
とかで検索したりする。
WindowsのGUIはどうでもよいが、コマンドプロンプトがなくなったら生きていけないと思う
(実際には、なくなったら死なずに、すぐにLinuxのなんかのシェル乗り換えるだろうけど)
nanoserver (スコア:0)
最近はPowerShellを使うことが多いけど、nanoserverでPowerShellが入っていない環境があるのでcmd.exeも使ってます。
愛着は別にないです。
業務でめっちゃ使ってる (スコア:0)
ffmpegとかwiresharkとか。
分ける必要があるのは違うから (スコア:0)
Windowsターミナルや PowerShellと並列なのは互換性が無いからでしょう。
互換性が無いからには使い分けなくてはならないわけで。
同じように使えて同じ結果が得られるならリプレースしてもいいだろうけど。
そうじゃないんでしょ?
Re:分ける必要があるのは違うから (スコア:1)
シェル(CUI) ... PowerShell ⇔ cmd.exe (他、wsl.exeなど)
※Windowsターミナルの中でPowerShellやcmd.exeが動くのであって、並列ではない。
Re:分ける必要があるのは違うから (スコア:1)
使い分ける、というか、現時点で存在しているcmd.exeのバッチファイルなんかは、そのまま使えば良いし、
新たに使うのであれば、Powershellにした方がいいだろうね。
cmd.exeから起動できる*.exeや*.comはPowershellからでも起動できるし、
制御構造はPowershellの方が圧倒的に書きやすい。
もっとも、cmd.exe以外を覚える気が1mmも無い、ということなら、cmd.exeを使うしかないね。
数年に一度 (スコア:0)
プロンプトが必要になるが、Win+R→cmdでコマンドプロンプト呼ぶのが簡単、だと思いこんでる。
Re:数年に一度 (スコア:3, 参考になる)
最近エクスプーラーのパスのところでcmdって入力すると
そこをカレントにしてcmd.exeが起動されるのを知ったぜ。
もっと早く知りたかった……
Re:数年に一度 (スコア:1)
pathさえ通しておけば、そこから直にバッチファイルも実行できますよ。
Re:数年に一度 (スコア:1)
ダウンロードフォルダでそれやるとダウンロードしたcmd.exeを実行してしまって危険なのをなんとかしてほしい。昔はシフト+右クリックからの「コマンドプロンプトをここで開く」で安全に開けたけど、それではPowerShellしか起動できなくなってしまった
mklinkのため・・だったけど (スコア:0)
少なくとも数年前、PowerShell 7 あたりでシンボリックリンクを作る New-Item -ItemType SymbolicLink が
うまく動いてなかったので、そのためだけに cmd.exe で mklink を使ってたけど
今試したらうまくリンク張れたので、もう出番は無いかもしれん。
PowerShell使ったことがない (スコア:0)
cmd.exeで事足りるので十分
普段はlinux使ってるのでPowerShellは全く知りません
Re:PowerShell使ったことがない (スコア:1)
他に似たものを使った経験が無いので身につかなくてイライラする。
むしろワクワクするけどな。
Re:PowerShell使ったことがない (スコア:1)
今はPowerShellとコマンドプロンプトで同じ様に化けるし、Windowsのパイプの動作とsortとか古いコマンドせい…ってことは言えない?
winget list | more
winget list > c:\temp\list.txt
winget list | find '"Windows"'/winget list | find "Windows"
なんかも両方で同じ様に化ける
参考
https://qiita.com/yoshi_iwa/items/f4a19bc1a37ced40cf74 [qiita.com]
Re:今やってる仕事 (スコア:1)
で、その中で何をやってるか解らなくなるブラックボックス化が進み、何かの仕様がちょっと変わると、正常に動かなくなる上、それを修正することが困難になる。
RPAがまさにそんな感じになってるよね。
Re:余計なことがしたいから下調べをしましたという記事 (スコア:1)
速いPC買えば良いだけじゃね?
つか、ごく一般的なPCでも、そんなに遅さが気になるかね?
Re:機能増やして欲しい (スコア:1)
互換性の問題は避けられない気がするね。
起動オプションやマジックコメントで新しいバージョンのcmd.exeを使えるようにする、とかは有り得ると思う。
だけど、MSがcmd.exeにそんな労力をつぎ込むとは思えない。
Powershellに注力してるわけだし。
Re:機能増やして欲しい (スコア:1)
一回cmd打って環境変数設定とコマンド実行して終わったあとでexitでいいやん。
文字のエスケープはなんでああなっちゃったんでしょうね。
考えてやってると思えない。
https://zenn.dev/tryjsky/articles/0610b2f32453e7 [zenn.dev]
Re:電卓代わり (スコア:1)
powershellなら、
だね。
とかもイケるよ。