コマンドプロンプト


【windows7】uwscでzipファイルを回答&圧縮

uwscでzipファイルの解凍や圧縮をしたい場合はpowershellを使うのが便利。

zipファイルを扱えるpowershellはv5以降。windows7ではバージョンアップが必要。

powershellのバージョン確認コマンド
------------------
$PSVersionTable
------------------

また、windows7でpowershell v5をインストールするには .NET Framework Ver.4.5以降が必要

windows7で .NET Framework のバージョンを確認する方法

http://www.atmarkit.co.jp/ait/articles/0910/15/news116.html

解凍コマンド
------------------------------------
Expand-Archive 解凍したいファイル.zip 解凍後のフォルダ名
------------------------------------

圧縮コマンド
------------------------------------
Compress-Archive 圧縮したいフォルダ 圧縮後のフォルダ名.zip
------------------------------------

なのでuwscでのコマンドは

解凍
------------------------------------
PS = "Expand-Archive 解凍したいファイル.zip 解凍後のフォルダ名"
POWERSHELL(PS) //実行
------------------------------------

圧縮
------------------------------------
PS = "compress-archive 圧縮したいフォルダ 圧縮後のフォルダ名"
POWERSHELL(PS) //実行
------------------------------------

もしくはUWSCからコマンドプロンプトを動かして

解凍
------------------------------------
CMD = "powershell Expand-Archive 解凍したいファイル.zip 解凍後のフォルダ名"
DOSCMD(CMD) //実行
------------------------------------

圧縮
------------------------------------
CMD = "powershell compress-archive 圧縮したいフォルダ 圧縮後のフォルダ名"
DOSCMD(CMD) //実行
------------------------------------

【コマンドプロンプト】dirコマンドで正規表現を使う

dirコマンドで正規表現を使うには |(パイプ)と findstr を用いる。

//例:数字だけのディレクトリ名だけ抽出
------------------------------------------
dir /ad | findstr "¥<[0-9]*¥>"
------------------------------------------

dir /ad → ディレクトリだけ抽出
|(パイプ) → dir の結果を findstr に渡す
findstr → 正規表現が利用できる
¥< → 単語の先頭
¥> → 単語の末尾

findstr の正規表現について詳しくはこちら

http://www.atmarkit.co.jp/ait/articles/0412/18/news018.html

【UWSC】テキストファイルを作る

UWSCでテキストファイルを作るにはコマンドプロンプトを使うといい。

UWSCファイルと同じフォルダに出力する場合
---------------------------------------------
CMDSTR = "echo テキストファイルに保存する文字列>text.txt"

DOSCMD(CMDSTR,FALSE,TRUE)
---------------------------------------------
echo で標準出力(通常は画面)に出力されるものを「>(リダイレクト)」でテキストファイルに送っている。リダイレクト先に同名のファイルがあれば上書き、なければ新規作成される。

「>」の左横に半角スペースを入れるとテキスト保存する文字列にも半角スペースが入ってしまうので注意!

Cドライブに出力する場合
---------------------------------------------
CMDSTR = "echo テキストファイルに保存する文字列>C:¥text.txt"

DOSCMD(CMDSTR,FALSE,TRUE)
---------------------------------------------

テキストファイルに保存する文字列に半角スペースを含ませる場合も<#DBL>で囲む必要はなし。
---------------------------------------------
CMDSTR = "echo 半 角 ス ペ ー ス を 含 む 文 字 列>text.txt"

DOSCMD(CMDSTR,FALSE,TRUE)
---------------------------------------------

【UWSC】フォルダ内のファイル名を一括リネーム(一部削除)

任意のフォルダ内のファイルを一度にリネームするときの覚書。

リネーム前のファイル名
-------------------------------
abc_001.jpg
abc_002.jpg
abc_003.jpg
-------------------------------

リネーム後のファイル名
-------------------------------
001.jpg
002.jpg
003.jpg
-------------------------------

