SSブログ

BAT Tips:よく使いそうな処理のまとめ(その1) [BAT]

今回はBATのTipsです。
よく使いそうな処理をまとめてみました。

①バッチファイル実行途中でユーザーに入力を求める
setコマンドを使います。以下はサンプルです。
@echo off
set /p USERNAME="ユーザー名を入力してください... >"
echo ユーザー名は %USERNAME% と入力されました...
pause

②バッチファイルの引数を使う
変数のうち %0 には、バッチファイル名が入り、%1 ~ %9 までには、
1番目の引数から9番目の引数が順に入ります。
@echo off
echo %0
echo %1
echo %2
echo %3
echo %4
echo %5
echo %6
echo %7
echo %8
echo %9
pause

③フォルダやファイルの存在有無
if existかif not existを使います。フォルダの場合、フォルダ名\.とするのがポイントです。
@echo off
rem Testdirフォルダ有無
if exist "C:\Testdir\." echo Testdirは存在します...
if not exist "C:\Testdir\." echo Testdirは存在しません...

rem test.txtファイル有無
if exist "C:\Testdir\test.txt" echo test.txtは存在します...
if not exist "C:\Testdir\test.txt" echo test.txtは存在しません...
pause

④環境変数中の文字列の置換
%[環境変数]:[置換元文字列]=[置換先文字列]% と書きます。
@echo off
rem /を-に変換(2012/06/16→2012-06-16)
echo %date:/=-%

rem /を削除(2012/06/16→20120616)
echo %date:/=%

rem :を-に変換(14:31:02.74→14-31-02.74)
echo %time::=-%

rem :を削除(14:31:02.74→143102.74)
echo %time::=%
pause

⑤環境変数中の文字列の取り出し
%[環境変数]:~[オフセット(位置)],[文字数]% と書きます。
@echo off
set A=123456789
rem 123456789から3456を取り出す
set B=%A:~2,4%
echo %B%
rem 文字列が取れない
set C=%A:~10,4%
echo %C%
pause

⑥改行を挿入する
echo.
echoに直後に.です。
.じゃなくても、\や=や/や+でもOKです。
echo\
echo=
echo/
echo+

⑦Sleepする(その1)
BATでvbsを作成して、引数で秒数を渡す
@echo off
rem a.bat [秒数]
set /a sleeptime=%1*1000
echo WScript.Sleep %sleeptime% > sleep.vbs
echo %time%
cscript //NoLogo sleep.vbs
echo %time%
del sleep.vbs
pause

⑧Sleepする(その2)
pingコマンドを使ってSleepする。
2秒のSleepなら、-n 3とする。Sleepしたい秒数+1するのがポイントです。
@echo off
echo %time%
ping localhost -n 3 > nul
echo %time%

⑨曜日によって処理を切り替える
BATでvbsを作成して、vbsの戻り値で曜日を決定する。
@echo off
echo WScript.Quit(WeekDay(Date)) > day.vbs
cscript //NoLogo //b day.vbs
if %errorlevel%==7 set DAY=SAT
if %errorlevel%==6 set DAY=FRI
if %errorlevel%==5 set DAY=THU
if %errorlevel%==4 set DAY=WED
if %errorlevel%==3 set DAY=TUE
if %errorlevel%==2 set DAY=MON
if %errorlevel%==1 set DAY=SUN
echo %DAY%
del day.vbs
pause

いかがでしたか。
BATではよく使う処理はありますので、また書きたいと思います。

次回もお楽しみに!!

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。