S-JIS[2006-07-07/2013-03-05] �ύX����

MS-DOS�o�b�`�t�@�C��

DOS�̃R�}���h���t�@�C���ɏ����Ă����A�o�b�`�Ƃ��Ď��s���邱�Ƃ��o����B�iUNIX�̃V�F���X�N���v�g�ɑ����j


���s���@

�o�b�`�t�@�C���̊g���q��bat�ɂ��Ă����B

���̃t�@�C��������ꏊ���‹��ϐ�PATH�ɒlj����Ă������A�t�@�C���̂���ꏊ�܂��ړ����āA
�R�}���h���C������t�@�C��������͂��邩�A�g���q����������������͂��邱�Ƃɂ���� �o�b�`�����s����B
�܂��̓t���p�X�Ńt�@�C��������͂���B
�f�B���N�g����t�@�C�����ɃX�y�[�X�������Ă���ꍇ�́A�S�̂��_�u���N�H�[�e�[�V�����ł�����Ȃ��ƁA�X�y�[�X�̏��ŋ�؂��Ă��܂��B�i�R�}���h�p�̃t�@�C�����ɃX�y�[�X�����邱�Ƃ͂��܂薳�����낤���c�j

C:\temp>test.bat
C:\temp>test
C:\>C:\temp\test.bat
C:\>"C:\temp\test.bat"	�c�_�u���N�H�[�e�[�V�����ł������Ă���

�����̒��ӓ_

�o�b�`�t�@�C�����̌��ɃX�y�[�X��؂�ň�������ׂ邱�Ƃ��o����B[2013-03-05]

C:\temp> test.bat aaa bbb ccc

�Ƃ��낪�A�����̋�؂蕶���̓X�y�[�X�����ł͂Ȃ��B
�����u=�v��Z�~�R�����u;�v�E�J���}�u,�v����؂蕶���Ƃ��ĔF�������B���Ȃ킿�A�������f�[�^�Ƃ��ēn�����Ƃ��o���Ȃ��B
�_�u���N�H�[�e�[�V�����ň͂߂Γn�����Ƃ͏o���邪�A�󂯎�������ň͂ݕ�������������K�v������B

> type test.bat
@echo args: %1 %2 %3 %4

> test.bat a=b,c;d
args: a b c d

> test.bat "a=a" "b,b" "c;c" d
args: "a=a" "b,b" "c;c" d

�Q�l�F Microsoft���Z�~�R�����A���� (=)�A�o�b�` �t�@�C���̈����Ƃ���


�o�b�`�t�@�C���̏�����

���ʂɃR�}���h�v�����v�g����R�}���h��ł‚悤�ɁA�t�@�C���̒��ɃR�}���h�������Ă��������B�i�ʏ�̃e�L�X�g�t�@�C���Ɠ��l�j
�������A�R�}���h�v�����v�g���璼�ڃR�}���h�����s����̂Ƃ͑����قȂ镔��������B


@echo off

�R�}���h�����s���ɂ��������\�������͎̂ז��Ȃ̂ŁA
��΂Ƃ��ẮA�t�@�C���̐擪�Ɉȉ��̃R�}���h�������Ă������Ƃ������B

@echo off

�f�t�H���g�ł́A�o�b�`�t�@�C���̎��s���ɂ� �R�}���h��\�����Ă��炻�̃R�}���h�����s����iUNIX��sh -x�̂悤�Ȃ��́j�B
�uecho off�v�����s���Ă����΁A����ȍ~�̓R�}���h��\�����Ȃ��Ȃ�B
�������uecho off�v�������ƁA���̕��iecho off���̂��́j�����͕\������Ă��܂��B�����Łu@�v��t���āA���̕����\�����Ȃ��悤�ɂ��Ă���B�����B
�i������A�uecho off�v�������ɁA�S�ẴR�}���h�Ɂu@�v��t���Ă������킯�����j
�i���Ȃ݂ɁA�o�b�`�łȂ��A�R�}���h�v�����v�g���璼�ځuecho off�v������Ɩʔ�������(��) ������Ǝv�����ǁA�߂��ɂ́uecho on�v�ˁj


�o�b�`�̒�����ʂ̃o�b�`�����s������@

�o�b�`�t�@�C���̒�����ʂ̃o�b�`���Ăяo�����Ƃ��o����B[2007-03-07]

�o�b�`�̒��Œ����o�b�`�t�@�C�����������ƁA���̃o�b�`�����䂪�ڂ��B���Ȃ킿�A�Ăяo�����o�b�`���I�����Ă��ďo���̃o�b�`�ɂ͕��A���Ȃ��B

���̃o�b�`�ֈڂ�.bat�F

echo "start"
test.bat
echo "�����ւ͖߂��ė��Ȃ��I"

�����߂������ꍇ�ɂ́ACALL�������g���B�i�߂�l��Ԃ��ɂ́A�uexit /b�v���g�p����j

���̃o�b�`���Ăяo��.bat�F

echo "start"
call test.bat
echo "�߂��Ă���" %ERRORLEVEL%
pause

�uexit /b�v�łȂ��uexit�v�ŏI������o�b�`�t�@�C�����Ăяo���ƁAexit���Ă΂ꂽ���_�ŃR�}���h�v�����v�g���I�����Ă��܂��B
���̏ꍇ��cmd /c���g���ăo�b�`���Ăяo���Ă��ƁA�uexit �߂�l�v�Őݒ肵���߂�l���擾�ł���B

exit�ŏI������o�b�`���Ăяo��.bat�F

echo "start"
cmd /c test.bat
echo "�Ԃ��Ă�����" %ERRORLEVEL%
pause

�R�}���h�v�����v�g�̃^�C�g���̕ύX���@

WindowsXP�Ńo�b�`�t�@�C�����_�u���N���b�N���Ď��s�����ꍇ�A�R�}���h�v�����v�g�̃E�B���h�E���N�����āA�����Ŏ��s�����B[2009-11-14]
���̂Ƃ��A�E�B���h�E�̃^�C�g���́uC:\WINDOWS\system32\cmd.exe�v�ƂȂ�B��������o�b�`�t�@�C�������s����ƁA��ʂ��t���Ȃ��c�B

�o�b�`�t�@�C���̒���title�R�}���h���g���ƁA�E�B���h�E�̃^�C�g�����ݒ�ł���B