ようは_(アンダーバー)を含むそれより前の文字列を削除したい。
コマンドプロンプトだと、ファイルの先頭に文字列を付け足したり、拡張子の変更などは簡単に rename コマンドで出来る。けど、先頭の文字を一括削除は、少しスクリプトが複雑になるので、今回はパワーシェルを用いる。

//カレントディレクトリにあるファイルをリネームする場合
-------------------------------
ps = "Get-ChildItem * | Rename-Item -NewName { $_.Name -replace <#DBL>abc_<#DBL>, <#DBL><#DBL> }"

POWERSHELL(ps)
-------------------------------
やっていることは、まず Get-ChildItem でファイルを取得して、その結果を|(パイプ)で一つずつ Rename-Item に送っている。"$_.Name" はパイプで送られてきたファイル名を表す。"-replace" でファイル名の一部を置換。今回の例では「abc_」を空文字に置き換えている。

//ディレクトリのパスを指定してリネーム(CドライブのUsersディレクトリを指定)
-------------------------------
ps = "Get-ChildItem C:¥Users¥* | Rename-Item -NewName { $_.Name -replace <#DBL>abc_<#DBL>, <#DBL><#DBL> }"

POWERSHELL(ps)
-------------------------------

//コマンドプロンプトでやるとバッチファイルを作る必要がある
-------------------------------
for %%f in ( * ) do call :sub "%%f"
exit /b

:sub
set fname=%1
set fname=%fname:abc_=%
ren %1 %fname%
goto :EOF
-------------------------------
=の右側が置換後の文字列。

コマンドプロンプトの文字列置換の構文
-------------------------------
%[元の文字列]:[置き換え前の文字列]=[置き換え後の文字列]%
-------------------------------

なお、Get-ChildItem と Rename-Item はコマンドプロンプトでいえば dir と ren なので、それぞれ dir と ren がエイリアスとして使える。

もう少し細かな指定も出来る↓

//リネームする対象を.jpgファイルだけにすると
-------------------------------
ps = "Get-ChildItem *.jpg | Rename-Item -NewName { $_.Name -replace <#DBL>abc_<#DBL>, <#DBL><#DBL> }"

POWERSHELL(ps)
-------------------------------

//ファイル名が xyz から始まるファイルに対して xyz を789 に置換して、さらに拡張子を.jpg から .txt にする場合。
-------------------------------
Get-ChildItem xyz* | Rename-Item -NewName { ($_.Name -replace "xyz", "789") -replace "jpg", "txt" }
-------------------------------

windows7でコマンドラインからjheadコマンドを使う方法

jheadはExif(エグジフ)ファイルの情報を編集・削除するためのプログラム。

コマンドラインから使うための覚書。

1.jheadのプログラム(jhead.exe)をダウンロードする。

ダウンロード元
--------------------------------------------------

http://www.sentex.net/~mwandel/jhead/

--------------------------------------------------

このときアバストというウイルス対策ソフトを使っていてダウンロードの誤検出された。スキャンから除外する設定をして対処。

2.PATH を通す。

ダウンロードしたファイルは適当なところに置いて、そこにパスを通す。

C:\Program Files (x86) に jhead というフォルダを作ってその中にプログラムを置いたら

jhead.exe の置き場
--------------------------------------------------
C:\Program Files (x86)\jheadフォルダ
--------------------------------------------------

コマンドラインからパスを通す
--------------------------------------------------
C:\Users\○○>path C:\Program Files (x86)\jheadフォルダ
--------------------------------------------------

これで使えるようになる。

なお PATH コマンドでパスを通すやり方はコマンドプロンプトを閉じると無効になるので、頻繁に使うなら windows の環境変数に jhead のパスを追加しておくといい。

3.コマンドの一例

Exif情報を削除
--------------------------------------------------
jhead -purejpg C:¥Users¥目的のファイル.jpg
--------------------------------------------------

Exif情報を削除(すべてのjpgファイル)
--------------------------------------------------
jhead -purejpg C:¥Users¥*.jpg
--------------------------------------------------

Usersディレクトリのサブディレクトリを対象にする
--------------------------------------------------
jhead -purejpg C:¥Users¥*¥*.jpg
--------------------------------------------------

