noein

powershell,vba,javascript,c#,python,groovy,ruby,actionscript,php,javaとかが好き

Excel操作するのも簡単だった。。。

$excel = New-Object -comobject Excel.Application
$excel.Visible = $True
# 新規に作成する場合
$workbook = $excel.workbooks.Add()
# 既存のものを開く場合
$workbook = $excel.workbooks.Open((Get-Location).Path + "\DB.xls");
$worksheets = $workbook.worksheets.Item(1)
$worksheets.Cells.Item(1,1).Text = "AAAA"
$workbook.SaveAs((Get-Location).Path + "ps.xls");
$excel.Quit();

wgetがないので。

param([string]$url, [string]$file)
$client = New-Object System.Net.WebClient
$client.DownloadFile($url,(Get-Location).Path + $file)

とっても簡単でした。が、もっと短く書きたいよ。。。

$from = New-Object System.Net.Mail.MailAddress("送り元アドレス","送信者名")
$to = New-Object System.Net.Mail.MailAddress("送り先アドレス","受信者名")
$mail = New-Object System.Net.Mail.MailMessage($from,$to)
$mail.Subject = "件名"
$mail.Body = "本文"
$mailer = New-Object System.Net.Mail.SmtpClient("smtp.gmail.com ",587)
$mailer.EnableSsl=$True
$mailer.Credentials= New-Object System.Net.NetworkCredential("ユーザ名","パスワード")
$mailer.send($mail)

すっごい、RubyとかGroovyに似てるから簡単。

& $args[0] $args[1]

って書いて、Test-Proc.ps1って名前で保存したとする。

PS C:\> Test-Proc {param($a); echo ($a + ":test")} "kkk"
kkk:test

て感じだね。

簡単だね

ISOファイル一覧表示したい時の話なんだけど、

PS C:\> foreach($iso in ls -R ){ if($iso.Extension -eq ".iso"){ echo $iso.FullName } }

と、

PS C:\> ls -R | Where-Object { $_.Extension -eq ".iso" } | Select-Object FullName

って、長さがほとんど違わないのですが。。。

Where-Objectってどこで使えばいいのかな?

[追記]

書いてからいろいろ試してた。

エイリアス使えばかなり違うのね

PS C:\> ls -R | ? { $_.Extension -eq ".iso" } | select FullName

あと、こうも書けるね

PS C:\> foreach($iso in (ls -R | ? { $_.Extension -eq ".iso" })){ echo $iso.FullName }

[さらに追記]

そもそも、こう書けばよかったらしい。。。

PS C:\> ls -R -include "*.iso" | select FullName

PowerShellでさくっと解決

$s = "set CLASS_PATH="
foreach($f in ls -R){ if($f.Extension -eq ".jar"){ $s += $f.FullName + ";" } }
$s > setpath.bat

C#をもう一度やりなおす

■基礎文法
◇ switch
Q. caseに式を使える?
A. No

Q. フォールスルーができない?
A. できなくはない。
var i = 22;
switch (i)
{
// 連続して書くとフォールスルーできる
case 22:
case 33:
case 44:
Console.WriteLine("22 or 33 or 44");
break;
default:
Console.WriteLine("その他");
// このbreakを省略できない
break;
}

◇ yeild return
private static void sampleYieldReturn()
{
foreach (var i in range(20, 25))
Console.WriteLine(i); //=> 20,21,22,23,24,25
}

private static IEnumerable<int> range(int s,int e)
{
for(var i = s;i <= e;i++)
yield return i;
}

◇ Nullable型
private static void sampleNullable()
{
//    これはだめ
//    int i = null;
// こっちはok
int? i = null;
// ?? 向けの特別な演算子
Console.WriteLine(i ?? 44); //=> 44
//    これはだめ
//    Console.WriteLine(null ?? 55);
}

◇ constとreadonly
/// <summary>
/// readonlyはローカル変数にできない。
/// constとは異なり、staticにしないこともできる。
/// コンストラクタの中では値の書き換えが可能。
/// </summary>
private readonly DateTime today = new DateTime();

/// <summary>
/// C#ではstaticと同じ扱いになる
/// メソッド内でも宣言可能
/// </summary>
private const string CONST_STR = "TEST";

private static void sampleConstants()
{
// constが使えるのはプリミティブ型、文字列型、列挙型
const string CONST_STR_2 = "TEST";
Console.WriteLine(CONST_STR_2);

}

列挙型
/// <summary>
/// デフォルトでintが内部型になる。
/// ただし、プリミティブな数値型しか使えない。
/// </summary>
enum DayOfWeek : byte
{
Mon,Tue,Wed,Thu,Fri,Sat,Sun
}

C#のvarってローカル変数の宣言(引数はNG)でしか使えないんだね。
なんか、これじゃなんのためにあるのコレって気がするのですが。。。
可読性を下げるため?
知ってる人、教えてぷりーず☆

Read the rest of this entry »


ホットワード リンク集 PowerShell 簡単 新規
割引クーポンまとめ情報 - クー割