カテゴリ: バッチをつくろう

イメージ 1
誕生日に同僚からプレゼントでもらったメタリックナノパズルのザク☆
1時間半かかって腕の一部(写真上)しかできてません。。。
ナノパズル、ガチで難しいです
********************************************************************************
古いバックアップファイルとかを一気に削除したい!
そんなあなたに必要なバッチはこれ↓↓

サンプルコマンド(バッチ)
----------------------------------------------------------------------
@echo off
rem 対象ディレクトリ
set DELDIR=D:\tmp
rem 削除対象ファイルの拡張子
set FILETYPE=zip
rem 何日前のファイルを削除
set NUM=3

forfiles /P %DELDIR% /M *.%FILETYPE% /D -%NUM% /C "cmd /c if @isdir==FALSE echo /s @path"

set/p INP="削除して問題ない場合は y を入力してください>>"
IF "%INP%"=="y" (goto DEL-FILE) else (goto END)

:DEL-FILE
forfiles /P %DELDIR% /M *.%FILETYPE% /D -%NUM% /C "cmd /c if @isdir==FALSE del /s @path"

:END
pause
----------------------------------------------------------------------
FORFILESコマンドは恥ずかしながら最近知りました

これまで日数指定でファイルを削除するときはVBScriptをつかっていましたが、
これからはこのコマンドしか使わないでしょう

ちなみにforfilesを何も引数無しで実行すると、
現在のフォルダーにあるファイルやフォルダーの一覧が表示され、
/sオプションを付けると、サブフォルダーも含めた一覧が表示されるようです

goto NEXT

イメージ 1

昨日、息子が熱性痙攣を起こして救急車を呼びました(汗)
本日は熱も下がって調子が戻ったみたいです◎
私がつくったニューブロックの道路でミニカー遊びに夢中です(写真上)

1歳半くらいまでの幼児でよくみられる”熱性痙攣”
かなりびっくりするので、救急搬送時に学んだことを備忘に書留めます↓

・急に発症しますが、慌てず布団に横(側臥位)にしてあげます(抱っこは☓)
・声掛けはしない方がよい(寝れれば寝かせてあげてOKです)
・口に指を入れたりする必要もありません(横(側臥位)にしていればまず窒息はしません)
・嘔吐した場合は、吐物をかき出します
・痙攣を起こした際は、症状(左右差がないか)と時間を冷静に確認します
・5分程度でおさまるのであわてなくて大丈夫です(5分を越えたらすぐに救急車を呼んでください、5分待たなくても基本呼んで大丈夫です)
・痙攣は20分以上続かなければ体への負担はありません

*******************************************************************************

選択したフォルダやファイルのパスをコピーしたいとき、
「スタート」
>「プログラムとファイル名を検索」
>「shell:sendto」と入力
>SendToフォルダ
に以下のバッチを入れておくと非常に便利です☆

サンプルコマンド(バッチ)
-------------------------------------------------------------------------------
@echo off
rem color F5 背景:白色/文字:紫色
color F5

rem 引数を確認し、NULLでなければファイルパスを表示
:CHECK
if "%1"=="" goto END
echo %1
shift
goto CHECK

:END
pause
-------------------------------------------------------------------------------

これさえあれば、
フォルダ・ファイルを選択
>右クリック
>「送る」
>上記バッチ
でコマンドプロンプト上にパスを出力できます。
コンソール上のパスは右クリックの「範囲指定」でコピーできます◎

「 shift 」 ← バッチプログラムにおいて、パラメーター「%0」~「%9」を一つずつ小さい方に番号をずらします。

goto NEXT

イメージ 1

気に入って即買いしたおちょこ♪
*******************************************************************************
30分後、上手く処理が流れていたら皆にメールを送っておこう
10分したらファイルのバックアップをはじめよう
5分後にコンピュータをシャットダウンしよう   等々

元のプログラムにあらかじめ追加したり、
タスク(スケジューラ)に登録したりするのは意外と面倒ですよね

そんなときに重宝するのが以下のような簡易バッチ

実行したいプログラムと実行時間を入力するだけの超お手軽プログラムですので
デスクトップに置いておくのはアリかなと思います☆
-------------------------------------------------------------------------------
@echo off

