DOSバッチ集

## 初めに

この頃は会社に外部データを入れるのが厳しい状況な時代になってきました

ちょっと前だとクラウドサーバー等に自分のお気に入りのツールや
自作のバッチを入れていたのですが　もちろん今は禁止なご時世…

とりあえず今まで作ってきたDOSバッチを置いておきます。

## ※注意
まだ作成途中や、緊急で作ったので、ソースは汚いです…
あと、ファイルコピーや移動などは**当時のコメントなしの状態**なので
・バッチファイル内にパスを入れるタイプ
・ファイルorフォルダドロップ動作するタイプ
などがありますが、今は時間がないので、今後追記はしていきたいなと・・・

まあ「**自己責任**」ってことでバグは許してください（すんません）

## 【ファイル作成系】

### フォルダ作成-月

``` bat:フォルダ作成-月.bat
@echo off

rem 年月日取得

rem 年
set sYear=%DATE:~0,4%

rem 月(ゼロ埋め対応)
set sMonth=0%DATE:~5,2%
set sMonth=%sMonth:~-2,2%

rem 日(ゼロ埋め対応)
set sDate=%DATE:~8,2%


rem 時間の取得（０時～９時までのゼロ埋め対応）
set sNowTIME=%TIME: =0%


rem 時(ゼロ埋め対応)
set sHour=%sNowTIME:~0,2%

rem 分(ゼロ埋め対応)
set sMinute=%sNowTIME:~3,2%

rem =====================================================
rem 年月日
set sYYYYMMDD=%sYear%-%sMonth%-%sDate%

rem 年月
set sYYYYMM=%sYear%年%sMonth%月

rem 時間
set sHHMISS=%sHour%%sMinute%

rem 年月日時間
set sYYYYMMDD_HHMISS=%sYYYYMMDD%_%sHHMISS%
rem =======================================================

rem フォルダ作成
mkdir %sYYYYMM%

rem =====================================================
```

### フォルダ作成-年月日-連番


``` bat:フォルダ作成-年月日-連番.bat
@echo off
rem カレント設定[ローカルの場合]
rem cd /d %~dp0

rem カレント設定[ネットワークの場合]
pushd %~dp0


rem --------------------
rem 年月日取得
rem --------------------

rem 年
set sYear=%DATE:~0,4%

rem 月(ゼロ埋め対応)
set sMonth=0%DATE:~5,2%
set sMonth=%sMonth:~-2,2%

rem 日(ゼロ埋め対応)
set sDate=%DATE:~8,2%


rem 時間の取得（０時～９時までのゼロ埋め対応）
set sNowTIME=%TIME: =0%


rem 時(ゼロ埋め対応)
set sHour=%sNowTIME:~0,2%

rem 分(ゼロ埋め対応)
set sMinute=%sNowTIME:~3,2%

rem =====================================================
rem 年月日
set sYYYYMMDD=%sYear%-%sMonth%-%sDate%

rem 年月
rem set sYYYYMM=%sYear%年%sMonth%月

rem 時間
rem set sHHMISS=%sHour%%sMinute%

rem 年月日時間
rem set sYYYYMMDD_HHMISS=%sYYYYMMDD%_%sHHMISS%

rem 基本フォルダ名設定
set sDirName=%sYYYYMMDD%

rem =======================================================
rem フォルダ作成
rem =====================================================

set count=00

rem フォルダ名
set nDirLabl=%sDirName%_%count%

rem %%aに0から9まで代入して繰り返す
for /l %%a in (1, 1, 9) do (

	if not exist %nDirLabl%%%a (
		mkdir %nDirLabl%%%a
		goto :END
	)	
)

:END

```

### 日付フォルダ作成YYYYMMDD

``` bat:日付フォルダ作成YYYYMMDD.bat
@echo off

rem カレント設定[ローカルの場合]
rem cd /d %~dp0

rem カレント設定[ネットワークの場合]
pushd %~dp0

rem --------------------
rem 年月日取得
rem --------------------

rem 年
set sYear=%DATE:~0,4%

rem 月(ゼロ埋め対応)
set sMonth=0%DATE:~5,2%
set sMonth=%sMonth:~-2,2%

rem 日(ゼロ埋め対応)
set sDate=%DATE:~8,2%


rem 時間の取得（０時～９時までのゼロ埋め対応）
set sNowTIME=%TIME: =0%


rem 時(ゼロ埋め対応)
set sHour=%sNowTIME:~0,2%

rem 分(ゼロ埋め対応)
set sMinute=%sNowTIME:~3,2%

rem =====================================================
rem 年月日
set sYYYY-MMDD=%sYear%-%sMonth%-%sDate%
set sYYYYMMDD=%sYear%%sMonth%%sDate%

rem 年月
set sYYYYMM=%sYear%年%sMonth%月

rem 時間
set sHHMISS=%sHour%%sMinute%

rem 年月日時間
set sYYYYMMDD_HHMISS=%sYYYYMMDD%_%sHHMISS%

rem 基本フォルダ名設定
set sDirName=%sYYYYMMDD%

rem =======================================================
rem フォルダ作成
rem =====================================================
mkdir .\%sDirName%

```
### フォルダ作成-年月日時分

