トッカンソフトウェア

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

			

ページのトップへ戻る