PDFの中からテキストを抜き出すのに、いちいち実行ファイルを作るのも大袈裟だなと感じたので、 スクリプトかBatファイルでやる方法を探していたところ、 PowerShellだと.net用のDLLを扱うことが出来るっぽいので作ってみた。 なんか、うまくいかないPDFもあるけれど・・・ <使い方> 下記のソースをメモ帳にコピーして、拡張子を「ps1」に変更する。 作成したps1ファイルと同じところに、iTextsharp.dllを置く。 あとは、作成したスクリプトを実行する。 ps1ファイルの実行が上手く行かない場合は、PowerShellのポリシーを見直そう。 「Set-Executionpolicy RemoteSigned」でググるといけるかも。 -------------------------------------------------------- #iTextshap.dll
ディスクが圧迫してきたときとかどこが容量食ってるのか調べるのにLinuxだとdu -shとか使って調べていくかと思います Windowsで調べる場合どうしようと思って調べてみました Powershellを起動して気になるディレクトリに移動して下記 ls | ForEach-Object -Process { "$_"; Get-ChildItem -Path "$_" -Recurse -Force | ForEach-Object -Begin { $Len = 0 } -Process { $Len = $Len + $_.Length } -End { $Len / 1024 / 1024 / 1024 }; " " }
ドライブ容量は簡単ですね。 cim でも wmi でもいいでしょう。 さて、ドライブの次はフォルダ容量を調べてみましょう。 特に多くの場合は、 容量を調べる = どのファイル/フォルダが原因かを調べるため なので大事です。 では、見てみましょう。 フォルダの容量 = ファイルの容量合計 コードサンプル ワンライナー (定番) ワンライナー (改行付で) 分離 function化 修正 GitHub フォルダの容量 = ファイルの容量合計 正確には違います。 さらに正確にいうと ACE/ACL (所有者設定/セキュリティ権限) や 隠しファイル などにより、取得には制限がかかる場合があるためです。 ただ、一般的にこれらのファイルは通常のファイルを調べたうえで更に問題と思わしきときに調べるのが筋でしょう。 よって、今回は実行ユーザーで見えるフォルダ内部のファイル容量を合計することにしましょう。
(これは2011-02-12に書いた故OCNブログの記事を移植したものです) 特定の拡張子(例えば.dat)のファイルを、下位のフォルダ内のファイルを含めて再帰的に削除したいとき、コマンド プロンプトでは del *.dat /sとすればいいんですが、問答無用で即コマンドを実行してしまうのが怖い。 Windows PowerShellでは-WhatIfオプションが存在するので、実際にコマンドを実行しないで、仮想的な実行結果の確認ができるようになっています。 PowerShellで再帰的削除の仮想結果を確認するには、 Get-ChildItem -Include *.dat -Recurse | del -WhatIf とします。こうすれば、削除処理自体は行なわないで、 WhatIf: 対象 "~.dat" に対して操作 "ファイルの削除" を実行しています。 という確認メッセージが出力され
Invoke-Expressionコマンドレットのサンプル† 以下にInvoke-Expressionコマンドレットを使用した動作例を記します。 ↑ Invoke-Expressionコマンドレットで文字列数式を実行† PS D:\> $calc="1+2+3+4+5+6+7+8+9+10" PS D:\> $calc 1+2+3+4+5+6+7+8+9+10 PS D:\> $calc.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True String System.Object PS D:\> Invoke-Expression $calc 55 ↑ Invoke-Expressionでディレクトリ表示† PS D:\> $target="c:\" PS D:\> $cmd
PowerShellから外部プログラムを実行する場合は、 直接exeを入力する & Start-Processコマンドレットを使用する といった方法がる。 PS > notepad.exe test.txt PS > 外部プログラムが空白を含むパスにある場合は、&を付ける(例ではPeaZipというアーカイバソフトを起動している)。 PS > & 'C:\Program Files\PeaZip\peazip.exe' PS > 実行するとわかるが、すぐにプロンプトに制御が戻る。外部プログラムの完了を待ちたい場合は、 Start-Process -FilePath notepad.exe -ArgumentList test.txt -Wait とStart-Processを-Waitを指定して実行すればよい。
数年前に書いたPowerShell を使ってEメールを送信するスクリプトはNet.Mail.SmtpClient を利用していましたが、現在はSend-MailMessage コマンドレットはポートを指定できるようになったのでスクリプトを書き直してみました。 PowerShellのバージョンに依存しないEメール送信関数は別記事「PowerShell のバージョンに依存しないEメール送信関数 」で説明します。 #Settings $MailSv = "smtp-mail.outlook.com" $Port = 587 $Encode = "UTF8" $address = "xxxxx@outlook.jp" $Subject = "Send Mail" $Body = @" テストです。 見れてますか? "@ #Credential $pwd = "xxxxxxx" | ConvertT
Shellといえば、コンソール操作です。PowerShellにもpowershell.exeというコンソールがあります。 Linux/UNIXを使ってて感じるのは、コンソールの豊富なオプションによる使いやすさです。 これこそ、さすがCUIを中心に据えるだけのことがあると常々感じます。WindowsにおけるCUI = PowerShellというからにはもう少しこの辺は強くなってくれると嬉しいものです。 ちょっと便利に使うために、今回は、PowerShellコンソールユーザー向けに履歴呼び出しについてです。 一応これだけあるんですけど、好きな動作があればいいですね。 キーコードバインドでの呼び出し 画面にだしたい Get-History ヒストリのタブ補完 履歴とは ようは、コンソールで入力した過去の内容をさします。 例えば次のような入力があったとして PS>ls PS>ps PS>ps -n
とやってフィールドコードを表示させておけば良いだけだ。 以下のコードは目次のフィールドコードの後ろにブックマーク範囲を指定するオプションを追加している。フィールドコードは通常 Alt + F9 ですべて表示できる。 (とりあえず、単一文書を置換している) function Main{ $InputPath = "D:\desktop\test.docx" $word = new-object -comObject "Word.Application" $word.Visible = $false [void]$word.Documents.Open($InputPath) #置換するためフィールドコードを表示しておく $word.ActiveWindow.View.ShowFieldCodes = $true $findText = "\z \u" $ReplaceText = "\z \
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
PowerShellの基本的なことがわかってなかったシリーズ第三弾です。 内容としては、牟田口さんのブログの winscript.jp で書かれていることそのまんまです。 なので詳しいことを知りたい方はそちらをご覧いただければ十分かと思います。 今回わざわざパクリエントリを書くのは上のエントリを紹介したかったから+自分の備忘録のためになります。 はじめに 以下の超簡単なFunction、Funcを例に説明します。 Function Func(){ Write-Output "1+1は?" return 1 + 1 } このファンクションを実行するとコンソールには PS C:\> Func 1+1は? 2 と表示されます。 この時Funcの戻り値は何か?という話しになります。 私はつい最近までこのFuncの戻り値は2だけだと勘違いしていました。 Funcの実行結果を変数$Resultに設定し
DATE : 6/25/2012 COMMENT: This is an updated Version of my Cook Book from Augest of 2008 =============================================================== All errors and mistakes are my own. Thanks to all who have helped along the way. One thing I would add is that if you are using anything but a US locale version of Excel some of these scripts won’t work, especially adding and saving workbooks. Her
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く