title �E�B���h�E�̃^�C�g��

�o�b�`�t�@�C���̏ꏊ�̎擾���@

�o�b�`�t�@�C���݂̍�ꏊ����̑��΃p�X���w�肵�������Ƃ�����B[2009-11-14]

�Ⴆ���‹��ϐ�CD�̓J�����g�f�B���N�g���[�i���s���̍�ƃf�B���N�g���[�j�ł����āA�o�b�`�t�@�C���̏ꏊ�ł͂Ȃ��B

�o�b�`�t�@�C���̏ꏊ�́A����ȕϐ��u%0�v�𗘗p���邱�ƂŎ擾���邱�Ƃ��o����B

set BATDIR=%~dp0

%0�̓o�b�`�t�@�C�����̂��̂�\���A~d�͂��̃h���C�u�A~p�͂��̃p�X��\���B�i~dp�Ńh���C�u+�p�X�j

�uC:\temp\test.bat�v���ŏ�L�̃R�}���h�����s����ƁA�‹��ϐ�BATDIR�́uC:\temp\�v�ƂȂ�B
�����Ɂu\�v���t���Ă���̂ŁA�u%BATDIR%\zzz.txt�v�Ƃ���ƁA
���ۂ̓W�J���́uC:\temp\\zzz.txt�v�ƂȂ�A�u\�v��2�•t���Ă��܂��B���e��������ǂ����́A���̃p�X���󂯎��R�}���h����B
�u%BATDIR%zzz.txt�v�Ƃ���Ζ�薳���킯�����A�ꌩ����ƈ�a��������B

��UNIX�ŃV�F���X�N���v�g�t�@�C���̏ꏊ���擾������@


�ϐ��̎g����

�o�b�`�t�@�C�����ł��‹��ϐ������̂܂܎g���鑼�A�o�b�`�̎��s���������i�ǂݍ��ݐ�p�́j�ϐ��Ƃ��Ďg����B

�‹��ϐ��̎g������set�R�}���h���Q�ƁB

����ȕϐ�

�‹��ϐ��̑��ɁA�o�b�`�̎��s���Ɏ����I�ɒl���ݒ肳���ϐ��ƁAfor���Ŏg�p����Ǝ��̕ϐ�������B

�����������ϐ��ɂ̓o�b�`�̎��s�������������Ă��邪�A�T�u���[�`�����Ăяo���ꂽ�ꍇ�ɂ͂��̃T�u���[�`���̈���������B
UNIX�Ƃ͈قȂ�A�������w�肷��ۂɃ_�u���N�H�[�e�[�V�������t���Ă�����A�t�����܂ܕϐ��ɓ����Ă���B

�ϐ� ���e UNIX����
%ERRORLEVEL% ���O�Ɏ��s���ꂽ�R�}���h�i���֐��j�̖߂�l $?
%0 ���s�R�}���h�� $0
%1 %2 �c %9 ���s�������i�•ʁj $1 $2 �c
%* �S���� $* $@

shift�R�}���h�ŁA�•ʂ̈�����1���ւ����BUNIX��shift�ɑ����B
���Ȃ킿�A%0�ɂ�%1�̒l������A%1�ɂ�%2�̒l������c�A%9�ɂ�%10�����̒l������B

%0���ς���Ă��܂��̂ƁA%*�͕ς��Ȃ��_��UNIX�ƈႤ�B
%0��ς������Ȃ��ꍇ�̓I�v�V������t���āushift /1�v�Ƃ���B�����%1�ȍ~�������ς��悤�ɂȂ�B


�����̕ϐ���for���̕ϐ��ɂ́A���H���ēW�J����@�\������B
�ڍׂ́uhelp call�v�ucall /?�v�uhelp for�v�ufor /?�v���Q�ƁB

���H�̎w��i�C���q�j��1�����ŕ\�����A�����̕�����g�ݍ��킹�Ďw�肷�邱�ƂŁA���������ҏW���o����i��Fdp�Anx�j�B[2009-11-14]

�ȉ��̗�ł́A�J�����g�f�B���N�g�����uc:\temp�v�A%1���u"abc"�v�iabc�Ƃ����t�@�C���͑��݂��Ȃ��j�A%2���uzzz.txt�v�i���݂���j�Ƃ���B

�w����@ ���� ��
%~�ϐ� %�ϐ��̒l���_�u���N�H�[�e�[�V�����ł������Ă���Ƃ��A�_�u���N�H�[�e�[�V�������폜�������̂ɂȂ�B echo %~1
���uabc�v���\�������
%~f�ϐ� %�ϐ��̒l���t���p�X�i��΃p�X�j�ɕϊ��������̂ɂȂ�B
�u..�v���̑��΃p�X�w�肪�����Ă����ꍇ�A����炪��菜���ꂽ��������ԂɂȂ�B
echo %~f1
���uC:\temp\abc�v���\�������
%~d�ϐ� %�ϐ��̒l���t���p�X�ň����ۂ��h���C�u���ɂȂ�B echo %~d1
���uC:�v���\�������
%~p�ϐ� %�ϐ��̒l���t���p�X�ň����ۂ��p�X���ɂȂ�B echo %~p1
���u\temp\�v���\�������
%~dp�ϐ� %�ϐ��̒l���t���p�X�ň����ۂ��h���C�u+�p�X���ɂȂ�B[2009-11-14] echo %~dp1
���uC:\temp\�v���\�������
%~n�ϐ� %�ϐ��̒l���t�@�C���������i�g���q�Ȃ��j�ɂȂ�B echo %~n2
���uzzz�v���\�������
%~x�ϐ� %�ϐ��̒l���g���q�i�s���I�h�t���j�ɂȂ�B echo %~x2
���u.txt�v���\�������
%~nx�ϐ� %�ϐ��̒l���t�@�C�����i�g���q����j�ɂȂ�B echo %~nx2
���uzzz.txt�v���\�������
%~s�ϐ�
%~fs�ϐ�
%�ϐ��̒l��Z�k�`�idir /x�Ɠ����j�ɕϊ��������̂ɂȂ�B[2008-08-02]
�͂��Ȃ̂����A�Ȃ񂾂��o�O������i�������`�ɂȂ�Ȃ���������j�B�iWindowsXP SP3�j
�@
%~a�ϐ� %�ϐ��̒l�̃t�@�C�������݂���Ƃ��A���̃t�@�C���������ɂȂ�B echo %~a2
���u--a------�v���\�������
%~t�ϐ� %�ϐ��̒l�̃t�@�C�������݂���Ƃ��A���̃t�@�C�����X�V�����ɂȂ�B echo %~t2
���u2006/07/07 23:59�v���\�������
%~z�ϐ� %�ϐ��̒l�̃t�@�C�������݂���Ƃ��A���̃t�@�C�����T�C�Y�ɂȂ�B echo %~z2
���u5�v���\�������
%~$�‹��ϐ�:�ϐ� %�ϐ��̒l�̃t�@�C���� �‹��ϐ��i�Ⴆ��PATH��CLASSPATH�j�ŗ񋓂���Ă���f�B���N�g�������݂��邩�ǂ������ׁA���݂��Ă���΂��̃t�@�C���i�t���p�X�j�ɂȂ�B
�u~�v�Ɓu$�v�̊Ԃɂ͑O�q��f��d���̎w������邱�Ƃ��o���A���ꂼ��̎w��ɏ]���ĕϊ������B
���̋@�\���g���ƁAUNIX��which���ǂ�������B
%3���uhelp.exe�v�̂Ƃ��A
echo %~dpnx$PATH:3
���uC:\WINDOWS\system32\help.exe�v���\�������

���‹��ϐ��̉��H���@


�o�b�`�̍\��

if

if ���� �R�}���h if ���� (�R�}���h) else �R�}���h