``` batフォルダ作成-年月日時分.bat
@echo off
rem カレント設定[ローカルの場合]
rem cd /d %~dp0

rem カレント設定[ネットワークの場合]
pushd %~dp0

rem --------------------
rem 年月日取得
rem --------------------

rem 年
set sYear=%DATE:~0,4%

rem 月(ゼロ埋め対応)
set sMonth=0%DATE:~5,2%
set sMonth=%sMonth:~-2,2%

rem 日(ゼロ埋め対応)
set sDate=%DATE:~8,2%


rem 時間の取得（０時～９時までのゼロ埋め対応）
set sNowTIME=%TIME: =0%


rem 時(ゼロ埋め対応)
set sHour=%sNowTIME:~0,2%

rem 分(ゼロ埋め対応)
set sMinute=%sNowTIME:~3,2%

rem =====================================================
rem 年月日
set sYYYYMMDD=%sYear%-%sMonth%-%sDate%

rem 年月
set sYYYYMM=%sYear%年%sMonth%月

rem 時間
set sHHMISS=%sHour%%sMinute%

rem 年月日時間
set sYYYYMMDD_HHMISS=%sYYYYMMDD%_%sHHMISS%

rem 基本フォルダ名設定
set sDirName=%sYYYYMMDD_HHMISS%

rem =======================================================
rem フォルダ作成
rem =====================================================

	if not exist %sDirName% (
		mkdir %sDirName%
		goto :END
	)	

:END

```

### フォルダ作成-年月日

``` bat:フォルダ作成-年月日.bat
@echo off
rem カレント設定[ローカルの場合]
rem cd /d %~dp0

rem カレント設定[ネットワークの場合]
pushd %~dp0

rem --------------------
rem 年月日取得
rem --------------------

rem 年
set sYear=%DATE:~0,4%

rem 月(ゼロ埋め対応)
set sMonth=0%DATE:~5,2%
set sMonth=%sMonth:~-2,2%

rem 日(ゼロ埋め対応)
set sDate=%DATE:~8,2%


rem 時間の取得（０時～９時までのゼロ埋め対応）
set sNowTIME=%TIME: =0%


rem 時(ゼロ埋め対応)
set sHour=%sNowTIME:~0,2%

rem 分(ゼロ埋め対応)
set sMinute=%sNowTIME:~3,2%

rem =====================================================
rem 年月日
set sYYYYMMDD=%sYear%-%sMonth%-%sDate%

rem 年月
rem set sYYYYMM=%sYear%年%sMonth%月

rem 時間
rem set sHHMISS=%sHour%%sMinute%

rem 年月日時間
rem set sYYYYMMDD_HHMISS=%sYYYYMMDD%_%sHHMISS%

rem 基本フォルダ名設定
set sDirName=%sYYYYMMDD%

rem =======================================================
rem フォルダ作成
rem =====================================================

mkdir %sDirName%


:END

```

### フォルダ作成-プロジェクト用

``` bat:フォルダ作成-プロジェクト用.bat
@echo off

rem カレント設定[ローカルの場合]
rem cd /d %~dp0

rem カレント設定[ネットワークの場合]
pushd %~dp0

rem =====================================================
rem
rem プロジェクト用フォルダ作成
rem
rem =====================================================

mkdir .\01_要求事項
mkdir .\02_基本設計
mkdir .\03_PG仕様書
mkdir .\04_試験
mkdir .\04_試験\01_単体_エビデンスファイル
mkdir .\04_試験\02_総合_エビデンスファイル
mkdir .\04_試験\03_結合_エビデンスファイル
mkdir .\05_成果品
mkdir .\06_リリースフォルダ
mkdir .\99_参考資料
rem =====================================================

TimeOut 10

```

## 【バックアップ関連】

### バックアップ-powershellのZIP圧縮

``` bat:バックアップ-powershellのZIP圧縮.bat
@echo off

rem ===============================================================
rem       日付設定
rem ===============================================================


rem 年月日取得
rem 年
set sYear=%DATE:~0,4%

rem 月
set sMonth=%DATE:~5,2%

rem 日
set sDate=%DATE:~8,2%


rem 時間の取得（０時～９時までのゼロ埋め対応）
set sNowTIME=%TIME: =0%


rem 時(ゼロ埋め対応)
set sHour=%sNowTIME:~0,2%

rem 分(ゼロ埋め対応)
set sMinute=%sNowTIME:~3,2%

rem 日付フォルダ名
set sYYYY-MMM-DD-HHMM=%sYear%-%sMonth%-%sDate%-%sHour%%sMinute%_

set sYYYY-MM-DD=%sYear%-%sMonth%-%sDate%_


rem ----------------------------------------
rem 
rem zip圧縮 powershellで実行
rem 
rem Compress-Archive [-Path] 圧縮したいファイルパス [-DestinationPath] 圧縮後のzipファイル [パラメータ]
rem 
rem 複数フォルダの場合
rem Compress-Archive [-Path] 圧縮したいファイルパス,圧縮したいファイルパス [-DestinationPath] 圧縮後のzipファイル [パラメータ]
rem 
rem 強制上書き -Force
rem 
rem ----------------------------------------

rem バックアップ先(フォルダ指定)
set bakupPath=.\XXX_bakupPath_XXX

rem 保存先フォルダ
set zipPath=D:\_My_DIR\000-bakup\
rem 保存ファイル名
set zipName=%sYYYY-MMM-DD-HHMM%BakupName.zip
rem 保存先フルパス
set fullZipPath=%zipPath%%zipName%

rem powershellで zip圧縮 実行
powershell compress-archive -Path %bakupPath%\* -DestinationPath %fullZipPath%

start "" %zipPath%

Timeout 5

```