set/p PID="実行したいプログラム(フルパス)を入力してください>>"
echo.
set/p TID="何分後に実行しますか?(X分 → Xを数字で入力してください)>>"
echo.

rem 分(mm)を秒(ss)に変換
set /A TIMER=%TID% * 60

rem 指定した回数pingコマンドを投げ続けます(pingコマンドは1コマンド1秒)
ping localhost -n %TIMER% > nul

call %PID%

pause
-------------------------------------------------------------------------------

「ping」 ← 本来、ネットワークの疎通を確認する際に利用します。
「set /A」 ← 変数の代入時に数式を利用できるようにします。

goto NEXT

イメージ 1

イメージ 2

ここ最近の週末工作は息子のお城づくりです☆
*******************************************************************************
ERRORコマンド

処理が正しく行われたか確認したい
又、失敗したらそこで処理を止めたい。。。

そんなときに利用するのがERRORコマンド!

プログラムによりますが、ちゃんと戻り値を設定しているものであれば
0~255?の間の数値で、実行結果(エラーコード)を返します

サンプルコマンド(バッチ)
-------------------------------------------------------------------------------
@echo off
rem color F5 背景:白色/文字:紫色
color F5

call TESTCMD

echo 処理内容:call TESTCMD 返り値:%ERRORLEVEL% > log.txt

rem チェンジディレクトリ
cd..
rem カレントディレクトリへ移動する
pushd %0\..

echo 処理内容:cd.. pushd %0\.. :%ERRORLEVEL% >> log.txt

echo ERRORLEVELの確認中... > sample.txt

call notepad sample.txt

echo 処理内容:call notepad sample.txt 返り値:%ERRORLEVEL% >> log.txt

rem 処理の後、即座にエラー判定⇒分岐処理を行いたい場合は
rem 下記のようなIF分を処理直後に挿入↓↓
if %ERRORLEVEL%==1 goto ERROR

exit

:ERROR
echo 異常終了!!

pause

:END
-------------------------------------------------------------------------------

「if %ERRORLEVEL%==1 goto ERROR」
↑実行結果(エラーコード)が 1 だったら ERRORセクションに飛ぶ

「pushd %0\..」←ドライブをまたいでカレントディレクトリの移動ができる大変便利なコマンド(この場合、現在実行中のバッチが配置されているディレクトリをカレントに設定できる)

goto NEXT

イメージ 1

日本橋コレド室町の5Fで開催中のアートアクアリウム2013で撮影した一枚
*******************************************************************************
if文とfor文。プログラムで最もメジャーな処理。
バッチプログラムでは殊更よく使います☆

設定ファイルを一行ずつ読み込んでただ表示するだけであればこう↓
for /f %%a in (%~dp0表示サンプル.txt) do echo %%a

カンマ区切りで読み込んで、3つ目だけ表示するならこう↓
for /f "delims=, tokens=1,2,3" %%a in (%~dp0表示サンプル.txt) do echo %%c

2つ目が”A”だったときだけ3つ目を表示する↓
for /f "delims=, tokens=1,2,3" %%a in (%~dp0表示サンプル.txt) do if "%%b" == "A" echo %%c

せっかくですので、意外と便利な2行のコマンドを以下に記載します。
for /f "delims=/ tokens=1,2,3" %%a in ('date /t') do set DAYTIME=%%a%%b%%c
mkdir C:\%DAYTIME%

↑何をやっている?日付名称のフォルダをC直下につくるコマンドです。

サンプルコマンド(バッチ)
-------------------------------------------------------------------------------
@echo off
rem color 80 背景:灰色/文字:黒色
color 80

rem 現在日付データを"/"で区切って1つ目(年)を a に、2つ目(月)を b に、3つ目(日)を c に格納する
for /f "delims=/ tokens=1,2,3" %%a in ('date /t') do set DAYTIME=%%a%%b%%c

rem Cドライブ直下に日付のフォルダを作成する
mkdir C:\%DAYTIME%

pause

:END
-------------------------------------------------------------------------------

「delims=」 ← ”=”の後ろの文字で読み込んだ文字列を区切ります。
「tokens=1,2,3,,,」 ← 文字区切りして読み込んだ引数をいくつ保持するかを指定します。

goto NEXT

↑このページのトップヘ