DOS、BAT
よく使うDOSコマンドを書きます。DOSコマンド関連
rem コメント
ファイルコピー
rem ファイルをコピー
copy /Y test.txt test2.txt
rem フォルダにコピー
copy /Y test.txt .\folder
/Y オプションは上書き確認なし。
ファイル移動、名前変更
rem ファイルの名前変更
move /Y test.txt test2.txt
rem フォルダに移動
move /Y test.txt .\folder
/Y オプションは上書き確認なし。
ファイル削除
rem ファイル削除
del test.txt
rem 読み取り専用ファイルも削除
del /F test.txt
/F オプションは読み取り専用ファイルも削除
フォルダ作成、削除
rem ファイル削除
mkdir C:\work\tmp
rem フォルダ削除
rmdir /S /Q C:\work\tmp
/S オプションはフォルダ内にフォルダやファイルが存在しても削除を実施。
/Q オプションは警告メッセージなし
フォルダコピー
xcopy /E /Y tmp2 tmp\
/E オプションはフォルダが空でもコピー
/Y オプションは上書き確認なし。
/D オプションは新規ファイルと更新されたファイルのみコピー
フォルダ移動→ファイルと同様。moveでいける
変数セットとメッセージ表示
rem メッセージセット。=の前後にスペースは入れない
set msg=hello world
rem hello worldと表示される
echo %msg%
rem スペースを空文字に変更
set msg2=%msg: =%
rem helloworldと表示される
echo %msg2%
変数に値を格納するにはsetを使用します。
=の前後にスペースは入れないで下さい。
変数を使うときは、前後に%を付けます。
日付と時間
rem 日付を表示 例:2020/02/11
echo %date%
rem 時刻を表示 例:17:43:48.20
echo %time%
rem 日付の数字だけ 例:20200211
set dt1=%date%
set dt2=%dt1: =0%
set dt3=%dt2:/=%
echo %dt3%
rem 時間の数字だけ 例:17434824
set tm1=%time%
set tm2=%tm1: =0%
set tm3=%tm2::=%
set tm4=%tm3:.=%
echo %tm4%
その他
rem 画面表示をクリア
cls
rem カレントフォルダの移動
cd フォルダ名
rem カレントフォルダにあるフォルダとファイルの一覧表示
dir
rem カレントドライブ移動 ドライブ:
D:
BATファイル関連
BATファイルがあるフォルダにカレントパスを移動
cd /d %~dp0
処理を途中で止める
pause
コマンド、コメントを表示しない
rem 表示される
@rem 表示されない
@echo off
rem 表示されない
@ コマンド、コメントの頭に@を付けるとバッチ実行時にコマンド、コメントの行をコマンドプロンプトに表示させません。
echo off 実行をすると、以降のコメント、コマンドをコマンドプロンプトに表示させません。
if文
@echo off
set A=1
if not %A%==1 (
echo "a"
) else if %A%==1 (
echo "b"
) else (
echo "c"
)
if exist C:\work\tmp\test.txt (
echo "d"
)
pause
for文
@echo off
for %%s in (*.txt) do (
echo カレントフォルダのファイル:%%s
)
for /r %%s in (*.txt) do (
echo 子フォルダ内のファイルも含む:%%s
)
for %%s in (a,b,c) do (
echo abcのどれか:%%s
)
for /l %%i in (0,1,5) do (
echo 0~5:%%i
)
pause
for文でファイルループしてパスを編集
@echo off
rem forでsetを使う場合に必要。%の代わりに!を使用する。
setlocal enabledelayedexpansion
for %%s in (*.txt) do (
rem フルパス(C:\tmp\test.txt)
set fullPath=%%~fs
rem ドライブ(C:)
set drive=%%~ds
rem 親パス(\tmp\)
set parent=%%~ps
rem ファイル名(test.txt)
set name=%%s
rem 拡張子なしファイル名(test)
set nameNoExt=%%~ns
rem 拡張子(.txt)
set ext=%%~xs
rem 日時
set dateTime=%%~ts
echo !fullPath!
echo !drive!
echo !parent!
echo !name!
echo !nameNoExt!
echo !ext!
echo !dateTime!
)
pause
ページのトップへ戻る