if ���� (�R�}���h) else (�R�}���h)
if ���� (
�R�}���h
�c
) else (
�R�}���h
�c
)

UNIX��if�ɑ����B
�������^�̂Ƃ��A����̃R�}���h�����s����B
�����̃R�}���h�����s�������ꍇ�́A�R�}���h�Q���u( )�v�i�ۊ��ʁj�ł�����B

�������U�̂Ƃ��Aelse������� ���̒���̃R�}���h�����s����B
�uif�v�Ɓuelse�v�͓����s�ɖ�����΂Ȃ�Ȃ��B��̓I�ɂ́A�uif�v�ƍŏ��́u(�v�������s�ɂ���A�u)�v�Ɓuelse�v�������s�ɂ���΂悢�B
else�̒���ɂ͋󔒂��K�v�B

�����ɂ́A�ȉ��̔�r���Z���g����B�i�啶���ł��������ł��悢�j

��r���Z�q
== EQU NEQ ��r
LSS LEQ
GTR GEQ
�召��r
�P�����Z�q
NOT �ے� if not "%1" == "" echo ����������܂�
DEFINED �‹��ϐ������݂���Ƃ��A�^ if defined TMP echo �L��
EXIST �t�@�C���i��f�B���N�g���j�����݂���Ƃ��A�^
�t�@�C�������_�u���N�H�[�e�[�V�����ł����邱�Ƃ��o���邪�A�����̃X�y�[�X�͖��������͗l�B
if exist zzz.txt echo �݂�
ERRORLEVEL %ERRORLEVEL%���l�ȏ�
�Ȃ�����ȉ��Z�q���킴�킴���邩�ɂ‚��ẮA���ӓ_���Q�ƁB
if errorlevel 1 echo �G���[

AND��OR�ɓ�������͖̂����̂ŁA���G�ȉ��Z�͏o���Ȃ��B

�����̍������������ō\������Ă���΁A���l�Ƃ��Ĕ�r�����B
����ȊO�͕�����Ƃ��Ĕ�r�����B
�Ⴆ�΁u"1"�v�͐��l�ł͂Ȃ��i�_�u���N�H�[�e�[�V�����͐�������Ȃ��j�̂ŁA�u1�v�Ƃ͈قȂ�B

�܂��A�u/i�v�I�v�V������t����ƁA�啶���������𖳎����Ĕ�r����B

if /i %1 equ abc (echo ��v�I) else (echo �s��v)


��then���Eelse�����‹��ϐ����g���ꍇ�̒���


for

for /L %�ϐ� in (�J�n,����,�I��) do �R�}���h for /L %�ϐ� in (�J�n,����,�I��) do (
�R�}���h
�c
)

�ϐ����J�n�`�I���܂ŕω����A���̉񐔕�do�ȍ~�����s�����B

>for /L %i in (1,1,10) do echo %i

��1�`10���\�������B�u(10,1,10)�v�Ȃ�10�̂݁A�u(11,1,10)�v�Ȃ�������s����Ȃ��B


for���̕ϐ��͑��̍\���Ɣ�ׂ�ƈِF�ŁA�ϐ������p��1�����B�啶���Ə���������ʂ�����̂ŕʂ̕ϐ��ƂȂ�B
�R�}���h�v�����v�g���璼��for�����g���ꍇ�͕ϐ��́u%i�v���ł悢���A�o�b�`���ɋL�q����ꍇ�́u%%i�v�̂悤�Ɂu%�v��2�����Ȃ���΂Ȃ�Ȃ��B

���ϐ��i%i�j�̉��H
��do�����‹��ϐ����g���ꍇ�̒���


for each

for %�ϐ� in (�����̒l) do �R�}���h

UNIX��for�ɑ����B
in�ȍ~�̕����̒l�ɂ‚��āA1�‚��������s���B��؂蕶���ɂ̓X�y�[�X�E�J���}�E�Z�~�R�������g����B

�u@�v���g���Ď��s���̃R�}���h�\�����s��Ȃ��悤�ɂ������ꍇ�A�ȉ��̂悤��2�ӏ��ɕt����K�v������B[2009-11-14]

@for �` do @�R�}���h

���ڗ�

>for %i in (aa bb cc) do echo %i
>for %i in (aa,bb,cc) do echo %i
>for %i in (aa;bb;cc) do echo %i

�uaa�v�ubb�v�ucc�v���\�������B

�l�̒��Ɂu)�v���܂܂�Ă�������R�̂��ƂȂ��������ŗ񋓂̏I���Ƃ݂Ȃ���A�{���́u)�v���G���[�ɂȂ�̂Œ��ӁB

>for %i in (aa bb) cc) do @echo %i
cc) �̎g����������Ă��܂��B
>for %i in (aa bb^) cc) do @echo %i
aa
bb)
cc