### バックアップ-ファイルコピー(日付フォルダ内)

``` bat:バックアップ-ファイルコピー(日付フォルダ内).bat
@echo off

rem ===============================================================
rem       バックアップ処理
rem ===============================================================


rem echo 01)フォルダ設定
rem ===============================================================
rem       フォルダ設定
rem ===============================================================

rem バックアップフォルダ
set sBakUpBaseDIR=\\BakUpBaseDIR\フォルダ\2001023\04_プログラム\


rem コピー元フォルダ
set sMoveFile=D:\SVN_GIT\基盤\saucefolder

rem echo 02)日付設定

rem ===============================================================
rem       日付設定
rem ===============================================================


rem 年月日取得
rem 年
set sYear=%DATE:~0,4%

rem 月
set sMonth=%DATE:~5,2%

rem 日(ゼロ埋め対応)
set sDate=%DATE:~8,2%

rem 時間の取得（０時～９時までのゼロ埋め対応）
set sNowTIME=%TIME: =0%

rem 時(ゼロ埋め対応)
set sHour=%sNowTIME:~0,2%

rem 分(ゼロ埋め対応)
set sMinute=%sNowTIME:~3,2%

rem 日付フォルダ名
set sYYYYMMMDDHHMM_DIR=%sYear%%sMonth%%sDate%%sHour%%sMinute%
set sYYYYMMMDD_DIR=%sYear%%sMonth%%sDate%

set sBakUpDIR=%sBakUpBaseDIR%%sYYYYMMMDD_DIR%
rem echo 03)ファイル移動
rem ===============================================================
rem       ファイル移動
rem ===============================================================

rem バックアップ用フォルダ作成(存在するときは無視)
IF NOT EXIST %sBakUpDIR% (
    mkdir %sBakUpDIR%
 )

rem コピー
xcopy /E /H /K %sMoveFile%  %sBakUpDIR%
echo コピーしました


Timeout 5

```
### バックアップ-フォルダ(日付＋連番) 

``` bat:バックアップ-フォルダ(日付＋連番).bat
@echo off

rem echo 01)フォルダ設定
rem ===============================================================
rem       フォルダ設定
rem ===============================================================

rem バックアップフォルダ元
set sBakUpDIR=D:\_My_dir\000-バックアップ\バックアップフォルダ\

rem バックアップ作成フォルダ名
set sMakeDir=作られるフォルダ名

rem コピー元フォルダ
set sMoveFile=\\192.168.0.1\システム\案件\10_開発資料\調査資料\

rem echo 02)日付設定

rem ===============================================================
rem       日付設定
rem ===============================================================

rem 年月日取得
rem 年
set sYear=%DATE:~0,4%
rem 月
set sMonth=%DATE:~5,2%
rem 日(ゼロ埋め対応)
set sDate=%DATE:~8,2%

rem 時間の取得（０時～９時までのゼロ埋め対応）
set sNowTIME=%TIME: =0%
rem 時(ゼロ埋め対応)
set sHour=%sNowTIME:~0,2%
rem 分(ゼロ埋め対応)
set sMinute=%sNowTIME:~3,2%

rem 日付フォルダ名(日時あり)
set sYYYYMMMDDHHMM_DIR=%sYear%-%sMonth%-%sDate%_%sHour%%sMinute%

rem 日付フォルダ名(日付のみ)
set sYYYY-MM-DD-DIR=%sYear%-%sMonth%-%sDate%

rem echo 03)ファイル移動
rem ===============================================================
rem       ファイル移動
rem ===============================================================

rem 連番
set count=00

rem バックアップ先フォルダフルパス名（連番・名称除く）
set sBakUpFullDir=%sBakUpDIR%%sYear%-%sMonth%-%sDate%-%count%

rem %%aに0から9まで代入して繰り返す
for /l %%a in (1, 1, 9) do (

	if not exist %sBakUpFullDir%%%a-%sMakeDir% (

		rem */E ファイルが存在しなくてもディレクトリごとコピーする
		rem */H 隠しファイルやシステムファイルも全てコピーする
		rem */R 読み取り専用属性のファイルも上書きコピーできるようにする
		rem */I コピー先のディレクトリが存在しない場合は新規にディレクトリを作成する
		rem */K 通常は解除される読み取り専用属性を維持したままコピーする

		rem /D コピー先に同名のファイルが存在する場合に更新日が新しいファイルのみコピーする
		rem /S ファイルが存在する場合のみディレクトリごとコピーする
		rem /O ファイルの所有権やアクセス権限もそのままコピーする

		xcopy %sMoveFile% %sBakUpFullDir%%%a-%sMakeDir% /E /R /I /K /H
		goto :END
	)	
)



:END

echo コピーしました
rem フォルダを開く
start "*" %sBakUpDIR%

timeout 3

```

