Windows のバッチファイルについて、こまごまメモ。
FTP通信
FTP通信用のテキストファイルを、以下のような形式で作成する。
open ホスト名 ユーザ パスワード cd、put、get などのFTP コマンド quit
以下のようなコマンドで使用する。
ftp -i -s:FTP通信用のテキストファイルのパス
※ put、get などでローカルファイルのパスを相対パスで記述する場合は、ftp コマンド実行時のカレントパスを基準として書く(FTP通信用のテキストファイルのパスは関係ない)。
zipファイル作成
ZIP.VBS をダウンロード・展開し、MakeZIP.VBS を以下のように修正する。
36 |
Set sFolderItem=Shell.NameSpace(fso.GetAbsolutePathName(Path)&"\..\").ParseName(FileName) |
↓
36 |
Set sFolderItem=Shell.NameSpace(fso.GetAbsolutePathName(fso.GetParentFolderName(Path))).ParseName(FileName) |
以下のようなコマンドで使用する。
CScript.exe MakeZIP.VBS 作成する圧縮ファイル名 圧縮対象フォルダ1 圧縮対象ファイル2 ...
現在日付を YYYYMMDD 形式で取得
%date%
で「yyyy/MM/dd」形式の現在日付を取れるので…
- 方法1:数値だけ抜き出して連結する方法 …
%date:~0,4%%date:~5,2%%date:~8,2%
- 方法2:「/」を空文字に置換する方法 …
%date:/=%
のいずれかで取得できる。
ファイルの世代管理
○世代より前のファイルを削除する…みたいな処理を行いたい場合。
ファイル名の降順で上から5つ目まではスキップし、それ以外のものを削除する(ログに日時が含まれている場合に使用)場合のサンプル:
1 2 3 4 |
SET LIMIT=5 for /f "skip=%LIMIT%" %%a in ('dir /a-d /b /o-n') do ( del /q %%a ) |
- ファイル名ではなく更新日の降順にしたい場合、
/o-n
の部分を/o-d /tw
に変更する。 - ファイルではなくフォルダに対して処理を行いたい場合、
/a-d
の部分を/ad
に変更し、del /q %%a
の次の行にrmdir %%a
を追加する。 for
、dir
、del
の詳細についてはfor /?
等で見られるヘルプを参照。