ラベル windows の投稿を表示しています。 すべての投稿を表示
ラベル windows の投稿を表示しています。 すべての投稿を表示

2022年12月30日金曜日

PDFのページを逆順にするバッチ(ドラッグ&ドロップで実行)

 デスクトップにアイコンを置いておいて、そこにPDFをドラッグするとページの順番を逆順にするバッチです。

1、2、3ページの本なら3、2、1ページの順番になります。

縦書きで右綴じの小説などをPDFに自炊した際、ページを逆順にして最後から読むことでページを右から左に開けます。これがしたくて作ったバッチです。


動作前提

  • Windows10であること(Win10でしか動作試してません)
  • pdftkがインストール済みでパスが通っていること


動作概要

①バッチのアイコンにドラッグされた「AAA.pdf」を「AAA_逆順_pdftk処理用.pdf」というファイル名でコピーします。ファイルは同じ階層にコピーされます。
②「AAA_逆順_pdftk処理用.pdf」をpdftkでページ逆順に加工し、「AAA_逆順.pdf」というファイル名で保存します。
③最後に「AAA_逆順_pdftk処理用.pdf」を削除します。




バッチ

@echo off

rem ■■ PDFのコピー ■■
rem 「AAA.pdf」を「AAA.pdf_tmp」という名前でコピー。
copy %1 %1_tmp

rem 変数のファイル名を調整し、「.pdf_tmp」を削除。
rem 「AAA.pdf_tmp」の場合変数の中身が「AAA」になる。
set fileName=%1_tmp
set fileName=%fileName:.pdf_tmp=%

rem 「AAA.pdf_tmp」を「AAA_逆順_pdftk処理用.pdf」という名前にしてmove。
rem 「AAA_逆順_pdftk処理用.pdf」はpdftk実行後に削除する、一時的なファイル。
move %1_tmp %fileName%_逆順_pdftk処理用.pdf

rem ■■ pdftkにてページを逆順にする ■■
rem ページを逆順にする。
pdftk %fileName%_逆順_pdftk処理用.pdf cat end-1 output %fileName%_逆順.pdf

rem 「AAA_逆順_pdftk処理用.pdf」を削除する。
del %fileName%_逆順_pdftk処理用.pdf

echo 処理が完了しました。
echo 5秒後にウィンドウを閉じます…。
timeout 5 > null


使い方

  1. 上記のコードを「逆順に変換.bat」などの名前でデスクトップに保存する。
  2. PDFファイルを1で作ったアイコンにドラッグする。
  3. PDFファイルと同じ場所に逆順のファイルができる。


ネットで検索したらpdftkでページを逆順にするコマンドはいっぱい出てきたんですけど、バッチ化までされてる方が見つけられなかったので記事にしてみました。


※上記のバッチ作成は自己責任でお願い致します。動作保証は致しません。

2012年11月30日金曜日

iTunesの曲を数秒ずつ再生する

前回書いた記事で、以下の様なケースがあるかと思います。
昔iTunesにBPM情報を反映させたけど、最近Traktor上でBPMを修正した!
→BPM情報なしのリストの方法が使えず、一個一個手で再生しないといけない

TraktorもiTunesも使ってるけど、iTunesのどの曲をTraktorで解析したかがわからない
→どれを再生したらいいのかわからず途方に暮れています…。

今回はちょっと力技です。
スクリプトを使ってiTunesに入っているすべての曲を数秒ずつ再生させます。

フリーソフトなど使えるものがないかなと調査した結果、↓のサイトが大変参考になりました。

iTunesを一定間隔で自動再生するVBSスクリプト

このスクリプトを応用して、iTunesのリストの曲を2秒ずつ再生するスクリプトを作りました。
作りましたというか、そのまま値を書き換えただけですけど…(^^;)
※スクリプトの作成、実行は自己責任で行なってください。この記事を参考にしたらPCがおかしくなった、ファイルが破損したなどのケースに対して私は責任を一切負いません。

