アットウィキロゴ
skuma0用メモ @ ウィキ
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

skuma0用メモ @ ウィキ

DOSコマンド

最終更新:

skuma0

- view
管理者のみ編集可

概要

DOSコマンドメモ


出力

画面出力

結果のみ出力

@コマンド

全体で結果のみ出力

@echo off

テキスト内容出力

type a.txt

ファイル出力

上書き

コマンド > a.txt

追加

コマンド >> a.txt

結果を捨てる

コマンド >NUL

変数

変数は大文字小文字を区別しない

変数へのアクセス

変数の一覧表示

set

変数の設定(文字列)

set aaa=abc

変数の設定(数値)

set /a aaa=100+10
110

----説明----
・set~
/a 数値で設定

変数、パラメータの取得

文字 説明
%変数名% 変数に設定された文字 %WINDIR% -> C:\WINDOWS
%0 バッチファイル名(フルパス) test.bat -> "c:\test.bat"
%1 第一引数の文字 test.bat "abc" -> "abc"
%ERRORLEVEL% 直前に実行されたコマンドの戻り値(通常0が成功)

変数の操作

開始番号は0オリジンで設定する(1文字目 = 0)
文字 説明 例 (%WINDIR%=C:\Windows)
%変数名:x=y% 変数内の文字列"x"を"y"に置換 %WINDIR:C=D% -> D:\Windows
%変数名:~3% 変数内の3+1文字目以降を取り出す %WINDIR:~3% -> Windows
%変数名:~3,4% 変数内の3+1文字目より4桁分を取り出す %WINDIR:~3,4% -> Wind
%変数名:~-3% 変数内の後ろから3文字目以降を取り出す %WINDIR:~-3% -> ows
%変数名:~-3,2% 変数内の後ろから3文字目より2桁分を取り出す %WINDIR:~-3,2% -> ow

パラメータの操作

文字 説明 例 (%0="C:\dos\test.bat")
%~0 "を除く C:\dos\test.bat
%~f0 完全修飾パス名 C:\dos\test.bat
%~d0 ドライブ名 C:
%~p0 パス名 \dos\
%~dp0 フルパス名 C:\dos\
%~n0 ファイルタイトル test
%~x0 拡張子 .bat
%~nx0 ファイル名 test.bat
%~t0 ファイル更新日時(YYYY/MM/DD HH:MM) 2012/02/16 10:19
%~z0 ファイルサイズ(byte) 1024

環境変数

文字 説明
%DATE% 現在の日付(YYYY/MM/DD) 2011/04/11
%TIME% 現在の時間( H:MM:SS.mm)(午前は前スペース) 13:35:32.76
%WINDIR% システムフォルダ C:\WINDOWS
%Systemroot% システムフォルダ C:\WINDOWS
%SystemDrive% システムドライブ C:
%COMPUTERNAME% コンピュータ名
%USERDOMAIN% ドメイン名
%USERNAME% ユーザー名
%ALLUSERSPROFILE% ALL Usersユーザープロファイルフォルダ C:\Documents and Settings\All Users
%USERPROFILE% Userユーザープロファイルフォルダ C:\Documents and Settings\ユーザー名

便利な利用方法

日付(YYYYMMDD)

%date:/=%

----説明----
/を除去

時間(HHMMSS)

set tm=%time:~0,8%
set tm=%tm::=%
set tm=%tm: =0%
%tm%

----説明----
:を除去した後、スペースを0置換

左0埋め(5桁)

set num=20
set num=00000%num%
set num=%num:~-5%

----説明----
前に5桁の0を付けた後、後ろから5桁取得

system32フォルダ

%windir%\system32

All Users デスクトップ

%ALLUSERSPROFILE%\デスクトップ

フロー制御

IF

文字列比較

IF 文字列1==文字列2 (
    コマンド
) ELSE (
    コマンド
)

ファイル存在チェック

IF EXIST ファイル名 (
    コマンド
)

エラーチェック

結果が1以上

IF ERRORLEVEL 1 コマンド

GOTO

GOTO ERR

:ERR

FOR

指定範囲繰り返し

10から1ずつ加算して20まで繰り返し

for /l %%i in (10,1,20) do (
   echo %%i
)

変数の遅延展開(ループ内でSETする場合に使用)

SetLocal EnableDelayedExpansion

set num=100

for /l %%i in (1, 1, 20) do (
    set /a num=!num!+1
    echo !num!
)

----説明----
SetLocal EnableDelayedExpansion で遅延展開宣言
!変数名! で変数にアクセス

ファイル分ループ

for %%f in (.\files\*) do (
    echo %%f
)

無限ループ

for /l %%i in (0,0,1) do (
   echo %%i
)