ヘルプを見る
--------------------------------------------------
jhead -h
--------------------------------------------------

ヘルプを見る(パスが通ってない場合)
--------------------------------------------------
C:\Program Files (x86)\jheadフォルダ\jhead -h
--------------------------------------------------

UWSCで「Exif情報を削除」を実行(パスを通してない場合)
--------------------------------------------------
CMDSTR = "<#DBL>C:\Program Files (x86)\jheadフォルダ\jhead<#DBL> -purejpg <#DBL>C:¥Users¥目的のファイル.jpg<#DBL>"

DOSCMD(CMDSTR,FALSE,TRUE)
--------------------------------------------------
<#DBL>がいるのはパスの途中に半角スペースがある場合のみ

IPアドレスが競合して「インターネットアクセス なし」になったときの対処法

Windows7の再インストールをして、固定IPを設定するときに、あやまって使用済みのIPアドレスを設定してしまった。その後、IPアドレスを指定し直したが、「インターネットアクセス なし」の状態からなかなか苦労したので、その時のおぼえ書き。

そもそも、固定IPの設定方法


1.「コントロールパネル」-「ネットワークと共有センター」-「アダプターの設定の変更」
2.ローカルエリア接続のアイコンを右クリックでプロパティ
3.インターネットプロトコル バージョン4(TCP/IPv4)を選択して「プロパティ」
4.出てきたウインドウ内に希望のIPアドレスを入力する。

IPアドレスを設定しなおしたことで、LANアダプタにIPアドレスが二つ以上割り当てられていたら


「ipconfig/all」でこんな状態になっていたら

cmd2

同じ物理アドレスに三つの異なるIPアドレスが設定されている。

固定IPアドレスは、いくつでも設定できてしまうので不要なIPアドレスは削除する。

削除するには、
1.「コントロールパネル」-「ネットワークと共有センター」-「アダプターの設定の変更」
2.ローカルエリア接続のアイコンを右クリックでプロパティ
3.インターネットプロトコル バージョン4(TCP/IPv4)を選択して「プロパティ」

4.プロパティを開いたら、「詳細設定」をクリック。出てきたウインドウの「IPアドレス」の場所に複数の固定IPが設定されているはずなので、不要なものを削除する。

cmd3

IPアドレスを変更して再接続するには


IPアドレスの変更が思ったようにいかない場合は、IPアドレスを変更したり、無効と有効を繰り返すとうまくいく場合がある。

IPアドレスを一時的に変更する手段として、IPアドレスを固定から自動に変えるには「IPアドレスを自動的に取得する」と「次のIPアドレスを使う」を切り替えて「OK」する。

cmd4

IPアドレスの無効と有効を切り替えるには、「インターネットプロトコル バージョン4(TCP/IPv4)」の前のチェックボックスをつけたりはずしたりする。

cmd5

自分自身のMACアドレスを調べる

コマンドプロンプトで下記のコマンドを実施

------------------------------------
getmac
------------------------------------

windows7でarpのキャッシュを削除する(管理者権限のあるコマンドプロンプトの出し方)

コマンドプロンプトから、「arp -d」を実行するとarpキャッシュを削除できる。
だが管理者権限のないコマンドプロンプトではエラーが出る。

cmd

ARP エントリを削除できませんでした: 要求された操作には管理者特権が必要です。

管理者権限をつけるには、

1.「スタート」-「すべてのプログラム」-「アクセサリ」
2.「コマンドプロンプト」を右クリックして、「管理者として実行」をクリック。

新しく出たコマンドプロンプトのウインドウで「arp -d」を実行すればうまくいく。

参考サイト

ARPとは、
ARP(Address Resolution Protocol) → 与えられたIPアドレスからMACアドレスを求めるためのプロトコル。
※resolution(レゾリューション) → 決心する。解決する。分析する。解像度。(resolve の名詞形)

arpコマンドは、ARP(Address Resolution Protocol)テーブルの表示/設定を行う。

ARPテーブル → イーサネット通信のために用いられるIPアドレスとMACアドレスの対照表。