### バックアップ-フォルダ単位(日付付き)

``` bat:バックアップ-フォルダ単位(日付付き).bat
@echo off

rem echo 01)フォルダ設定
rem ===============================================================
rem       フォルダ設定
rem ===============================================================

rem バックアップフォルダ名
set sBakUpNAME=bak

rem バックアップフォルダ元
set sBakUpDIR=C:\_Git_Hist\


rem コピー元フォルダ
set sMoveFile=C:\_Git\

rem echo 02)日付設定

rem ===============================================================
rem       日付設定
rem ===============================================================


rem 年月日取得
rem 年
set sYear=%DATE:~0,4%

rem 月
set sMonth=%DATE:~5,2%

rem 日
set sDate=%DATE:~8,2%


rem 時間の取得（０時～９時までのゼロ埋め対応）
set sNowTIME=%TIME: =0%


rem 時(ゼロ埋め対応)
set sHour=%sNowTIME:~0,2%

rem 分(ゼロ埋め対応)
set sMinute=%sNowTIME:~3,2%

rem 日付フォルダ名
set sYYYYMMMDDHHMM_DIR=%sYear%-%sMonth%-%sDate%_%sHour%%sMinute%

set sYYYY-MM-DD-DIR=%sYear%-%sMonth%-%sDate%

rem echo 03)ファイル移動
rem ===============================================================
rem       ファイル移動
rem ===============================================================

rem バックアップ用フォルダ作成(存在するときは無視)
rem IF NOT EXIST %sBakUpNAME% (
rem    mkdir %sBakUpNAME%
rem )
rem フォルダ作成
rem mkdir %sBakUpDIR%%sYYYYMMMDDHHMM_DIR%

rem */E ファイルが存在しなくてもディレクトリごとコピーする
rem */H 隠しファイルやシステムファイルも全てコピーする
rem */R 読み取り専用属性のファイルも上書きコピーできるようにする
rem */I コピー先のディレクトリが存在しない場合は新規にディレクトリを作成する
rem */K 通常は解除される読み取り専用属性を維持したままコピーする

rem /D コピー先に同名のファイルが存在する場合に更新日が新しいファイルのみコピーする
rem /S ファイルが存在する場合のみディレクトリごとコピーする
rem /O ファイルの所有権やアクセス権限もそのままコピーする

rem 移動
xcopy %sMoveFile%\soc-com-588-pasto-system %sBakUpDIR%%sYYYY-MM-DD-DIR%-000-soc-com-588-pasto-system\ /E /R /I /K /H

echo コピーしました

timeout 3

rem 

```
### ファイルコピー(上書き)

``` bat:ファイルコピー(上書き).bat
@echo off

rem echo 01)フォルダ設定
rem ===============================================================
rem       フォルダ設定
rem ===============================================================


rem コピー元フォルダ
set sMoveFromDIR=C:\my_Dir\00-XX\001-伝票\

rem コピー先フォルダ
set sMoveToDIR=.\xxxxxx\


rem コピーファイル名
set sCopyFileName=*.*


rem コピー
copy %sMoveFromDIR%%sCopyFileName% %sMoveToDIR%%sCopyFileName%
echo コピーしました


Timeout 5

```

### ファイルコピー(日付付き)

``` bat:ファイルコピー(日付付き).bat
@echo off

rem echo 01)フォルダ設定
rem ===============================================================
rem       フォルダ設定
rem ===============================================================

rem バックアップフォルダ名
set sBakUpNAME=bak

rem バックアップフォルダ元
set sBakUpDIR=.\%sBakUpNAME%\


rem コピー元フォルダ
rem set sMoveFile=//192.168.0.1/myDir/01_テーブル設計/*.xlsm
set sMoveFile=C:\my_Dir\000-伝票（完）\

rem コピーファイル名
set sCopyFileName=システム設計.xlsm

rem echo 02)日付設定

rem ===============================================================
rem       日付設定
rem ===============================================================


rem 年月日取得
rem 年
set sYear=%DATE:~0,4%

rem 月
set sMonth=%DATE:~5,2%

rem 日(ゼロ埋め対応)
set sDate=%DATE:~8,2%


rem 時間の取得（０時～９時までのゼロ埋め対応）
set sNowTIME=%TIME: =0%


rem 時(ゼロ埋め対応)
set sHour=%sNowTIME:~0,2%

rem 分(ゼロ埋め対応)
set sMinute=%sNowTIME:~3,2%

rem 日付フォルダ名
set sYYYYMMMDDHHMM_DIR=%sYear%-%sMonth%-%sDate%_%sHour%%sMinute%

rem echo 03)ファイル移動
rem ===============================================================
rem       ファイル移動
rem ===============================================================

rem バックアップ用フォルダ作成(存在するときは無視)
rem IF NOT EXIST %sBakUpNAME% (
rem    mkdir %sBakUpNAME%
rem )
rem フォルダ作成
rem mkdir %sBakUpDIR%%sYYYYMMMDDHHMM_DIR%

rem 移動
copy %sMoveFile%%sCopyFileName% %sYear%%sMonth%%sDate%%sHour%_%sCopyFileName%
echo コピーしました


Timeout 5

```
### ファイル移動