カンマ区切り分ループ

SET LIST=aaa,bbb,ccc 

for %%i in (%LIST%) do (
   echo %%i
)

サブルーチン

CALL :SUB aaa
GOTO :EOF

:SUB
ECHO %1
EXIT /B

ファイル操作

dir

ファイル一覧表示

dir /b ・・・ファイル名のみ表示
dir /p ・・・1画面ごとに停止して表示
dir /s ・・・サブフォルダも表示

ソート順を指定して表示

dir /oソート順

例)
dir /on  ・・・ ファイル順
dir /od  ・・・ 日付順(古いほうから)
dir /o-d ・・・ 日付降順(新しいほうから)

----説明----
・ソート順
N 名前順 (アルファベット)
S サイズ順 (小さいほうから)
E 拡張子順 (アルファベット)
D 日時順 (古いほうから)
G グループ (ディレクトリから)

カンレントディレクトリ移動(ネットワークパスもOK)

pushd ディレクトリパス

フォルダ内ファイル全コピー(読取専用上書き)

xcopy "c:\src" "c:\dest" /e /i /r /y

----説明----
・xcopy
/e サブディレクトリコピー
/i 受け側がない場合ディレクトリとしてコピー
/r 読取専用上書き
/y 確認なし

ファイル一括処理(コピー,リネーム)

ファイル名の後ろ部分を残す場合

copy 0001*.jpg 0002*.jpg
rename 0001*.jpg 0002*.jpg

----結果----
0001_A.jpg -> 0002_A.jpg
0001_B.jpg -> 0002_B.jpg

ファイル名の前部分を残す場合

copy IMG_????A.jpg IMG_????B.jpg
rename IMG_????A.jpg IMG_????B.jpg

----結果----
IMG_0001A.jpg -> IMG_0001B.jpg
IMG_0002A.jpg -> IMG_0002B.jpg
IMG_0003A.jpg -> IMG_0003B.jpg

フォルダ作成

存在チェック&作成

if not exist 対象フォルダ mkdir 対象フォルダ

ファイル・フォルダ削除

フォルダごと全削除

rd /s /q 対象フォルダ

フォルダ内のデータ全削除

set deldir="対象フォルダ"
for /D %%f in ( %deldir% ) do rd /s /q "%%f"
del /F /S /Q %deldir%

※ カウンタの変数はバッチファイルとコマンド入力で異なる
バッチファイル時 %%f
コマンド入力時 %f

10個残して削除

・ファイル
for /f "skip=10" %%f in ('dir /b /a /o-n "フォルダパス\*.log"') do del /f "フォルダパス\%%f"

・フォルダ
for /f "skip=10" %%f in ('dir /b /ad /o-n "フォルダパス\*"') do rd /s /q "フォルダパス\%%f"

フォルダ内の読取属性を全てはずす

cd 対象フォルダ
attrib /s /d -r

ファイル内の文字検索

文字列を含む行を表示

find "検索文字" "ファイル名"

----説明----
・find
/c 検索文字の行の数のみ表示
/v 検索文字を含まない行を表示
/i 大文字小文字を区別しない

検索結果の行数を変数に代入

for /f "tokens=3" %%a in ('find /c "検索文字" "ファイル名"') do set ret=%%a
echo %ret%

外部プロセス実行

実行 -> 戻らない

xxx.bat

実行 -> 戻る

call xxx.bat

別プロセスで実行

start xxx.bat

タスク

タスク登録

起動時に実行

SCHTASKS /Create /TN "タスク名" /TR "プログラムパス" /SC ONSTART /RU ユーザ名 /RP パスワード

時間指定実行

5時に実行

SCHTASKS /Create /TN "タスク名" /TR "プログラムパス" /SC DAILY /ST 05:00:00 /RU ユーザ名 /RP パスワード

タスク実行

ローカルタスク

SCHTASKS /Run /TN "タスク名"

リモートタスク

SCHTASKS /Run /S コンピュータ名 /U ユーザ名 /P パスワード /TN "タスク名"

ネットワーク


Windows共有

共有の接続情報表示

net use

共有の接続

net use "共有フォルダ名" パスワード /user:ユーザ名

共有の切断

net use /delete "共有フォルダ名"

全共有の切断

net use /delete *

その他便利コマンド

なんちゃってSleep

5秒待機(数字にはSLEEP秒数+1を指定)

ping localhost -n 6 >NUL

※Windows7以降はtimeoutコマンド使用可
timeout 5

ファイル数取得

SetLocal EnableDelayedExpansion

set cnt=0
for %%f in (.\call\*) do set /a cnt=!cnt!+1
echo !cnt!

リンク



最近更新されたスレッド
ウィキ募集バナー