DOS�̃R�}���h���t�@�C���ɏ����Ă����A�o�b�`�Ƃ��Ď��s���邱�Ƃ��o����B�iUNIX�̃V�F���X�N���v�g�ɑ����j
|
|
|
|
|
�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���̈����Ƃ���
���ʂɃ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
�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�`�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
echo "start"
test.bat
echo "�����ւ͖߂��ė��Ȃ��I"
�����߂������ꍇ�ɂ́ACALL�������g���B�i�߂�l��Ԃ��ɂ́A�uexit /b�v���g�p����j
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
echo "start"
cmd /c test.bat
echo "�Ԃ��Ă�����" %ERRORLEVEL%
pause
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���݂̍�ꏊ����̑��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���̏ꏊ���擾������@
�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 ���u abc �v���\������� |
%~f�ϐ� |
%�ϐ� �̒l���t���p�X�i��p�X�j�ɕϊ��������̂ɂȂ�B�u .. �v���̑��p�X�w�肪�����Ă����ꍇ�A����炪��菜���ꂽ��������ԂɂȂ�B |
echo %~f1 ���u C:\temp\abc �v���\������� |
%~d�ϐ� |
%�ϐ� �̒l���t���p�X�ň����ۂ��h���C�u���ɂȂ�B |
echo %~d1 ���u C: �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 ���u C:\temp\ �v���\������� |
%~n�ϐ� |
%�ϐ� �̒l���t�@�C���������i�g���q�Ȃ��j�ɂȂ�B |
echo %~n2 ���u zzz �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 ���u zzz.txt �v���\������� |
%~s�ϐ� |
%�ϐ� �̒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 ���u 2006/07/07 23:59 �v���\������� |
%~z�ϐ� |
%�ϐ� �̒l�̃t�@�C�������݂���Ƃ��A���̃t�@�C�����T�C�Y�ɂȂ�B |
echo %~z2 ���u 5 �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�̂Ƃ��Aecho %~dpnx$PATH:3 ���u C:\WINDOWS\system32\help.exe �v���\������� |
if ���� �R�}���h |
if ���� (�R�}���h) else �R�}���h if
���� (�R�}���h) else (�R�}���h) |
if ���� ( |
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
== EQU NEQ |
��r |
LSS LEQ |
�召��r |
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 /L %�ϐ� in (�J�n,����,�I��)
do �R�}���h |
for /L %�ϐ� in (�J�n,����,�I��)
do ( |
�ϐ����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 %�ϐ� 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
>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
>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
>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 >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 |
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
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
:���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
:���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
��` | �Ăяo�� |
---|---|
:���x�� |
call :���x�� |
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�`�̈�ԍŌ�Ł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�`�ւ����_�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)
�@
�@
�@
�@
�@
�@
�@
�@
�@