``` bat:ファイル移動.bat
@echo off

rem ===============================================================
rem       ファイル移動
rem ===============================================================

SET FROM_DIR=E:\000_データ作成\既存ファイル\
SET TO_DIR=C:\_Dir\01-データ作成\既存出力ファイル\

rem 移動 【xcopy】
rem /Y 同名のファイルが存在する場合、上書きの確認を行わない
rem /-Y同名のファイルが存在する場合、上書きの確認を行う
rem /I コピー先のディレクトリが存在しない場合は新規にディレクトリを作成する
rem /E ファイルが存在しなくてもディレクトリごとコピーする
xcopy /E /Y /I %FROM_DIR% %TO_DIR%

rem ファイル削除【del】
rem /P ファイルの削除前に確認メッセージを表示する
rem /S 指定したファイルを全てのサブディレクトリから削除し、削除したファイル名を表示する
rem /A:R 読み取り専用属性のファイルを削除する
rem /A:S システムファイルを削除する
rem /A:H 隠しファイルを削除する
rem /A:A アーカイブを削除する
rem /Q 削除前に確認メッセージを表示しない
del /S /Q %FROM_DIR%

Timeout 5
```
## 【情報取得関連】

### ファイル情報

``` bat:ファイル情報.bat
@echo off

rem ===============================================================
rem       日付設定
rem ===============================================================

rem 年月日取得
rem 年
set sYear=%DATE:~0,4%

rem 月
set sMonth=%DATE:~5,2%

rem 日(ゼロ埋め対応)
set sDate=%DATE:~8,2%


rem 時間の取得（０時～９時までのゼロ埋め対応）
set sNowTIME=%TIME: =0%


rem 時(ゼロ埋め対応)
set sHour=%sNowTIME:~0,2%

rem 分(ゼロ埋め対応)
set sMinute=%sNowTIME:~3,2%


echo 第1引数は「%1」です。

echo そのまま表示
echo %1
echo:

echo ダブルクォーテーション「"」を除いて表示
echo %~1
echo:

echo ドライブ名を表示せず、パス名だけを表示
echo %~p1
echo:

echo ファイル名のみ表示
echo %~n1
echo:

echo ファイルの更新日時を表示
echo %~t1
echo:

pause

```

### フォルダ構造ツリー作成


``` bat:フォルダ構造ツリー作成.bat
tree > tree.txt
```

### File一覧作成

``` bat:File一覧作成.bat

@echo off

cd /d %~dp0

rem =======================================================
rem 年月日取得
rem 年
set sYear=%DATE:~0,4%

rem 月(ゼロ埋め対応)
set sMonth=0%DATE:~5,2%
set sMonth=%sMonth:~-2,2%

rem 日(ゼロ埋め対応)
set sDate=%DATE:~8,2%

rem 時間の取得（０時～９時までのゼロ埋め対応）
set sNowTIME=%TIME: =0%

rem 時(ゼロ埋め対応)
set sHour=%sNowTIME:~0,2%

rem 分(ゼロ埋め対応)
set sMinute=%sNowTIME:~3,2%

rem 年月日
set sYYYYMMDD=%sYear%%sMonth%%sDate%

rem 時間
set sHHMISS=%sHour%%sMinute%

rem 年月日時間
set sYYYYMMDD_HHMISS=%sYYYYMMDD%_%sHHMISS%

rem =======================================================


rem 自分のディレクトリ
SET MYDIR=%CD%\

rem タイムアウト時間
SET OUT_TIME=5

rem 作成フラグ
SET MAKE_LIST_FLG=0

rem 作成中メッセージ
SET MAKE_NSG=作成中…
SET END_NSG=作成完了


SET INPUT_DIR=""
SET FILE_NAME=""

echo %sYYYYMMDD_HHMISS%
echo ■■■■■■■■■■■■■■■■■■■■■■
echo ■　　　　フォルダ内一覧リスト作成　　　　■
echo.
echo  【注意】
echo.
echo  ・指定するパスはフルパスで記入してください
echo    例)D:\hoge/hoge
echo.
echo  ・検索結果はこのバッチファイルと同じところ
echo    に作成されます。
echo.
echo  ・ファイル名で半角記号は現在未対応です
echo    例)　^(^)^<^>^{^}…
echo.
echo ■　　　　　　　　　　　　　　　　　　　　■
echo ■■■■■■■■■■■■■■■■■■■■■■
echo 対象フォルダ(フルパス)を指定してください
echo 例)D:\hoge/hoge
SET /P INPUT_DIR=">"

rem ディレクトリ異動
cd /D %INPUT_DIR%

echo 出力ファイル名を指定してください
echo 例)hogeList
SET /P FILE_NAME=">"

echo 01

rem フォルダ区切り「\」がある場合はアンダーバーにする
SET FILE_NAME=%FILE_NAME:\=_%

echo 02=%FILE_NAME%

rem ファイル名の指定がない場合は固定で
IF %FILE_NAME% EQU "" (
echo 03
  SET FILE_NAME=ListFile.txt
) ELSE (
echo 04
  SET FILE_NAME=%FILE_NAME%.txt
)
echo 05

echo ****************************************
echo 対象:%INPUT_DIR%
echo.
echo 出力:%MYDIR%
echo.
echo ファイル名:%FILE_NAME%
echo.
echo 作成方法
echo ----------------------------------------
echo  1:ファイル一覧(フルパス表示)
echo  2:ファイル一覧(ファイル込みツリー表示)
echo  3:ファイル一覧(フォルダツリー表示)
echo ----------------------------------------

SET /P INPUT_STR=">"



rem ファイル作成
IF /I %INPUT_STR%==1 (
    echo %MAKE_NSG%
    SET MAKE_LIST_FLG=1
    dir /A:-D /b /s /O:GN > %MYDIR%\%sYYYYMMDD_HHMISS%_フルパス表示_%FILE_NAME%
 )

IF /I %INPUT_STR%==2 (
    echo %MAKE_NSG%
    SET MAKE_LIST_FLG=1
    tree /f >  %MYDIR%\%sYYYYMMDD_HHMISS%_ツリー表示_ファイル有_%FILE_NAME%

 )

IF /I %INPUT_STR%==3 (
    echo %MAKE_NSG%
    SET MAKE_LIST_FLG=1
    tree / >  %MYDIR%\%sYYYYMMDD_HHMISS%_ツリー表示_フォルダのみ_%FILE_NAME%
 )

rem 作成結果表示
IF %MAKE_LIST_FLG%==1 (
    echo %MYDIR% 配下を作成しました
    echo %END_NSG%
    TIMEOUT %OUT_TIME%
) else (
    echo 作成されませんでした
    TIMEOUT %OUT_TIME%
)


start "*" %MYDIR%\

exit


```


### PC情報取得_ファイル出力

``` bat:PC情報取得_ファイル出力.bat
@echo off

set WriteTxt=.\\myPcInfo.txt

echo %WriteTxt% にて出力しております。

echo ------システム情報--------------------------------- > %WriteTxt%
echo. >> %WriteTxt%

systeminfo >> %WriteTxt%

echo. >> %WriteTxt%
echo ------製品番号(UTF-8)------------------------------------- >> %WriteTxt%
echo. >> %WriteTxt%

wmic csproduct get name >> %WriteTxt%

echo. >> %WriteTxt%
echo ------シリアル番号(UTF-8)---------------------------------- >> %WriteTxt%
echo. >> %WriteTxt%

wmic bios get serialnumber >> %WriteTxt%

echo. >> %WriteTxt%
echo ------コンピュータ名、MACアドレス、IPアドレス-------- >> %WriteTxt%
echo. >> %WriteTxt%

ipconfig /all >> %WriteTxt%

```
### PC情報取得_表示


``` bat:PC情報取得_表示.bat
@echo off

echo ------システム情報--------------------------------- 
echo. 

systeminfo 

echo. 
echo ------製品番号(UTF-8)------------------------------------- 
echo. 

wmic csproduct get name 

echo. 
echo ------シリアル番号(UTF-8)---------------------------------- 
echo. 

wmic bios get serialnumber 

echo. 
echo ------コンピュータ名、MACアドレス、IPアドレス--------------- 
echo. 

ipconfig /all 


echo. 
echo ------マシン情報表示終了------------------------------------ 
echo. 

pause

```

### 【背景・フォント色】


``` bat:【背景・フォント色】.bat
@echo OFF
rem ----------------------------------------------------------
rem COLOR [属性]
rem   属性        コンソール出力の色属性を指定します。
rem 
rem 色属性は、2 桁の 16 進数で指定します。
rem 1 桁目は背景に、2 桁目は前景に対応します。
rem 各桁には、次のいずれかの値を指定することができます:
rem 
rem     0 = 黒          8 = 灰色
rem     1 = 青          9 = 明るい青
rem     2 = 緑          A = 明るい緑
rem     3 = 水色        B = 明るい水色
rem     4 = 赤          C = 明るい赤
rem     5 = 紫          D = 明るい紫
rem     6 = 黄色        E = 明るい黄色
rem     7 = 白          F = 輝く白
rem ----------------------------------------------------------

SET INPUT_STR=N
SET COUNT=0
SET SET_DISP=
set COLOR_CODE=""

rem サンプルのカラーの設定
call :ColorSet 

rem ================================
rem メイン処理
rem ===============================
:COLOR_MAIN

rem pause

rem 画面クリア
cls

COLOR %COLOR_CODE% 
SET SAMPLE_STR=現在のCOLOR_Set：%SET_DISP%　サンプルNo.%COUNT%


cls
rem echo ERRORLEVEL:%ERRORLEVEL%

REM 失敗した場合の処理
IF ERRORLEVEL 1 (
	echo ERRORLEVEL[%ERRORLEVEL%]
	SET COLOR_CODE=0F
	SET SET_DISP=""
)


echo.
echo  --------------カラーコード--------------
echo   COLOR[背景色][文字色]
echo.

echo   現在のCOLOR    ：[%COLOR_CODE%]

IF NOT "%SAMPLE_STR%"=="." (
echo   %SAMPLE_STR% 
)

echo.
echo     0 = 黒          8 = 灰色
echo     1 = 青          9 = 明るい青
echo     2 = 緑          A = 明るい緑
echo     3 = 水色        B = 明るい水色
echo     4 = 赤          C = 明るい赤
echo     5 = 紫          D = 明るい紫
echo     6 = 黄色        E = 明るい黄色
echo     7 = 白          F = 輝く白
echo.
echo  コマンド：[背景色][文字色] ※空白は前の色を引き継
echo.
echo (Q：終了)　(N or そのままEnter ：次のサンプル)
echo.
echo  -----------------------------------------

SET /P INPUT_STR=">"

IF /I %INPUT_STR%==Q    GOTO :END

rem Nの場合はサンプルの色
IF /I %INPUT_STR%==N (
	SET/a COUNT+=1
	call :ColorSet
	goto :COLOR_MAIN
)

SET COLOR_CODE=%INPUT_STR%
SET SAMPLE_STR=.

goto :COLOR_MAIN


rem ================================
rem 自動色設定
rem ===============================

:ColorSet


	IF %COUNT%==0  SET COLOR_CODE=0F & SET SET_DISP=[0:黒][F:輝白] 

	IF %COUNT%==1  SET COLOR_CODE=12 & SET SET_DISP=[1:青][2:緑] 

	IF %COUNT%==2  SET COLOR_CODE=16 & SET SET_DISP=[1:青][6:黄] 

	IF %COUNT%==3  SET COLOR_CODE=17 & SET SET_DISP=[1:青][7:白] 

	IF %COUNT%==4  SET COLOR_CODE=1A & SET SET_DISP=[1:青][A:明緑] 

	IF %COUNT%==5  SET COLOR_CODE=1B & SET SET_DISP=[1:青][B:明水] 

	IF %COUNT%==6  SET COLOR_CODE=1C & SET SET_DISP=[1:青][C:明赤] 

	IF %COUNT%==7  SET COLOR_CODE=1E & SET SET_DISP=[1:青][E:明黄] 

	IF %COUNT%==8  SET COLOR_CODE=1F & SET SET_DISP=[1:青][F:輝白] 

	IF %COUNT%==9  SET COLOR_CODE=2F & SET SET_DISP=[2:緑][F:輝白] 

	IF %COUNT%==10 SET COLOR_CODE=24 & SET SET_DISP=[2:緑][4:赤] 

	IF %COUNT%==11 SET COLOR_CODE=9A & SET SET_DISP=[9:明青][A:明緑] 

	IF %COUNT%==12 SET COLOR_CODE=9B & SET SET_DISP=[9:明青][B:明水] 

	IF %COUNT%==13 SET COLOR_CODE=9E & SET SET_DISP=[9:明青][E:明黄] 

	IF %COUNT%==14 SET COLOR_CODE=9F & SET SET_DISP=[9:明青][F:輝白] 

	IF %COUNT%==15 SET COLOR_CODE=A0 & SET SET_DISP=[A:明緑][0:黒] 

	IF %COUNT%==16 SET COLOR_CODE=A1 & SET SET_DISP=[A:明緑][1:青] 

	IF %COUNT%==17 SET COLOR_CODE=5F & SET SET_DISP=[5:紫][F:輝白] 

	IF %COUNT%==18 SET COLOR_CODE=5A & SET SET_DISP=[5:紫][A:明緑] 

	IF %COUNT%==19 SET COLOR_CODE=70 & SET SET_DISP=[7:白][0:黒] 

	IF %COUNT%==20 SET COLOR_CODE=79 & SET SET_DISP=[7:白][9:明水] 

	IF %COUNT%==21 SET COLOR_CODE=E1 & SET SET_DISP=[E:明黄][1:青] 

	IF %COUNT%==22 SET COLOR_CODE=B1 & SET SET_DISP=[B:明水][1:青] 

	IF %COUNT%==23 SET COLOR_CODE=70 & SET SET_DISP=[7:白][0:黒] 


	IF %COUNT%==23 (
		SET COUNT=0
		exit /b
	)

exit /b

rem ================================
rem 終了処理
rem ===============================
:END
exit

```


