Windows/バッチファイル
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
-[[知識ゼロからのwindowsバッチファイル超入門:https://jj-b...
-[[コマンドプロンプトを使ってみよう:http://ykr414.com/dos...
-[[バッチファイルを使用する:http://www.microsoft.com/tech...
-[[開発に役立つ,BATファイルの書き方・パターン集 (コマ...
-[[【bat】Windowsのバッチファイル(*.bat)の書き方自分用ま...
-[[Windows Serverで動作する、バックアップ+世代管理してく...
-[[Windows PowerShellを使ってデータファイルを圧縮するバッ...
-[[簡易バックアップの世代管理:https://plaza.rakuten.co.jp...
-[[【bat】経過日数およびファイル数で古いファイルを削除す...
*引数 [#xfcd4acd]
-[[バッチファイルでよく使う書き方まとめ:https://qiita.com...
*パラメーターの修飾子 [#hc7bb46d]
| 修飾子 | 機能・用途 |h
| %~1 | 全ての引用句(")を削除して%1を展開する。|
| %~f1 | %1を完全修飾パス名に展開する。|
| %~d1 | %1をドライブ名だけに展開する。|
| %~p1 | %1をパスだけに展開する。|
| %~n1 | %1をファイル名だけに展開する。|
| %~x1 | %1をファイル拡張子だけに展開する。|
| %~s1 | 展開されたパスはMS-DOSの「8.3形式」でも短い名...
| %~a1 | %1をファイル属性に展開する。|
| %~t1 | %1をファイルの日付・時刻に展開する。|
| %~z1 | %1をファイルのサイズに展開する。|
| %~$PATH:1 | PATH環境に指定されているディレクトリを検索...
*変数 [#tc80f1d6]
-[[コマンドの実行結果を変数にセットする:https://commandpr...
-[[バッチ処理のパイプ「| の使い方が誤っています。」エラー...
**set [#dfaa59f4]
-[[set(変数の設定・計算・ユーザーからの入力情報の取得):...
-値をセット
set [変数名]=[代入したい文字列]
-計算を行うときは、「/a」オプションを指定
set /a [変数]=[計算式]
--計算式で使える演算子は + - * / %%(剰余)
*バッチファイル内で使えるコマンド [#i8801e6a]
| コマンド | 機能 |h
| echo | バッチファイルの中のメッセージの表示、非表示 |
| rem | 注釈行を設定する。 |
| pause | バッチファイルの処理を一時停止させる。 |
| if else | 条件によって処理を分岐する。 |
| goto | バッチファイルの中の別の処理ブロックにジャンプす...
| call | 現在のバッチファイルから他のバッチファイルを呼び...
| for | コマンドを繰り返して実行させる。 |
| shift | バッチパラメータを繰り上げる。 |
| setlocal | バッチファイルでの環境変数の使用を開始する。 |
| endlocal | バッチファイルでの環境変数の使用を終了する...
*サブルーチン [#vc2062fa]
**errorlevel [#d28acff2]
-[[errorlevel(終了コードを取得する):https://jj-blues.co...
**setlocal/endlocal [#uf4d079d]
-[[setlocalとendlocal(ローカル変数を使う):https://jj-bl...
*遅延環境変数 [#c1a27b2b]
-[[バッチファイル界の魔境『遅延環境変数』に挑む(おまけも...
*Tips [#ld93ca8b]
**スリープ [#a43a0d74]
-[[Windowsのバッチファイルで「〇秒休止(sleep)」するには...
-[[バッチファイルで指定日時まで待つ:https://qiita.com/too...
**終了 [#u34f4424]
-[[Windows、バッチファイル(.bat)を終了するときは「exit...
-[[【バッチ】時刻を比較して処理を終了させる:https://qiita...
**文字列0埋めフォーマット [#w7c121c9]
-[[Windowsバッチで0埋めフォーマットする:https://bbh.bz/20...
**改行 [#x6570cd2]
-[[echoで改行する:https://jj-blues.com/cms/wantto-echonew...
echo;
**日付・時間 [#nced1683]
-[[バッチファイルで日付(yyyymmdd)、時間(hhmiss)を取得...
--年
%DATE:~-10,4%
--月
%DATE:~-5,2%
--日
%DATE:~-2%
--時
%TIME:~0,2%
--分
%TIME:~3,2%
--秒
%TIME:~6,2%
-1週間前の日付の文字列を取得
--[[バッチとPowerShellで昨日の日付を取得する:https://www....
FOR /F "usebackq delims=" %%a in (`powershell "(get-date...
**曜日 [#sa81dd9d]
-[[BATスクリプト 曜日の取得:http://yanor.net/wiki/?Window...
**ファイル検索 [#g3e883bb]
-[[windosの指定日付より前のファイルを削除する:https://qii...
**ファイル処理 [#s05059ca]
-[[Windowsのforfilesコマンドで条件に合うファイルを取り出...
***forfiles [#hc3fc8c5]
C:\>forfiles /?
FORFILES [/P パス名] [/M 検索マスク] [/S]
[/C コマンド] [/D [+ | -] {yyyy/MM/dd | dd}]
説明:
ファイル (または、ファイルのセット) を選んで、そのフ...
コマンドを実行します。これはバッチ ジョブの使用に便...
パラメーター一覧:
/P パス名 検索を開始するパスを示します。
既定のフォルダーは現在実行中の
ディレクトリ (.) です。
/M 検索マスク 検索マスクによってファイルを検索...
既定の検索マスクは '*' です。
/S サブディレクトリに対しても処理を...
指示します (例: "DIR /S")。
/C コマンド 各ファイルの実行するコマンドを示...
コマンドの文字列は二重引用符で囲...
さい。
既定のコマンドは "cmd /c echo @f...
次の変数をコマンドの文字列に使用...
ます:
@file - フィルの名前を返しま...
@fname - 拡張子なしのファイル...
返します。
@ext - ファイルの拡張子だけ...
ます。
@path - ファイルの完全なパス...
@relpath - ファイルの相対パスを...
ます。
@isdir - ファイルの種類がディ...
は "TRUE"を、ファイル...
"FALSE" を返します。
@fsize - ファイルのサイズをバ...
ます。
@fdate - ファイルの最終更新日...
ます。
@ftime - ファイルの最終更新時...
ます。
コマンド ラインに特殊文字を使用...
文字を 16 進数コードで 0xHH 形式...
タブは 0x09) 指定してください。C...
内部コマンドの前には "cmd /c" が...
です。
/D 日付 最終更新日が指定された日かもしく...
以降 (+)、または指定された日また...
以前 (-) であるファイルを "yyyy/...
て選択します。または、最終更新日...
の日にちより "dd" 日あと、もしく...
前であるファイルを選択します。有...
値は 0 から 32768 の間です。
指定がない場合は、"+" が既定で使...
れます。
/? ヘルプまたは使用法を表示します。
例:
FORFILES /?
FORFILES
FORFILES /P C:\WINDOWS /S /M DNS*.*
FORFILES /S /M *.txt /C "cmd /c type @file | more"
FORFILES /P C:\ /S /M *.bat
FORFILES /D -30 /M *.exe
/C "cmd /c echo @path 0x09 was changed 30 d...
FORFILES /D 2001/01/01
/C "cmd /c echo @fname is new since Jan 1st...
FORFILES /D +2019/7/23 /C "cmd /c echo @fname is new...
FORFILES /M *.exe /D +1
FORFILES /S /M *.doc /C "cmd /c echo @fsize"
FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepa...
***サンプル)過去ファイル削除 [#u409884c]
rem ************************************************
@echo 引数1:対象フォルダ
@echo 引数2:ファイルパターン
@echo 引数3:経過日数
rem ************************************************
@echo off
set PARAM_ALL_SET=TRUE
if "%~1" == "" set PARAM_ALL_SET=FALSE
if "%~2" == "" set PARAM_ALL_SET=FALSE
if "%~3" == "" set PARAM_ALL_SET=FALSE
if %PARAM_ALL_SET%==FALSE (
@echo usage: delete_old_files 対象フォルダ ファイル...
exit /B
)
if not exist "%1\" (
@echo 存在しないフォルダが指定されました
exit /B
)
@echo 引数1のフォルダ内の、引数2のパターンに合致するファ...
forfiles /p %1 /m %2 /d -%3 /c "cmd /c del @file"
**イベントログ [#j5ba111f]
-[[Windowsイベントログをテキスト形式でエクスポートする方...
-[[【Windows】イベントログをコマンドで保存する[Get-Event...
***[[wevtutil:https://docs.microsoft.com/ja-jp/windows-se...
-[[wevtutil でイベントログをフィルタリングするサンプル:ht...
*作成事例 [#u64ab302]
**指定時刻になったらイベントログを出力 [#m9fe416c]
@echo off
rem イベントログを出力したい時刻を指定
set HH=03
set MM=00
set SS=00
rem 複数のコマンドをパイプで繋ぐ場合は,^ を | の前に書...
rem カッコ内にある "`" はバッククォートというもので,シ...
for /f "usebackq" %%t in (`dir /A-D /B eventlog_system* ...
set /a count_evlog_system=%count_evlog_system%+1
rem ファイル連番(0埋め)
set formated_seq=000%count_evlog_system%
rem 右から3文字を抜き出す
set formated_seq=%formated_seq:~-3%
for /f "usebackq delims=," %%a in (`powershell "(get-dat...
echo %tm% になったらイベントログを出力
echo.
echo %date% %time%
rem tmまで待つ
powershell "$w = [DateTime]'%tm%' ; if ((get-date) -lt $...
echo %date% %time%
rem イベントログ/System をテキストで出力
rem wevtutil qe System /f:text /rd:true > eventlog_syste...
rem イベントログ/Application をテキストで出力
rem wevtutil qe Application /f:text /rd:true > eventlog_...
rem イベントログ/System をエクスポート(イベントログ形...
wevtutil epl System eventlog_system-%formated_seq%.evtx
rem イベントログ/Application をエクスポート(イベントロ...
wevtutil epl Application eventlog_application-%formated_...
goto :eof
終了行:
-[[知識ゼロからのwindowsバッチファイル超入門:https://jj-b...
-[[コマンドプロンプトを使ってみよう:http://ykr414.com/dos...
-[[バッチファイルを使用する:http://www.microsoft.com/tech...
-[[開発に役立つ,BATファイルの書き方・パターン集 (コマ...
-[[【bat】Windowsのバッチファイル(*.bat)の書き方自分用ま...
-[[Windows Serverで動作する、バックアップ+世代管理してく...
-[[Windows PowerShellを使ってデータファイルを圧縮するバッ...
-[[簡易バックアップの世代管理:https://plaza.rakuten.co.jp...
-[[【bat】経過日数およびファイル数で古いファイルを削除す...
*引数 [#xfcd4acd]
-[[バッチファイルでよく使う書き方まとめ:https://qiita.com...
*パラメーターの修飾子 [#hc7bb46d]
| 修飾子 | 機能・用途 |h
| %~1 | 全ての引用句(")を削除して%1を展開する。|
| %~f1 | %1を完全修飾パス名に展開する。|
| %~d1 | %1をドライブ名だけに展開する。|
| %~p1 | %1をパスだけに展開する。|
| %~n1 | %1をファイル名だけに展開する。|
| %~x1 | %1をファイル拡張子だけに展開する。|
| %~s1 | 展開されたパスはMS-DOSの「8.3形式」でも短い名...
| %~a1 | %1をファイル属性に展開する。|
| %~t1 | %1をファイルの日付・時刻に展開する。|
| %~z1 | %1をファイルのサイズに展開する。|
| %~$PATH:1 | PATH環境に指定されているディレクトリを検索...
*変数 [#tc80f1d6]
-[[コマンドの実行結果を変数にセットする:https://commandpr...
-[[バッチ処理のパイプ「| の使い方が誤っています。」エラー...
**set [#dfaa59f4]
-[[set(変数の設定・計算・ユーザーからの入力情報の取得):...
-値をセット
set [変数名]=[代入したい文字列]
-計算を行うときは、「/a」オプションを指定
set /a [変数]=[計算式]
--計算式で使える演算子は + - * / %%(剰余)
*バッチファイル内で使えるコマンド [#i8801e6a]
| コマンド | 機能 |h
| echo | バッチファイルの中のメッセージの表示、非表示 |
| rem | 注釈行を設定する。 |
| pause | バッチファイルの処理を一時停止させる。 |
| if else | 条件によって処理を分岐する。 |
| goto | バッチファイルの中の別の処理ブロックにジャンプす...
| call | 現在のバッチファイルから他のバッチファイルを呼び...
| for | コマンドを繰り返して実行させる。 |
| shift | バッチパラメータを繰り上げる。 |
| setlocal | バッチファイルでの環境変数の使用を開始する。 |
| endlocal | バッチファイルでの環境変数の使用を終了する...
*サブルーチン [#vc2062fa]
**errorlevel [#d28acff2]
-[[errorlevel(終了コードを取得する):https://jj-blues.co...
**setlocal/endlocal [#uf4d079d]
-[[setlocalとendlocal(ローカル変数を使う):https://jj-bl...
*遅延環境変数 [#c1a27b2b]
-[[バッチファイル界の魔境『遅延環境変数』に挑む(おまけも...
*Tips [#ld93ca8b]
**スリープ [#a43a0d74]
-[[Windowsのバッチファイルで「〇秒休止(sleep)」するには...
-[[バッチファイルで指定日時まで待つ:https://qiita.com/too...
**終了 [#u34f4424]
-[[Windows、バッチファイル(.bat)を終了するときは「exit...
-[[【バッチ】時刻を比較して処理を終了させる:https://qiita...
**文字列0埋めフォーマット [#w7c121c9]
-[[Windowsバッチで0埋めフォーマットする:https://bbh.bz/20...
**改行 [#x6570cd2]
-[[echoで改行する:https://jj-blues.com/cms/wantto-echonew...
echo;
**日付・時間 [#nced1683]
-[[バッチファイルで日付(yyyymmdd)、時間(hhmiss)を取得...
--年
%DATE:~-10,4%
--月
%DATE:~-5,2%
--日
%DATE:~-2%
--時
%TIME:~0,2%
--分
%TIME:~3,2%
--秒
%TIME:~6,2%
-1週間前の日付の文字列を取得
--[[バッチとPowerShellで昨日の日付を取得する:https://www....
FOR /F "usebackq delims=" %%a in (`powershell "(get-date...
**曜日 [#sa81dd9d]
-[[BATスクリプト 曜日の取得:http://yanor.net/wiki/?Window...
**ファイル検索 [#g3e883bb]
-[[windosの指定日付より前のファイルを削除する:https://qii...
**ファイル処理 [#s05059ca]
-[[Windowsのforfilesコマンドで条件に合うファイルを取り出...
***forfiles [#hc3fc8c5]
C:\>forfiles /?
FORFILES [/P パス名] [/M 検索マスク] [/S]
[/C コマンド] [/D [+ | -] {yyyy/MM/dd | dd}]
説明:
ファイル (または、ファイルのセット) を選んで、そのフ...
コマンドを実行します。これはバッチ ジョブの使用に便...
パラメーター一覧:
/P パス名 検索を開始するパスを示します。
既定のフォルダーは現在実行中の
ディレクトリ (.) です。
/M 検索マスク 検索マスクによってファイルを検索...
既定の検索マスクは '*' です。
/S サブディレクトリに対しても処理を...
指示します (例: "DIR /S")。
/C コマンド 各ファイルの実行するコマンドを示...
コマンドの文字列は二重引用符で囲...
さい。
既定のコマンドは "cmd /c echo @f...
次の変数をコマンドの文字列に使用...
ます:
@file - フィルの名前を返しま...
@fname - 拡張子なしのファイル...
返します。
@ext - ファイルの拡張子だけ...
ます。
@path - ファイルの完全なパス...
@relpath - ファイルの相対パスを...
ます。
@isdir - ファイルの種類がディ...
は "TRUE"を、ファイル...
"FALSE" を返します。
@fsize - ファイルのサイズをバ...
ます。
@fdate - ファイルの最終更新日...
ます。
@ftime - ファイルの最終更新時...
ます。
コマンド ラインに特殊文字を使用...
文字を 16 進数コードで 0xHH 形式...
タブは 0x09) 指定してください。C...
内部コマンドの前には "cmd /c" が...
です。
/D 日付 最終更新日が指定された日かもしく...
以降 (+)、または指定された日また...
以前 (-) であるファイルを "yyyy/...
て選択します。または、最終更新日...
の日にちより "dd" 日あと、もしく...
前であるファイルを選択します。有...
値は 0 から 32768 の間です。
指定がない場合は、"+" が既定で使...
れます。
/? ヘルプまたは使用法を表示します。
例:
FORFILES /?
FORFILES
FORFILES /P C:\WINDOWS /S /M DNS*.*
FORFILES /S /M *.txt /C "cmd /c type @file | more"
FORFILES /P C:\ /S /M *.bat
FORFILES /D -30 /M *.exe
/C "cmd /c echo @path 0x09 was changed 30 d...
FORFILES /D 2001/01/01
/C "cmd /c echo @fname is new since Jan 1st...
FORFILES /D +2019/7/23 /C "cmd /c echo @fname is new...
FORFILES /M *.exe /D +1
FORFILES /S /M *.doc /C "cmd /c echo @fsize"
FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepa...
***サンプル)過去ファイル削除 [#u409884c]
rem ************************************************
@echo 引数1:対象フォルダ
@echo 引数2:ファイルパターン
@echo 引数3:経過日数
rem ************************************************
@echo off
set PARAM_ALL_SET=TRUE
if "%~1" == "" set PARAM_ALL_SET=FALSE
if "%~2" == "" set PARAM_ALL_SET=FALSE
if "%~3" == "" set PARAM_ALL_SET=FALSE
if %PARAM_ALL_SET%==FALSE (
@echo usage: delete_old_files 対象フォルダ ファイル...
exit /B
)
if not exist "%1\" (
@echo 存在しないフォルダが指定されました
exit /B
)
@echo 引数1のフォルダ内の、引数2のパターンに合致するファ...
forfiles /p %1 /m %2 /d -%3 /c "cmd /c del @file"
**イベントログ [#j5ba111f]
-[[Windowsイベントログをテキスト形式でエクスポートする方...
-[[【Windows】イベントログをコマンドで保存する[Get-Event...
***[[wevtutil:https://docs.microsoft.com/ja-jp/windows-se...
-[[wevtutil でイベントログをフィルタリングするサンプル:ht...
*作成事例 [#u64ab302]
**指定時刻になったらイベントログを出力 [#m9fe416c]
@echo off
rem イベントログを出力したい時刻を指定
set HH=03
set MM=00
set SS=00
rem 複数のコマンドをパイプで繋ぐ場合は,^ を | の前に書...
rem カッコ内にある "`" はバッククォートというもので,シ...
for /f "usebackq" %%t in (`dir /A-D /B eventlog_system* ...
set /a count_evlog_system=%count_evlog_system%+1
rem ファイル連番(0埋め)
set formated_seq=000%count_evlog_system%
rem 右から3文字を抜き出す
set formated_seq=%formated_seq:~-3%
for /f "usebackq delims=," %%a in (`powershell "(get-dat...
echo %tm% になったらイベントログを出力
echo.
echo %date% %time%
rem tmまで待つ
powershell "$w = [DateTime]'%tm%' ; if ((get-date) -lt $...
echo %date% %time%
rem イベントログ/System をテキストで出力
rem wevtutil qe System /f:text /rd:true > eventlog_syste...
rem イベントログ/Application をテキストで出力
rem wevtutil qe Application /f:text /rd:true > eventlog_...
rem イベントログ/System をエクスポート(イベントログ形...
wevtutil epl System eventlog_system-%formated_seq%.evtx
rem イベントログ/Application をエクスポート(イベントロ...
wevtutil epl Application eventlog_application-%formated_...
goto :eof
ページ名: