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

2014年4月2日水曜日

デスクトップ整理バッチ

デスクトップがすぐに作業ファイルでいっぱいになるので、
整理用バッチを作ってみた。



@echo off
setlocal

rem ---------------------------------------------------------------------------
rem バッチ名:デスクトップ整理バッチ
rem 機能説明:バックアップ先に今日の日付でフォルダを作成し、
rem           デスクトップのファイル・フォルダを全て移動する。
rem ---------------------------------------------------------------------------

set YYYYMMDD=%DATE:/=%
set BACKUP_DIR=%USERPROFILE%\Documents\デスクトップバックアップ\%YYYYMMDD%
set BAT_NAME=デスクトップ整理.bat

mkdir %BACKUP_DIR%

for /F %%a in ('dir %USERPROFILE%\Desktop /B') do (
if NOT %BAT_NAME% == %%a (
echo "%%a"
  move "%USERPROFILE%\Desktop\%%a" %BACKUP_DIR%
)
)
for /F "skip=2 delims=" %%a in ('dir %USERPROFILE%\Desktop /B') do (
if NOT %BAT_NAME% == %%a (
echo "%%a"
  move "%USERPROFILE%\Desktop\%%a" %BACKUP_DIR%
)
)
pause
endlocal

2011年12月16日金曜日

UTF-8のBOMを削除する

AccessでUTF-8のファイルをインポートしようとしたとき、
ビューで先頭に「・ソ」と表示された謎の文字がついていて、正しくインポートできなかった。
どうもこれはBOMらしい。
バイナリエディタで削除はできるけど、自動で削除する方法を2つほど見つけたのでメモ。

コードを書く前に参照設定で「Microsoft ActiveX Data Objects ~」を有効にすること。
BOMは先頭3バイトに着いてくる。
ならば4バイト目から先を出力しなおせばいいんだという手法。
ただし、ファイルが大きすぎるとメモリに入りきらないためエラー落ちする。
280MBまではちゃんと動いた、660MBではだめでした。

==================================================================
Dim readStream As ADODB.Stream
Dim writeStream As ADODB.Stream
Dim readFile As String
Dim writeFile As String

readFile = "C:\BOM付きファイル.txt"
writeFile = "C:\BOM無しファイル.txt"

' 4バイト目から読み込む
Set readStream = CreateObject("ADODB.Stream")
readStream.Open
readStream.Type = adTypeBinary
readStream.LoadFromFile (readFile)
readStream.Position = 3

' 出力ファイルをオープン
Set writeStream = CreateObject("ADODB.Stream")
writeStream.Open
writeStream.Type = adTypeBinary
' 読み込んだデータをそのままファイルに出力する(4バイト目以降を出力)
writeStream.Write (readStream.Read(adReadAll))
writeStream.SaveToFile writeFile, adSaveCreateOverWrite

' ファイルをクローズ
writeStream.Close
Set writeStream = Nothing
readStream.Close
Set readStream = Nothing
==================================================================

これはよくわからないが、たしかに削除できる。
ただし、Unicodeで保存されてしまう。
そのうち理解できたら役に立つかも。
 
cmd /u /c type BOMありUnicodeファイル > BOMなしUnicodeファイル 

2011年12月14日水曜日

バッチ作成時によく使うもの

■ファイル名にくっつける日時の取得
DBバックアップなどをバッチで自動化する場合、必ず実行ログを出力する。
そんなとき、大概ファイル名の後ろに日時をつけろって言われる。
簡単にできるけど毎回忘れて毎回調べてるので、覚えてる間にメモっておく。

echo %DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
echo %TIME:~0,2%%TIME:~3,2%%TIME:~6,2%%TIME:~9,2%
 実行結果:
20111214
23150102

現在日時は 2011/12/14 23:15:01.02 でした。

■テンプレート
バッチを一から作るときのテンプレート。
setlocal、endlocal をよく忘れてしまうのでメモ。

@echo off
rem =================================================
rem 機能の説明
rem =================================================
setlocal

endlocal

■コマンド一覧
これがあればバッチ作成には困らないというサイトのリンク。
コマンドプロンプトを使ってみよう!
DOSコマンド一覧