Dim iTunes
'iTunesアプリケーションをセットする。
Set iTunes = WScript.CreateObject("iTunes.Application")
'プレイリストをセットします。
set pList = iTunes.LibrarySource.Playlists.ItemByName("[01]4beat_all")
'はじめの曲を再生
pList.PlayFirstTrack()
'シャッフルをOFF
pList.Shuffle = 0
'すぐに次の曲へ
iTunes.NextTrack ()
'2秒→次の曲へのループ(3000回)
myNum = 0
Do
    WScript.Sleep(2000)
    iTunes.NextTrack ()
    myNum = myNum + 1
Loop While myNum <3000
'終了したら、メッセージを表示
Wscript.echo "iTunes自動再生終了しました。"
'途中で終了する場合は、タスクマネージャからプロセスwscript.exeを終了  

上の文章をなんとか.vbsのような感じで保存して実行してやると、「[01]4beat_all」というリストの曲が2秒ずつ3000曲分再生されます。
「[01]4beat_all」の部分は使用されているリストの名前に修正ください。
iTunesの楽曲をすべて表示するリストを作って、このvbsを実行してやればいいのです。

wscript.exeを終了させるスクリプトも作る場合は、以下のサイトが参考になると思います。

[WSH]プロセスを強制終了させる


例えば曲が10,000曲あったとしても、2秒ずつ再生してやればだいたい5.6時間。
まぁまぁ許容範囲ではないでしょうか?

「DJでは最近インポートした曲ばかり使っている」という場合はiTunesの曲を追加日でソートしてやったり、「レートが5の曲しかDJで使っていない」という場合はレートでソートしてやれば、効率良く再生ができるかと思います。
これでiTunesでBPMを参照できますので、
(BPM100前後の曲って何があったっけ…)
と外でふと思い立ったときに、iPodやiPhoneのスマートプレイリストで確認…ということができると思います。外出先などで使えそうですね。

それではよいiTunes(+Traktor)ライフを!

2012年2月12日日曜日

無線LANのデバイスをバッチで無効/有効化

DJ用のノートPC、デスクトップと音楽ファイルを同期する際に
無線LANを使ってまして。

Traktorを使うときはノイズを抑止するために
無線LANのデバイスを無効化するんですが、
いちいちデバマネを開いて無効化するのが
面倒くさい!

なので、無線LANを無効/有効化するバッチを作ってみました。

@echo off

REM 初期値の設定
set NetStatus="ON"
echo.

REM ネットワークカードのステータスを取得
CD [devcon.exeを置いている場所]
for /f %%A in ('devcon.exe status "[無線LANカードのハードウェアID]" ^| findstr "running."')do set NetStatus=%A


REM ネットワークが有効なら無効化、無効なら有効化
if %NetStatus%=="Driver" goto LanOn
if %NetStatus%=="ON" goto LanOff


:LanOn
devcon.exe disable "[無線LANカードのハードウェアID]"
echo.
echo 無線LANを【無効化】しました。
goto END


:LanOff
devcon.exe enable "[無線LANカードのハードウェアID]"
echo.
echo 無線LANを【有効化】しました。 
goto END


:END
REM メッセージを出して、終了
echo ツールを終了します…。
ping localhost -n 6

devcon.exe statusでLANカードの状態を取得

findstrで実行結果を抽出

・無線LANが有効なら変数のNetStatusがDriver」になる
・無線LANが無効なら変数のNetStatusが「ON」になる

無線LANが有効なら→無効化
無線LANが無効なら→有効化

コマンドプロンプトの画面を数秒残しておくため
pingを数回飛ばして、終了


というバッチです。
Windows7 64bit環境だからamd64のdevcon.exeを
使わないといけないのにi386用を使おうとしてたり、
コマンドの実行結果を変数に入れるために
for文を使うのが初めてだったりしたので
作るのに苦労しました(^^;)

amd64用のdevcon.exeは以下からダウンロードできます。
Windows Driver Kit (WDK) の入手方法
ダウンロードしたISOファイルを使用して、WDKの
ToolsのみインストールすればOKです。

下の記事を参考にしました。
Windows 7 x64(amd64)用のdevcon.exe