�ϐ��̓W�J

>for %i in (%CLASSPATH%) do @echo %i

�‹��ϐ�CLASSPATH�i�Z�~�R������؂�Ńf�B���N�g��������ł���j�̒���1�‚��•\�������B

for %%i in (%*) do @echo %%i	���o�b�`���Ŏg����

�o�b�`�̈�����1�‚��•\�������B

���C���h�J�[�h�̓W�J

>for %i in (C:\*) do @echo %i

>for %i in (C:\lib1\*.jar C:\lib2\*.jar) do @echo %i

���C���h�J�[�h�������Ă���ƁA���̃f�B���N�g���i�p�X���w�肳��Ă��Ȃ��ꍇ�̓J�����g�f�B���N�g���j�̃t�@�C�����̈ꗗ�ɂȂ�B�i�t�@�C���݂̂ŁA�f�B���N�g���͓���Ȃ��j
�X�y�[�X��Z�~�R�����u;�v�Łi���C���h�J�[�h����̃p�X�ł��j�����̃p�X����؂邱�Ƃ��o����B[2009-02-20]

>for /d %i in (C:\*) do @echo %i

�u/d�v�I�v�V������t����ƁA�f�B���N�g���݂̂��ΏۂɂȂ�B

>for /r %i in (*.txt) do @echo %i

�u/r�v�I�v�V������t����ƁA�T�u�f�B���N�g�����ċA�I�ɒT���ΏۂƂȂ�B

�t�@�C���̓��e

>for /f "�I�v�V����" %i in (�t�@�C����) do @echo %i	�c�t�@�C���̓��e(�e�s)�Ń��[�v
>for /f "�I�v�V����" %i in ("������")   do @echo %i	�c�����������
>for /f "�I�v�V����" %i in ('�R�}���h') do @echo %i	�c�R�}���h�̎��s����(�W���o�͂̊e�s)�Ń��[�v

�w�肳�ꂽ�Ώۂ̍s���ƂɃ��[�v����B��s�͖��������B
�f�t�H���g�ł́A�ϐ��i��L�̗�ł�%i�j�ɂ��s�̐擪��1��������B

�I�v�V�����̓_�u���N�H�[�e�[�V�����ł������āA�ȉ��̂��̂��w�肷��B�i�X�y�[�X��؂�ŕ����w��”\�j

skip=�s�� �t�@�C�������̍s���������X�L�b�v����B
eol=�� ���̕����Ŏn�܂�s�́A�R�����g�s�Ƃ��Ė�������B
>for /f "eol=;" %i in (";�R�����g") do @echo %i
tokens=�ԍ� ���̔ԍ��–ڂ��J������ϐ��ɓ����B�i�f�t�H���g�ł�1�j
>for /f "tokens=2" %i in ("a b c") do @echo %i
b

�ԍ����J���}��؂�ŗ񋓂���ƁA���̃J�������ϐ��ɓ������B
�ϐ��͍ŏ��Ɏw�肳��Ă������̂��珇�ԂɁA�Öقɑ�����B�i�w�肵���̂�i�Ȃ�j,k,l,�c�Aa�Ȃ�b,c,d,�c�j

>for /f "tokens=1,3" %i in ("a b c") do @echo %i %j
a c

�n�C�t���ŃJ�����͈̔͂��w�肷�邱�Ƃ��o����B

>for /f "tokens=2-4" %i in ("a b c d e") do @echo %i %j %k
b c d

�ԍ��̑���Ɂu*�v���w�肷��ƁA�s�̎c��̕����S�ĂɂȂ�B

>for /f "tokens=1,*" %i in ("a b c d e") do @echo %i -- %j
a -- b c d e
>for /f "tokens=*" %i in (test.txt) do @echo %i	�c�s��S���\��
delims=���� �f���~�^�[�i��؂蕶���j���w�肷��B�i�f�t�H���g�ł̓X�y�[�X�j
>for /f "delims=,; tokens=1-3" %i in ("abc;def,ghi") do @echo %i %j %k
abc def ghi
usebackq �t�@�C�����w������p���̈Ӗ���ς���B
�f�t�H���g�ł� ���p���������t���Ȃ��ƃt�@�C�����w�肾���A�󔒂������Ă���t�@�C�����ɂ͑Ή����Ă��Ȃ��B
���̃I�v�V������t���邱�Ƃɂ��A�_�u���N�H�[�e�[�V�������t�@�C�����w��ɂȂ�B�i���������ċ󔒂������Ă���t�@�C�������w��ł���悤�ɂȂ�j
>for /f "usebackq" %i in ("�t�@�C����") do @echo %i	�c�t�@�C���̓��e�Ń��[�v
>for /f "usebackq" %i in ('������')     do @echo %i	�c�����������
>for /f "usebackq" %i in (`�R�}���h`)   do @echo %i	�c�R�}���h�̎��s���ʂŃ��[�v

�t�@�C���̓��e���‹��ϐ��ɓ�����

for�Łu/f�v��t����ƃt�@�C����ǂݍ��߂�̂ŁAfor�̖{�̂Ŋ‹��ϐ��ɕϐ��̒l���Z�b�g����΁A�t�@�C���̓��e���‹��ϐ��ɃZ�b�g���邱�Ƃ��o����B[2012-07-14]

���ȉ��̗�́A�o�b�`�t�@�C���ɋL�q����z��i�‚܂�A�ϐ��̎w�肪�u%%�v�ɂȂ��Ă���j

@echo off
for /f %%i in (test.txt) do set ZZZ=%%i
echo ZZZ=%ZZZ%

�t�@�C���̓��e�������s����ꍇ�́A�S���ǂݍ���őS�Ă̍s�ɑ΂��ē����������s���̂ŁA�ŏI�s�̓��e���‹��ϐ��ɓ��邱�ƂɂȂ�B

�X�y�[�X��؂�ŋ�؂��Ă���P���4�Ԗڂ����擾�������悤�ȏꍇ�A�g�[�N�����w�肷��B

@echo off
type test2.txt

for /f "tokens=4" %%i in (test2.txt) do set ZZZ=%%i
echo ZZZ=%ZZZ%
this is a pen
ZZZ=pen

�t�@�C���̓��e�������s�ɘj��ꍇ�́A�K�v�ȍs�܂ŃX�L�b�v���āA�r����for�𔲂���̂��������낤�B

@echo off
type test3.txt

for /f "skip=2 tokens=4" %%i in (test3.txt) do (
  set ZZZ=%%i
  goto END_LOOP1
)
:END_LOOP1

echo ZZZ=%ZZZ%
this is a pen
this is a apple
this is a orange
this is a foo
ZZZ=orange

�R�}���h�����s�������ʂ��‹��ϐ��ɓ�����

for�Łu/f�v��t���A���́i�R�}���h�j���V���O���N�H�[�e�[�V�����ň͂ނƁA�R�}���h�����s�������ʁi�W���o�͂̓��e�j���擾���邱�Ƃ��o����B[2012-07-14]
�i�R�}���h�̖߂�l��ERRORLEVEL�Ŏ擾����j

���ȉ��̗�́A�o�b�`�t�@�C���ɋL�q����z��i�‚܂�A�ϐ��̎w�肪�u%%�v�ɂȂ��Ă���j

@echo off

for /f %%i in ('date /t') do set ZZZ=%%i

echo date=%ZZZ%
date=2012/07/14

for�Ƀf���~�^�[�ƃg�[�N�����w�肷��ƁA������Ƃ������H���s�����Ƃ��o����B

@echo off

for /f "delims=/ tokens=1-3" %%i in ('date /t') do (
  set ZZZ1=%%i%%j%%k
  set ZZZ2=%%i-%%j-%%k
)

echo date=%ZZZ1%
echo date=%ZZZ2%
date=20120714
date=2012-07-14

�����t�̎擾�Ɋւ��ẮA�‹��ϐ�DATE���g�����@������B�ǂ��炪�y���Ȃ��H�O�O�G


goto

:���x��
goto ���x��

MS-DOS�ɂ͍��x�ȃ��[�v�\���͖����̂ŁAgoto�ŃW�����v���邱�ƂőΉ�����B

if %~1 == abc goto match
echo �s��v
goto :EOF

:match
echo ��v

:EOF�Ƃ������x���́A�Öقɒ�`����Ă���B�����ւ�goto�́u�o�b�`�t�@�C���̏I���֔�� �v�A���Ȃ킿�u�o�b�`���I������v�Ƃ������ƁB
�i�ʏ��goto�ł̓��x�����Ɂu:�v�R�����͕s�v�����A:EOF�ւ�goto�ɂ͕K�v�j

�Ȃ��A�uexit /b�v���g���Γ������o�b�`���I������B������̕����߂�l��Ԃ����̂ł������낤�B


switch

:���x��
goto %�‹��ϐ�%

MS-DOS�ɂ�UNIX��case�ɓ�������͖̂������Agoto�̃��x���͕ϐ����g���ē��I�ɕς��邱�Ƃ��ł���̂ŁA����ő�p���邱�Ƃ��o���Ȃ��͂Ȃ��B

set CASE=1
goto caseA_%CASE%		�cCASE�̒l�ɉ����āA:caseA_1��:caseA_2�֔��
:caseA_1
  echo case1
  goto :caseA_end
:caseA_2
  echo case2
  goto :caseA_end
:caseA_end

���̂������ƁA�u���̑��v�ɓ�������̂��o���Ȃ����c�B
�i���݂��Ȃ����x���֔�ڂ��Ƃ���ƃG���[�ɂȂ邩��j


�T�u���[�`��

��` �Ăяo��
:���x��
setlocal
�`
endlocal
exit /b �k�߂�l�l
call :���x��
call :���x�� �����c

UNIX�̊֐��ɑ����B
MS-DOS�ɂ͊֐��͖����̂ŁA�T�u���[�`���Ăяo���ő�p����B
call�͖{���ʂ̃o�b�`�t�@�C�����Ăяo�����̂����A���x�����w�肷�邱�ƂŎ������g�̈ꕔ��ʃo�b�`�Ƃ��ČĂяo�����Ƃ��o����B
�i���x���Ȃ̂ŁAcall�̈ʒu����Ƀ��x���������Ă��悢�j
�i�����܂Ń��x���Ȃ̂ŁAgoto�ł��̃��x���֔�Ԃ��Ƃ��A���̂܂ܗ���ăT�u���[�`���̒��֓����Ă��܂����Ƃ��o����̂Œ��Ӂj

�����́A�o�b�`�̎��s�������̕ϐ��ŎQ�Ƃł���B

�‹��ϐ��͌Ăяo�����Ƌ��L�����B
setlocal���g���ƁA���������̊‹��ϐ��͌Ăяo�����ɂ͔��f����Ȃ��Ȃ�B���Ȃ킿 �‹��ϐ������[�J���ϐ��̂悤�ɂ��Ĉ�����悤�ɂȂ�B
�iendlocal���Ăяo���ƁA�‹��ϐ��͌��̏�Ԃɖ߂�Bendlocal���Ă΂Ȃ��Ă��Asetlocal���Ăяo���Ă�����o�b�`�I������endlocal�̏������Öقɍs����j
�t�Ɍ����ƁA�‹��ϐ����g���ČĂяo�����ɒl��Ԃ������ꍇ��setlocal�͎g���Ȃ��̂Œ��ӁB

�uexit /b�v�Ńo�b�`���I������Bcall�ŌĂ΂��Ƃ��� �i����o�b�`�t�@�C�����ł����Ă��j�ʃo�b�`�����Ȃ̂ŁA�uexit /b�v�Ȃ�T�u���[�`���������I���ł���B

�uexit /b �߂�l�v�Ŗ߂�l���w�肷��ƁA�Ăяo�����̕ϐ�%ERRORLEVEL%�ɔ��f�����B
�i�߂�����ɑ��̃R�}���h�����s�����%ERRORLEVEL%�̒l�͕ς��”\��������̂Œ��Ӂj

test.bat�F

@echo off
echo �Ăяo���O�F%*
call :sub aa %* bb
echo �߂�l�F%ERRORLEVEL%
echo �Ăяo����F%*
exit /b

:sub
echo �Ăяo���ꂽ�F%*
exit /b 99
>test.bat foo zzz
�Ăяo���O�Ffoo zzz
�Ăяo���ꂽ�Faa foo zzz bb
�߂�l�F99
�Ăяo����Ffoo zzz

�o�b�`�̖߂�l

�o�b�`�̈�ԍŌ�Łuexit /b�v���Ăׂ΃o�b�`���I������B
�icall�ŌĂ΂�Ă����ꍇ�́A���̃T�u���[�`�����甲����j
�i�I�v�V�����Ȃ��́uexit�v�́A�o�b�`���Ăяo���Ă���R�}���h�v�����v�g���̂��I�������Ă��܂��̂ŗv���ӁI�j

�uexit /b �߂�l�v�Ƃ��Ė߂�l���w�肷��ƁA�o�b�`�Ăяo������%ERRORLEVEL%�ɐݒ肳���B
�߂�l���w�肵�Ȃ������ꍇ�́A0���Ԃ�킯�ł͂Ȃ��A%ERRORLEVEL%�̒l�͕ς��Ȃ��B

�܂��A������o�b�`�����̖߂�l�ł͂Ȃ����Ƃɒ��ӁI

�uexit /b �߂�l�v�łǂ�Ȗ߂�l��Ԃ����Ƃ��A�o�b�`�������̂͐���ɏI����Ă���̂ŏI���R�[�h�͐���i0�j�Ȃ̂ł���B
�o�b�`�Ƃ��ẴG���[�i���݂��Ȃ����x���ɔ�ڂ��Ƃ����Ƃ��j�����������ꍇ�ɁA�I���R�[�h���G���[�R�[�h�ɂȂ�B

�‚܂�A�ȉ��̂悤�ȏ������ɂ͒��ӂ�v����B

>test.bat || echo fail

test.bat�����@�I�ɂ��������Ď��s�����ꍇ�Ƀ��b�Z�[�W���o�������Ȃ炱��ł������A
test.bat�̒��Łuexit /b 1�v�̂悤��0�ȊO�̒l��Ԃ������Ƃɂ���ă��b�Z�[�W���o�������Ȃ�A����ł̓_���B
��҂̈������������̂ł���΁A�ȉ��̗l�ɂ��ׂ��B

>test.bat & if errorlevel 1 echo fail	�ctest.bat�̖߂�l��1�ȏ�̂Ƃ��uecho fail�v�����s

���Ȃ݂ɁA�ȉ��̂悤�ȏ������́A������ɂ������A��͂��_���B

>test.bat & if %ERRORLEVEL% neq 0 echo fail
>test.bat & echo %ERRORLEVEL%

�Ȃ��Ȃ�A�‹��ϐ������̍s�S�̂̎��s�J�n�O�ɓW�J���������B
�‚܂���s�O��%ERRORLEVEL%�̒l��0�������Ƃ���ƁA�ȉ��̂悤�ɓW�J����Ă�����s����邱�ƂɂȂ�B

>test.bat & if 0 neq 0 echo fail
>test.bat & echo 0

���������āAtest.bat���ǂ�Ȓl��Ԃ��āi%ERRORLEVEL%�ɃZ�b�g����āj���A���s�O�̒l�Łu&�v�ȍ~�����������Ƃ������ƂɂȂ�B
�i���ׂ̈ɁA�G���[�R�[�h�`�F�b�N�Ɋւ��Ă�ERRORLEVEL�Ƃ������Z�q���킴�킴�p�ӂ���Ă���킯���B����Ȃ�l�̎擾���̂�if���̎��s���ɍs���킯������B�j


����͂��̑��̊‹��ϐ����g����ʂł����l�ɋN���蓾��B����if����for���ł͂悭���Ⴂ���Ă���Ă��܂��B�uhelp for�v�ufor /?�v�ł��킴�킴�Ꭶ����Ă��邭�炢���B

>set var=aaa
>set var=bbb & echo %var%		���uset var=bbb & echo aaa�v�ƓW�J����Ă�����s�����
aaa
>echo %var%
bbb				���uset var=bbb�v�����s����Ȃ������킯�ł͂Ȃ��̂ŁA�ォ�猩��΂����ƃZ�b�g����Ă���
set var=1
if %var% == 1 (			���uif 1 == 1 (
 set/a var=%var% + 2		�@�@ set/a var=1 + 2
 echo %var%			�@�@ echo 1
)				�@�@)�v�ƓW�J����Ă�����s�����
set list=
for %%i in (aa bb) do @set list=%list%;%%i	���ufor %i in (aa bb) do @set list=;%i�v�ƓW�J����Ă��珈�������̂ŁA
echo %list%				�@�u@set list=;aa�v�u@set list=;bb�v�����s�����

�Ȃ��A���̖�����������ׂ��x���‹��ϐ��Ƃ������̂�����i�x���‹��ϐ����L���ɂ��Ȃ��Ǝg���Ȃ����j�B

>set var=123
>set var=234 & echo �ʏ�F%var%�@�x���F!var!
�ʏ�F123�@�x���F!var!

>cmd /v:on					�c�x���‹��ϐ���L���ɂ��ĐV�����R�}���h�v�����v�g���N��

>set var=123
>set var=234 & echo �ʏ�F%var%�@�x���F!var!
�ʏ�F123�@�x���F234

>exit						�c���̃R�}���h�v�����v�g�֖߂�

�ł��A�x���‹��ϐ����g��Ȃ��Ă��T�u���[�`�������Ă��Ή����ł���B[2007-06-15]

set var=1
if %var% == 1 (call :add %var%)
exit/b

:add
set/a var=%var% + 2
echo %var%
set list=
for %%i in (aa bb) do @call :add %%i
echo %list%
exit/b

:add
@set list=%list%;%1

�o�b�`�ւ��W������

�o�b�`�ւ����_�C���N�V�����ɂ��f�[�^���͂́A�o�b�`�����ŏ��ɕW�����͂��g�p����R�}���h�ւ̓��͂ƂȂ�B[2007-10-26]
�Ⴆ��echo�͕W�����͂��g�p���Ȃ��ׁA�擪�ɒu���Ă����Ă� �W�����͂̃f�[�^�ɂ͉e���Ȃ��B

test_more.bat�F

@echo off
more

���s��F

> type aaa.txt | test_more
a1
a2

> test_more < aaa.txt
a1
a2

for���ւ̓��͂ɕW�����͂��g�������ꍇ�́A�W�����͂̃f�[�^�����̂܂ܕW���o�͂֏o�͂���R�}���h�𗘗p����B
�Ⴆ��findstr���g���B�iUNIX�Ȃ�cat���g�������ȋC�����邪�AMS-DOS��type�͕W�����͂��g���Ȃ��j

test_echo.bat�F

@echo off
for /f %%i in ('findstr .*') do echo %%i

���s��F

> type aaa.txt | test_echo
a1
a2

> test_echo < aaa.txt	�c�Ȃ��������o�͂���Ȃ�

�p�C�v���g�������_�C���N�V�����͂����Ɠ����̂ɁA�t�@�C������̓��͉͂��̂������o�͂���Ȃ��c�B

�Ƃ肠�����A�o�b�`�����Ńp�C�v���o�R���Ă��Ə�肭�������ۂ��B

test_echo2.bat�F

@echo off
findstr .* | for /f %%i in ('findstr .*') do @echo %%i

���s��F

> type aaa.txt | test_echo2
a1
a2

> test_echo2 < aaa.txt
a1
a2

���� ���̂������ƁAdo�̌���call���g���ă��x���ɔ�ڂ��Ƃ���Ɓu�o�b�` �X�N���v�g�O�Ńo�b�` ���x�����Ăяo�����Ƃ͂ł��܂���B�v�Ƃ������s���G���[�ɂȂ�B
�ǂ����A�p�C�v�̌��͕ʃo�b�`�̂悤�Ȉ����ɂȂ�炵���A���������ă��x�����ʋ�ԂɂȂ�̂ŔF���ł��Ȃ����ۂ��B

�Ȃ��Ȃ��x�X�g�ȉ������@�����‚���Ȃ��c(�Q)


�Z�p�����֖߂� / ����o�b�`�֍s��
���[���̑��M��F�Ђ�����

�@

�@

�@

�@

�@

�@

�@

�@

�@