### ランチャ_簡易版

``` bat:ランチャ_簡易版.bat
@echo OFF

rem カレント設定
cd /d %~dp0

REM *************************************************************
REM 初期設定
REM *************************************************************

rem エディタのパス設定
SET MY_EDITER="C:\Program Files (x86)\sakura\"

rem Windows PowerShellのパス(コマンド込み) 
SET PowerShell="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Windows PowerShell\Windows PowerShell.lnk" -Command

REM 未入力の場合に次の画面に行くように
SET INPUT_STR=N

REM 現在の画面
SET NOW_DISP=01

rem メニュー画面表示数
SET DISP_CNT=2

REM *************************************************************
REM *************************************************************
REM 画面１(:menudisp01)
REM *************************************************************
REM *************************************************************
:menudisp01

    REM 画面初期設定
    SET NOW_DISP=1
    SET INPUT_STR=N
    CLS

    rem color 0A
    color 9E
    REM ********************[画面]*******************************
    echo ========================【メイン】画面１========================
    echo ---【XXXXXXXXXXXXXXX】---------------------------------------------------------
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo ---【XXXXXXXXXXXXXXX】---------------------------------------------------------
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo ---【XXXXXXXXXXXXXXX】---------------------------------------------------------
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo --------------------------------------------------------------------------------

    rem 入力待ち
    SET /P INPUT_STR=">"

    rem 設定画面数以下の場合は最初の画面に
    IF %NOW_DISP% lss %DISP_CNT% (
        IF /I %INPUT_STR%==N   GOTO :menudisp02
    ) ELSE (
        IF /I %INPUT_STR%==N   GOTO :menudisp01
    )

	rem 編集コマンドの場合
	IF /I %INPUT_STR%==EDIT    GOTO :APP_RUN

    GOTO :APP_RUN

REM *************************************************************
REM *************************************************************
REM 画面２(:menudisp02)
REM *************************************************************
REM *************************************************************
:menudisp02
    REM 画面初期設定
    SET NOW_DISP=2
    SET INPUT_STR=N
    CLS
    rem color 0A
    color 2F
    REM ********************[画面]*******************************
    echo ========================画面２========================
    echo ---【XXXXXXXXXXXXXXX】---------------------------------------------------------
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo ---【XXXXXXXXXXXXXXX】---------------------------------------------------------
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo ---【XXXXXXXXXXXXXXX】---------------------------------------------------------
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo  XXXX     ｜
    echo --------------------------------------------------------------------------------

    rem 入力待ち
    SET /P INPUT_STR=">"

    rem 設定画面数以下の場合は最初の画面に
    IF %NOW_DISP% lss %DISP_CNT% (
        IF /I %INPUT_STR%==N   GOTO :menudisp01
    ) ELSE (
        IF /I %INPUT_STR%==N   GOTO :menudisp01

    )
	IF /I %INPUT_STR%==R       GOTO :menudisp01

    GOTO :APP_RUN


REM *************************************************************
REM 実行部分
REM *************************************************************
:APP_RUN

    REM =======================
    REM 起動アプリ設定サブへ
    REM =======================
   GOTO :RUN_PROG

:APP_RUN_END

   rem 入力パラメータをリセットする
   SET INPUT_STR=N

   REM その画面にジャンプ
   IF %NOW_DISP%==1 GOTO :menudisp01
   IF %NOW_DISP%==2 GOTO :menudisp02


GOTO :menudisp01


REM *************************************************************
REM アプリケーション設定
REM *************************************************************

:RUN_PROG
    REM 実行確認ﾌﾗｸﾞOFFにする
    set RUN_FLG=0

    REM =======================================================================_
    REM 設定       
    REM =======================================================================_



    REM =======================================================================_
    REM ファイルフォルダ等
    REM =======================================================================_

    REM 自分用フォルダ
    IF /I %INPUT_STR%==MYDIR   set RUN_FLG=1 & START  " "  "C:\Dir"

	rem メモ帳(Excel)
	IF /I %INPUT_STR%==EMEMO    set RUN_FLG=1 & START "*" "C:\Dir\自分用_Excelメモ.xlsm"

    REM コマンドプロンプトを起動
    IF /I %INPUT_STR%==CMD         set RUN_FLG=1 & START  cmd





GOTO :APP_RUN_END

```

## 最後に
こうバッチを見ていると「日付」を入れるのが一苦労していますね
毎回　30ステップぐらいは日付の取得のための共通動作になっているので
まとめればいいのですが、バッチファイル１つで動かそうとするとこうなってしまいますね

まあ、そのうちにいい方法が見つかりましたら更新します