L'Isola di Niente
L'Isola di Niente » cmd.exe と powershell.exe

cmd.exe と powershell.exe

# cd 移動時のパス名保管
先頭数文字ををタイプして [Tab] キー、bash と同じ
大文字小文字は区別しない

# 管理者権限で bat ファイルを起動
右クリックで普通に行えるのですがカレントディレクトリが C:\Windows\System32 に。
cd /d %~dp0 というコマンドで bat があるディレクトリに移動できます。
cd /d %~dp0
copy /y hoge.dll "%PROGRAMFILES(X86)%\hoge\"

# cmd.exe のカレントディレクトリを Explorer で開く
explorer .

# cmd.exe で powershell
powershell と打ち込んで Enter すれば powershell になる
exit で cmd.exe に戻れる。

# PowerShell で *.ps1 ファイルを読み込む
PowerShell を管理者権限で立ち上げ以下を打ち込む
Set-ExecutionPolicy RemoteSigned

# PowerShell の POSIX 互換
ls, pwd, kill 等の一部コマンドはあらかじめエイリアスが用意されている
変数定義もまったく同じ、ただし ls -al のようなオプションには未対応
実は cd / でルートに移動できたりパス区切りはスラッシュでもよかったりする
更にチルダ(~)をホームとして扱える、cmd.exe もそうしてくれないかなぁ...

# PowerShell で grep コマンド
Select-String コマンドレットが同様、エイリアスを用意しないのは意図的?
自分でエイリアスを作る場合
ドキュメントディレクトリに WindowsPowerShell というディレクトリを作成
Set-Alias grep Select-String
という内容のテキストファイルを Microsoft.PowerShell_profile.ps1 という名前で保存。
後は UNIX の grep コマンドとほぼ同様に利用できるがオプションは...

# PowerShell でファイルにリダイレクト
echo うぐぅ > output.txt
で普通に可能ですが BOM 付き UTF-16 で出力されるので使い物になりません
ドットネットの仕様なのであきらめましょう

# 環境変数
# cmd.exe
echo %programfiles%

# powershell
$env:programfiles

### 結論
WindowsPowerShell の開発者達はなんかしらんが色々頑張ったんだと思う
けどドットネットの仕様に振り回されて中途半端なシェルになったようだ
内部が UTF-16LE で読み書きが UTF-8 で実際の表示が各国毎 local じゃあね...

以下オマケ

# Explorer から cmd.exe を立ち上げる
アドレスバー (Alt+D) で cmd と打ち込むと cmd.exe が立ち上げられる。
Explorer で開いていた場所がカレントディレクトリになる、powershell でも同様。
又は Shift を押しながらフォルダで右クリして, "コマンドウィンドウをここで開く"

# Explorer でファイルのフルパスコピー
ファイルを選択し Shift を押しながら右クリして, "パスとしてコピー"
Copyright(C) sasakima-nao All rights reserved 2002 --- 2017.