ȸ¿ø·Î±×ÀÎ
[MS - DOS] DOS BATCH ÀÛ¼º
14³â Àü
1. "@echo off"¸¦ ÀϹÝÀûÀ¸·Î »ç¿ëÇϱâ
====================================
ȸ鿡 ¸í·É¾îµéÀÌ Ç¥½ÃµÇÁö ¾Ê°Ô echo off ÇÏ°í, ±× ¶óÀεµ ȸ鿡 Ç¥½Ã µÇÁö ¾Ê°Ô Çϱâ À§Çؼ ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù.
@echo off
ÀÌ °ÍÀº MsDos 3.30 ÀÌÈÄ ¹öÀü¿¡¼¸¸ ÀÛµ¿ÇÑ´Ù. ÀÌ°ÍÀ» ÀϹÝÀûÀ¸·Î »ç¿ëÇÏ°Ô Çϱâ À§Çؼ 3.30ÀÌ»óÀÇ MsDos¸¦ »ç¿ëÇÑ´Ù¸é autoexec.bat ¾È¿¡ ´ÙÀ½°ú °°ÀÌ Àû¾î ³õ´Â´Ù.
set _echo=@
±×¸®°í ¹èÄ¡ÆÄÀÏ¿¡¼ ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÑ´Ù¸é ¾î´À ¹öÀüÀÇ MsDos¹öÀü¿¡¼µµ ÀÛµ¿ÇÑ´Ù.
%_echo%echo off
2. ¸ðµç ÆÄÀÏÀ» Áö¿ì±â
=====================
°¡Àå ÈçÇÏ°Ô Áú¹®µÇ´Â °Í(FAQ)ÁßÀÇ Çϳª´Â del *.* À» »ç¿ë껦 ¶§,"Are you sure (Y/N)?" ¶ó´Â È®ÀÎÀ» ¾î¶»°Ô ÇÏ¸é ³ªÅ¸³ªÁö ¾Ê°Ô Çϴ°ÍÀÌ´Ù. ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÑ´Ù.
echo y| del *.*
ȸ鿡 ³ªÅ¸³ª´Â ¸Þ¼¼Áöµµ º¸ÀÌÁö ¾Ê°Ô ÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
echo y| del *.* > nul
ÀÌ·¯ÇÑ È®ÀÎ ÀýÂ÷¸¦ Ç¥½ÃÇÏÁö ¾Ê°Ô ÇÏ´Â °ÍÀº Åä·ÐÀÇ ¿©Áö°¡ ¸¹Áö¸¸,À§¿Í °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
(ÁÖ: »ç½Ç del /Q *.* ¿Í °°ÀÌ /Q(Quiet) ¿É¼ÇÀ¸·Îµµ °¡´ÉÇÏÁö¸¸ ÀÌÂÊÀº ÇÊÅ͸¦ »ç¿ëÇÏ¿© ÀÔ·ÂÀ» ÀÚµ¿È Çϴ°Ϳ¡ ÃÐÁ¡À» ¸ÂÃáµí ½Í´Ù. 3.30 ¹öÀü¿¡¼± ¾ÈµÉ ¼öµµ ÀÖ¾ú°ÚÁÒ)
3. ´ÙÁß ¹Ýº¹
============
¹èÄ¡ÆÄÀÏ¿¡¼ ´ÙÁß ·çÇÁ(¹Ýº¹)¸¦ »ç¿ëÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ´ÙÀ½ÀÇ µÎ¹èÄ¡ÆÄÀÏÀ» »ý°¢ÇØ º¸ÀÚ. ±×¸®°í test.batÀ» ºÒ·¯ ½ÇÇà½ÃÄÑ º¸ÀÚ.
echo off
rem TEST.BAT
for %%f in (a b c d e f) do %comspec% /c test2 %%f
echo off
rem TEST2.BAT
for %%g in (1 2 3) do echo %1%%g
¾Æ´Ï¸é ÇÑÁÙ·Î ´ÙÀ½°ú °°ÀÌ ½á¼ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.
for %%f in(a b c d e f) do %comspec% /c for %%g in (1 2 3) do echo %%f%%g
ÀÌ µÎ¹ø° ¹æ¹ýÀÇ ´ÜÁ¡Àº echo°¡ ȸ鿡 Ç¥½ÃµÈ´Ù´Â °ÍÀÌ´Ù.
4. µð·ºÅ丮°¡ Á¸ÀçÇÏ´ÂÁö È®ÀÎÇÏ´Â ¹æ¹ý
======================================
µð·ºÅ丮°¡ ÀÖ´ÂÁö È®ÀÎÇÏ´Â °ÍÀº °¡²û ¸Å¿ì ¾µ¸ðÀÖ´Â ÀÏÀÌ´Ù. %1ÀÇ µð·ºÅ丮°¡ ¾ø´Ù¸é ´ÙÀ½ È®ÀÎÀº ÂüÀÌ µÉ°ÍÀÌ´Ù.
if not exist %1\nul if not exiat %1nul echo Directory %1 does not exist
5. ÇÁ·Î±×·¥À» Çöµð·ºÅ丮³ª °æ·Î¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´ÂÁö È®ÀÎÇϱâ
=============================================================
¹èÄ¡ ÇÁ·Î±×·¥¿¡¼ ÇÁ·Î±×·¥À» ºÒ·¯¼ »ç¿ëÇÒ¶§, ±× ÆÄÀÏ¿¡ ´ëÇÑ °æ·Î¸¦ ½áÁÖÁö ¾Ê¾ÒÀ» °æ¿ì, ±× ÇÁ·Î±×·¥ÀÌ ÇöÀçÀÇ µð·ºÅ丮³ª °æ·Î¿¡¼ »ç¿ë°¡´ÉÇÑÁö È®ÀÎÇÒ ¶§ µµ¿òÀÌ µÉ °ÍÀÌ´Ù.
set _found=
if exist %1 set _found=yes
for %%d in (%path%) do if exist %%d\%1 set _found=yes
for %%d in (%path%) do if exist %%d%1 set _found=yes
if "%_found%"=="yes" goto _continue
echo %1 is not at path or the current directory
goto _out
:_continue
echo %1 found at path or in the current directory
:_out
6. ¹èÄ¡ÆÄÀÏ¿¡¼ ¼ºê·çƾÀ̳ª Àç±ÍÀû¹æ¹ýÀ» »ç¿ëÇϱâ
==================================================
¹èÄ¡ÆÄÀÏ ¾È¿¡¼ ¼ºê·çƾÀ» »ç¿ëÇÏ´Â °ÍÀº °¡´ÉÇÏ´Ù. ¹æ¹ýÀº ¼ºê·çƾÀÌ ½ÇÇàµÈ µÚ¿¡ µ¹¾Æ°¡¾ßÇÒ °÷À» °¡¸£Å°´Â ȯ°æº¯¼ö(¿¹¸¦µé¸é_return)¸¦ ¼³Á¤ÇÏ´Â °ÍÀÌ´Ù. ÀÌ·± ¿¹´Â UNPACK.BAT À̳ª BOOT.BATÀÇ:_common °ú :_subru ºÎºÐ¿¡¼ ã¾Æ º¼ ¼ö ÀÖ´Ù.
¸¶Âù°¡Áö·Î Àç±ÍÀûÀÎ »ç¿ëÀÌ °¡´ÉÇÏ´Ù. ("Àç±ÍÀûÀÎ ¹æ¹ý"ÀÇ Àǹ̴ ÇÑ ¹èÄ¡ÆÄÀÏÀÌ ÀÚ±â ÀÚ½ÅÀ» ºÒ·¯ »ç¿ëÇÏ´Â °ÍÀÌ´Ù.) ÀÌ ¿¹´Â SAFEDEL.BAT¿¡¼ ¾Æ·¡ÀÇ ÇàÀ» µû¶ó ã¾Æ º¸¸é µÈ´Ù.
for %%f in (%1) do call safedel %%f recurse
¹èÄ¡ÆÄÀÏÀÇ 0¹ø° Àμö(%0)´Â ¹èÄ¡ÆÄÀÏ ÀÚ½ÅÀ» ³ªÅ¸³»¹Ç·Î, safedelÀº %0À¸·Î ´ëÄ¡ µÇ¾î »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.
7. ¸Å°³ Àμö(parameter)¸¦ ´ë¹®ÀÚ·Î ¹Ù²Ù±â.
=========================================
´ÙÀ½Àº ¹èÄ¡ÆÄÀÏ¿¡ »ç¿ëÇÑ Àμö %1 ¸¦ ´ë¹®ÀÚ·Î ¹Ù²Ù¾î ÁÖ´Â ¿¹Á¦ÀÌ´Ù. ÀÌ´Â MsDos´Â path¸¦ ´ë¹®ÀÚ·Î ¹Ù²Û´Ù´Â Á¡À» ÀÌ¿ëÇÑ °ÍÀÌ´Ù. °á°ú´Â upcase_¿¡ ÀúÀåµÉ °ÍÀÌ°í, ¿ø·¡ÀÇ °æ·Î°¡ ´Ù½Ã ÀúÀåµÉ °ÍÀÌ´Ù.
set tmp_=%path%
path=%1
set upcase_=%path%
path=%tmp_%
8. »õ·Î¿î µð·ºÅ丮¸¦ °æ·Î¿¡ ºÙÀ̱â
==================================
ÀÚÁÖ ÇÊ¿äÇÑ ÀÌ ±â¼úÀº ¸Å¿ì °£´ÜÇÏ´Ù. ¿¹¸¦ µé¾î %1¸¦ °æ·Î¿¡ µ¡ºÙÀÌ·Á¸é
path=%path%;%1
À̶ó°í ÇϸéµÈ´Ù.
ÀÌ ±â¼úÀº ¹èÄ¡ÆÄÀÏ ¾È¿¡¼¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¹èÄ¡ÆÄÀÏ ¾È¿¡¼¸¸ ȯ°æº¯¼ö(%path%)¸¦ »ç¿ëÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. Á¸ÀçÇÏÁö ¾Ê´Â µð·ºÅ丮¸¦ µ¡ºÙÀÌ·ÁÇѴٰųª Áߺ¹Çؼ °æ·Î¸¦ µ¡ºÙÀÌ´Â °ÍÀ» ¹æÁöÇÏ´Â ADDPATH.BATÀ̶ó´Â ¹èÄ¡ÆÄÀÏÀÌ ÀÖ´Ù.
9. µÎ ÆÄÀÏÀ» ºñ±³Çϱâ
=====================
¹èÄ¡ÆÄÀÏ¿¡¼ µÎ ÆÄÀÏÀÌ °°ÀºÁö ¾Æ´ÑÁö È®ÀÎÇØ º¼ ¼ö ÀÖ´Ù. ÀÌ ±â¼úÀº MsDosÀÇ ¿ÜºÎ ¸í·É¾îÀÎ fc.exe¿Í find.exe¸¦ »ç¿ëÇÑ´Ù. (¿ÜºÎ ¸í·É¾î¶ó´Â ¶æÀº MsDos¿Í °°ÀÌ ÀÖ´Â ÇÁ·Î±×·¥µéÀÌ´Ù. ´ëºÎºÐÀÇ ¿ÜºÎ ¸í
·É¾î¿ë ÇÁ·Î±×·¥µéÀº c:\dos ¿¡ À§Ä¡ÇÑ´Ù.)
fc %1 %2 > tmp$$$
type tmp$$$ | find /i "fc: no differences encountered" >diffe$$$
if exist notsame$ del notsame$$$
copy diffe$$$ notsame$ > nul
if not exist notsame$ echo Files %1 and %2 are different
if exist notsame$ echo Files %1 and %2 are identical
if exist tmp$$$ del tmp$$$
if exist notsame$ del notsame$
if exist diffe$$$ del diffe$$$
Á»´õ »ý°¢Çϸé ÀÌ ±â¼úÀº ´Ù¸¥ ¸ñÀû¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ´Â ÆÄÀϾȿ¡ ÁÖ¾îÁø ¹®ÀÚ¿ÀÌ ÀÖ´ÂÁö È®ÀÎ Çϴµ¥ ¹ÙÅÁÀ» µÎ°í Àֱ⠶§¹®ÀÌ´Ù.
10. ºóÁÙÀ» ¾²±â
===============
ÀÌ´Â °£´ÜÇÏÁö¸¸ Á¾Á¾ ÇÊ¿äÇÏ°í À¯¿ëÇÑ ±â¼úÀÌ´Ù. echo ¹Ù·Î ´ÙÀ½¿¡Á¡(.)À» ÂïÀ¸¸é ºóÁÙÀ» Ç¥½ÃÇÒ ¼ö ÀÖ´Ù.
echo.
11. pause¸¦ ÀÌ¿ëÇØ ¸Þ¼¼Áö¸¦ Ç¥½ÃÇϱâ
====================================
¸Þ¼¼Áö¸¦ ¼Õ½±°Ô ³ªÅ¸³ª°Ô ÇÒ ¼ö ÀÖ´Ù. ¸Þ¼¼Áö¸¦ echoÇÑ ´ÙÀ½ pause ¸¦ »ç¿ëÇϴµ¥, pauseÀÇ ¸Þ¼¼Áö¸¦ nul·Î º¸³»¸é µÈ´Ù.
echo Break to quit, any other key to remove the tmp directory
pause > nul
12. for¸¦ ÀÌ¿ëÇÑ ´Ù¾çÇÑ rename ±â¼ú
===================================
ÀÌ ±â¼úÀÌ ±âº»ÀûÀÌ°í »ç¼ÒÇÏÁö¸¸, À̸¦ »ý°¢ÇØ ³»±â¶õ ½±Áö ¾ÊÀ» °ÍÀÌ´Ù. for ¹®Àº ÆÄÀÏÀÇ À̸§À» ¹Ù²Ù´Âµ¥ Ưº°È÷ À¯¿ëÇÏ´Ù. ¿¹¸¦ µé¸é, ³»°¡ ´ÙÀ½ÀÇ ÆÄÀϵéÀ» °¡Áö°í ÀÖÀ» ¶§, (Åͺ¸ ÆĽºÄ® TP 4.0,
5.0, 5.5, 6.0) ³»°¡ ¹öÀü 29¸¦ 30À¸·Î ¹Ù²Ù±â ¿øÇÑ´Ù°í ÇÒ¶§,
tspa2940.zip
tspa2950.zip
tspa2955.zip
tspa2960.zip
´ÙÀ½Àº ¼Õ½±°Ô ±×·± ÀÏÀ» ÇØÁØ´Ù.
for %f in (40 50 55 60) do re tspa29%f.zip tspa30%f.zip
¹°·Ð ÆÄÀÏÀ̸§ ¹Ù²Ù´Â ÀÏ ¸»°íµµ ÀÌ ±â¼ú·Î ´Ù¾çÇÑ ÀÏÀ» ÇÒ ¼ö ÀÖ´Ù.
ÇϳªÀÇ ¿¹´Â ´ÙÀ½°ú °°´Ù.
for %d in (a b) do format %d:
13. ¿ÍÀϵåÄ«µå¸¦ È®ÀÎÇϱâ
=========================
ÀÌ ¿¹Á¦´Â Àμö %1ÀÌ ¿ÍÀϵå Ä«µå¸¦ »ç¿ëÇÏ°í ÀÖ´ÂÁö ¾Æ´ÑÁö È®ÀÎÇÑ´Ù.
@echo off
for %%f in (%1) do if "%%f"=="%1" goto _nowilds
echo Parameter %1 contains wildcards (or is missing)
:_nowilds
14. ¹èÄ¡ ÀÛ¾÷À» Áß°£¿¡ ±×¸¸µÎÁö ¸øÇÏ°Ô Çϱâ
===========================================
ctty ¸í·É¾î¸¦ »ç¿ëÇؼ ÀÔ·ÂÀåÄ¡³ª Ãâ·ÂÀåÄ¡¸¦ »õ·Î ¼³Á¤ÇÏ¿© ¹èÄ¡ÆÄÀÏÀ» ÁߴܽÃÅ°´Â °ÍÀ» ¹æÁöÇÒ ¼ö ÀÖ´Ù. ¿©±âÀÇ ¿¹Á¦´Â Æнº¿öµå·Î e¸¦ ³Ö¾î¾ß ÇÏ´Â °£´ÜÇÑ ¹èÄ¡ÆÄÀÏÀÌ´Ù.
ctty°¡ nul·Î µ¹·ÁÁø µ¿¾È<,>ÀÇ ¸®µð·º¼ÇÀÌ ÇÊ¿äÇÑ °ÍÀ» ´«¿©°Ü º¸¶ó. ask¶ó´Â ¹èÄ¡ÆÄÀÏÀ» µ½
±â À§ÇÑ ÇÁ·Î±×·¥Àº °°ÀÌ Æ÷ÇԵǾî ÀÖ´Ù. ( MsDosÀÇ choice¿Í ºñ½ÁÇÏ´Ù. ´Ü, ¿¡·¯ ·¹º§À» ÀÔ·ÂÇÑ ¹®ÀÚÀÇ ¾Æ½ºÅ° °ªÀ¸·Î µ¹¸®´Â °Í¸¸ Ʋ¸®´Ù.)
@echo off
ctty nul
echo Now you cannot break the batch with ^C or ^Break > con
:_ask
echo Use e to break > con
ask /b /d < con
if errorlevel==101 if not errorlevel==102 goto _out
goto _ask
:_out
ctty con
echo Back to normal. Now you can break the batch with ^C or
^Break.
ÀÌ ¹èÄ¡ÆÄÀÏÀÌ ÀÛµ¿µÇ°í ÀÖ´Â µ¿¾È¿¡´Â alt-crtl-del·Î ´Ù½Ã ºÎÆÃÇÒ¼öµµ ¾ø´Ù. ÀÌ °°Àº ÀÏÀ» ÇÏ´Â noboot.exe¶ó´Â ·¥»óÁÖ ÇÁ·Î±×·¥µµ ÀÖ´Ù.
15. autoexec.bat¸¦ ÁßÁöÇÏ°í °Ç³Ê¶Ù´Â °ÍÀ» ¹æÁöÇϱâ
==================================================
ºê·¹ÀÌÅ©¸¦ ´·¯ autoexec.bat¸¦ °Ç³Ê ¶Ù¾î Áö³ªÄ¡Áö ¾Ê°Ô Çϱâ À§Çؼ ´ÙÀ½°ú °°ÀÌ config.sys¿¡ ¾²¸é µÈ´Ù.
shell=c:\command.com /p nul
ÀÌ·¸°Ô Çϱâ Àü¿¡ ¸¸ÀÏÀÇ °æ¿ì¸¦ ´ëºñÇؼ Ç÷ÎÇÇ µð½ºÄÏÀ¸·Î ºÎÆÃÇÒÁغñ¸¦ ÇصдÙ. autoexec.bat ¸Ç µÞÁÙ¿¡ 'ctty con'À̶ó°í µ¡ ºÙ¿©¾ß µÈ´Ù. ±×·¸°Ô ÇÏÁö ¾ÊÀ¸¸é Å°º¸µå°¡ ¸»À» µèÁö ¾ÊÀ» °ÍÀÌ°í, ÁغñÇÑ Ç÷ÎÇÇ µð½ºÄÏÀ¸·Î ºÎÆÃÇØ¾ß ÇÒ °ÍÀÌ´Ù :-).
16. È®ÀåÀÚ¸¦ ÀνÄÇϱâ
=====================
´ÜÁö È®ÀåÀÚ¸¦ È®ÀÎÇÏ·Á´ø°¡, ÁÖ¾îÁø ÆÄÀÏÀÇ À̸§¿¡¼ È®ÀåÀÚ¸¦ ȯ°æº¯¼ö·Î ÀúÀåÇÏ·Á°í ÇÒ¶§, ÀÌ °ÍÀº ¸Å¿ì À¯¿ëÇÏ´Ù. ¾î¶»°Ô ÇÏ´ÂÁö ¿©±â¿¡ ÀÖ´Ù. ÀÌ ¹èÄ¡ÆÄÀÏÀº PC-Magazine July 1992, Vol 11, No. 13,
page 528¿¡ ³ª¿Â Á¤º¸¸¦ ÀÌ¿ëÇÑ °ÍÀÌ´Ù. for ·çÇÁ¿¡¼ ½½·¹½Ã(/)·Î ½ÃÀÛÇÏ´Â Àμö´Â µÎ ºÎºÐÀ¸·Î ³ª´©¾îÁö´Âµ¥, óÀ½ ºÎºÐÀº ÀμöÀÇ Ã¹¹®ÀÚÀÌ°í ´Ù¸¥ ºÎºÐÀº ³ª¸ÓÁö ¹®ÀÚ¿ÀÌ´Ù.
ÀÌ ÇØ°á¹æ¹ý¿¡¼ ÇϳªÀÇ ¹®Á¦Á¡Àº .* À̶ó´ø°¡ .??? À̶õ È®ÀåÀÚ¸¦ ÀνÄÇÏÁö ¸øÇÏ´Â °ÍÀÌ´Ù. ±×·¯³ª "¿ÍÀϵåÄ«µå¸¦ È®ÀÎÇϱâ"¸¦ ÀÌ¿ëÇؼ È®ÀÎÇÏ¸é µÉ °ÍÀÌ´Ù. ÀÌ·¯ÇÑ ±â¼úÀ» ÀÌ¿ëÇÑ °ÍÁß¿¡ UNPACK.BAT¶ó
´Â ¹èÄ¡ÆÄÀÏÀÌ ÀÖ´Ù.
@echo off
set exten_=%1
:_next
set prev_=%exten_%
for %%f in (/%exten_%) do set exten_=%%f
if ".%exten_%"=="%prev_%" goto _extfound
if not "%exten_%"=="%prev_%" goto _next
goto _noext
:_extfound
echo The filename %1 has an extension %exten_%
goto _out
:_noext
echo The filename %1 has no extension
:_out
set exten_=
set prev_=
17. % ¹®ÀÚ ÀοëºÎÈ£
===================
%1Àº ¹èÄ¡ÆÄÀÏ¿¡ ÁÖ¾îÁø ù¹ø° Àμö¸¦ °¡¸£Å²´Ù. ÀÌó·³ 'echo %1'À̶ó°í Çϸé ù¹ø° Àμö¸¦ Ç¥½ÃÇØ ÁØ´Ù. ´ë½Å¿¡ %1¶ó´Â ¹®ÀÚ¸¦ Ç¥½ÃÇÏ°í ½ÍÀº °æ¿ì ¾î¶»°Ô ÇؾßÇϴ°¡? % ¹®ÀÚ´Â ÀοëºÎȣó·³ ÇൿÇÑ´Ù. ±×·¡¼ %%1À̶ó°í ¾´ °æ¿ì ½ÇÁ¦·Î´Â "%1"À̶ó°í ȸ鿡 Ç¥½ÃµÈ´Ù. ¾Æ·¡ÀÇ °£´ÜÇÑ ¿¬½ÀÀ» ½ÇÇàÇغ¸¶ó.
@echo off
if "%1"=="" goto _out
echo %1
echo %%1
:_out
ÀÌ ±â´ÉÀ» ÀÌ¿ëÇÑ °ÍÀº "¹èÄ¡ÀÇ º¸Á¶ ¹èÄ¡ÆÄÀÏÀ» ¾ø¾Ö±â"¸¦ º¸¾Æ¶ó.
ÁÁÀº ¿¹·Î´Â DELPATH.BAT°¡ ÀÖ´Ù.
18. ¹èÄ¡ÀÇ º¸Á¶ ¹èÄ¡ÆÄÀÏÀ» ¾ø¾Ö±â
=================================
¸¹Àº ¹èÄ¡ ÇÁ·Î±×·¥ÀÌ callÀ» »ç¿ëÇؼ º¸Á¶ ¹èÄ¡ÆÄÀÏÀ» ºÒ·¯´Ù ¾´´Ù. ¸¹Àº °æ¿ì ÀÌ·± ÀÏÀ» Àç±ÍÀûÀÎ »ç¿ëÀ» ÅëÇØ ÀÚ±â ÀÚ½ÅÀ» ºÒ·¯´Ù¾¸À¸·Î½á º¸Á¶ ÆÄÀÏÀ» »ç¿ëÇÏ´Â °ÍÀ» ÁÙÀÏ ¼ö ÀÖ´Ù. º¸Á¶ÄÚµå´Â ¹èÄ¡ÆÄÀÏ ÀÚ±âÀڽſ¡ ³Ö¾î ³õ´Â´Ù. ÀÌ·¯ÇÑ ±â¼úÀº ¿ÍÀϵå Ä«µå¸¦ ¹Þ¾ÆµéÀÌ´Â TYPE °°Àº SHOW.BAT ¿¡¼ °¡Àå Àß ³ªÅ¸³ª ÀÖ´Ù. ÀϹÝÀûÀ¸·Î´Â °³°³ÀÇ ÆÄÀÏÀ» typeÇϱâ À§Çؼ º¸Á¶ÆÄÀÏÀÌ ÇÊ¿äÇÏ´Ù. ´Ù¸¥ ¿¹´Â
SAFEDEL.BAT¿¡¼ ã¾Æº¼¼öÀÖ´Ù.
ÀÌ¿Í °°Àº ÀÏÀ» Çϱâ À§ÇÑ ´Ù¸¥ ±â¼úÀÌ ÀÖ´Ù. ¿ø·¡ÀÇ ¹èÄ¡ÆÄÀÏÀÌ º¸Á¶ ¹èÄ¡ÆÄÀÏÀ» ¸¸µç ´ÙÀ½ ±×°ÍÀ» ºÒ·¯ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ÀÌ·± °ÍÀ¸·Î´Â DELPATH.BATÀÇ ¿¹¸¦ µé ¼ö ÀÖ´Ù. ¿©±â¿¡´Â »ç¿ëµÇ´Â µå¶óÀ̺긦
º¸¿©ÁÖ´Â °£´ÜÇÑ ¿¹°¡ ÀÖ´Ù. (c ºÎÅÍ t ±îÁö °¡´ÉÇÏ´Ù. ¿©±â¼± ´õ ¾²¸é ÁÙÀÌ ³Ñ¾î°¡´Ï±î!)
@echo off
echo @echo off> tmp$$$.bat
echo if exist %%1:\nul echo Drive %%1: is present>> tmp$$$.bat
for %%d in (c d e f g h i j k l m n o p q r s t) do call tmp$$$
%%d
del tmp$$$.bat
µð½ºÅ©ÀÇ º¼·ý ·¹À̺íÀ» ã¾Æ³»´Â âÀÇÀûÀÎ ±â±³°¡ PC-Magazine August 1992, Vol. 11, No. 14, p. 527¿¡ ½Ç·È´Ù. ¿©±â´Â °°Àº ±â¼úÀ» »ç¿ëÇÏ´Â ¿¹°¡ ÀÖ´Ù. ȯ°æº¯¼ö getdir_¿¡ ÇöÀçÀÇ µð·ºÅ丮¸¦ ÀúÀåÇÑ´Ù. ÀÌ ±â¼úÀº PUSHDIRE.BAT¿¡ »ç¿ëµÇ°í ÀÖ´Ù.
@echo off
echo @echo off> director.bat
echo set getdir_=%%2>> director.bat
echo echo %%getdir_%%>> director.bat
dir | find "Directory"> go.bat
call go
if exist director.bat del director.bat
if exist go.bat del go.bat
19. subst ¸í·É¾î¸¦ °æ·Î¿¡ »ç¿ëÇϱâ
==================================
¾î¶² µð·ºÅ丮¸¦ Àб⠽±°Ô Çϱâ À§Çؼ °£´ÜÇÑ ¹èÄ¡ÆÄÀÏÀ» »ç¿ëÇÑ´Ù. ¸¸¾à subst °¡ ÀÌ¹Ì ¼³Á¤µÇ¾î¼ »ý±æ ¼ö ÀÖ´Â ¿¡·¯¸¦ ¹æÁöÇÑ´Ù. ±×¸®°í ¸¶Áö¸·À¸·Î ÇöÀç ´ëÄ¡µÈ µð·ºÅ丮ÀÇ ÇöȲÀ» º¸¿©ÁØ´Ù.
@echo off
if exist m:\nul echo The substitution has already been made
if not exist m:\nul subst m: c:\math
if not exist s:\nul subst s: c:\support
subst
20. ÀÏÁÖÀÏ¿¡ Çѹø ½ÇÇàÇϱâ. (¿äÀÏÀ» È®ÀÎÇϱâ)
=============================================
¿äÀÏÀ» ȯ°æº¯¼ö¿¡ ³Ö´Â °ÍÀº ¾î·Á¿î ±â¼úÀÌ´Ù. ¿ÏÀüÇÑ ¿¹´Â WEEKLY.BAT¿¡¼ ã¾Æº¼¼ö ÀÖ´Ù. ÀÌ ±â¼úÀÇ ÇÙ½ÉÀº ¾Æ·¡¿¡ ³ª¿Í Àִµ¥, ¿äÀÏÀ» weekday_¶ó´Â ȯ°æº¯¼ö¿¡ ÀúÀåÇÏ´Â °ÍÀÌ´Ù. ÀÏ¹Ý µµ½º ÇÁ·Î±×·¥ ¿Ü¿¡ ¾Æ¹«·± º¸Á¶ ÇÁ·Î±×·¥ÀÌ ÇÊ¿ä¾ø´Ù.
@echo off
echo.| date | find "Current" > tmp$$$.bat
echo set weekday_=%%3> current.bat
call tmp$$$
echo %weekday_%
if "%weekday_%"=="Fri" echo Thank God it's Friday
if exist tmp$$$.bat del tmp$$$.bat
if exist current.bat del current.bat
set weekday_=
»ç½Ç, À§¿¡¼ %%3 ´ë½Å¿¡ %%4¸¦ »ç¿ëÇÏ¸é ¿À´ÃÀÇ ³¯Â¥¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù.
21. ÆÄÀÏÀ̸§¿¡ °æ·Î°¡ Æ÷ÇԵǾú´ÂÁö È®ÀÎÇϱâ
===========================================
¿ì¼± ¸ÕÀú "È®ÀåÀÚ¸¦ ÀνÄÇϱâ"¸¦ º¸¸é °°Àº ¾ÆÀ̵ð¾îÀÎ °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ÆÄÀÏÀ̸§ÀÌ ´Ü¼øÈ÷ go.exe ·Î ÀÌ·ç¾î Á³´ÂÁö, ¾Æ´Ï¸é °æ·Î¸¦ Æ÷ÇÔÇؼ r:\progs\go.exe¿Í °°ÀÌ ÀÌ·ç¾î Á³´ÂÁö È®ÀÎÇÏ´Â °ÍÀº r:\progs\*.exe¿Í °°ÀÌ È®ÀåÀÚ¸¦ »ç¿ëÇß´Ù¸é ¸Å¿ì º¹ÀâÇÑ ÀÏÀÌ´Ù. ¿©±â¼ ¾î¶»°Ô µÇ´ÂÁö ¼³¸íÇÏ¿´´Ù. À̸¦ ¿ÏÀüÈ÷ ÀÌÇØÇß´Ù¸é È®½ÇÈ÷ ¹èÄ¡ ÆÄÀϵ鿡 ´ëÇؼ ÀÌÇØÇϱ⠽ÃÀÛÇß´Ù°í ¸»ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
@echo off
echo @echo off> tmp$$$.bat
echo set rest_=%%1>> tmp$$$.bat
echo :_next>> tmp$$$.bat
echo set prev_=%%rest_%%>> tmp$$$.bat
echo for %%%%g in (/%%rest_%%) do set rest_=%%%%g>> tmp$$$.bat
echo if ":%%rest_%%"=="%%prev_%%" goto _found>> tmp$$$.bat
echo if "\%%rest_%%"=="%%prev_%%" goto _found>> tmp$$$.bat
echo if not "%%rest_%%"=="%%prev_%%" goto _next>> tmp$$$.bat
echo goto _nopath>> tmp$$$.bat
echo :_found>> tmp$$ at
echo set haspath_=yes>> tmp$$$.bat
echo goto _out>> tmp$$$.bat
echo :_nopath>> tmp$$$.bat
echo set haspath_=no>> tmp$$$.bat
echo :_out>> tmp$$$.bat
echo set rest_=>> tmp$$$.bat
echo set prev_=>> tmp$$$.bat
for %%f in (%1) do call tmp$$$ %%f
if "%haspath_%"=="yes" echo Filename %1 includes a path
if "%haspath_%"=="no" echo Filename %1 does not include a path
rem if exist tmp$$$.bat del tmp$$$.bat
set haspath_=
22. ¿£ÅÍÅ°¸¦ ´©¸£Áö ¾Ê°í ½Ã°£À» º¸±â
====================================
ÇöÀçÀÇ ½Ã°£À» º¸´Â °£´ÜÇÑ ±â¼úÀº ´ÙÀ½°ú °°´Ù.
echo.| time | find /v "new"
½Ã°£À» ȯ°æº¯¼ö·Î ÀúÀåÇÏ´Â ¹æ¹ýÀº LASTBOOT.BATÀ» º¸¾Æ¶ó.
23. ¿¡·¯·¹º§ °ªÀ» È®ÀÎÇÏ´Â ´Ù¸¥ ¹æ¹ý
====================================
¸¹Àº ÇÁ·Î±×·¥°ú ¸î°³ÀÇ µµ½º¸í·É¾îµé( diskcomp, format, xcopy)Àº³¡³¯ ¶§ ¿¡·¯ ·¹º§À» ¹ß»ý½ÃŲ´Ù. ¿¡·¯·¹º§ÀÇ ´©ÀûÀûÀÎ ¼ºÁú ¶§¹®¿¡ ¿¡·¯ ·¹º§À» È®ÀÎÇÏ´Â °ÍÀº ´Ù¼Ò º¹ÀâÇØÁø´Ù. ±×·¡¼ ¸¸¾à ¿¡·¯·¹º§ÀÌ Á¤È®È÷ 2ÀÎÁö È®ÀÎÇϱâ À§Çؼ´Â ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
if errorlevel==2 if not errorlevel==3 echo Errorlevel 2
for ¸í·É¾î¸¦ »ç¿ëÇÏ´Â ´Ù¸¥ ¹æ¹ýÀ¸·Î ´ÙÀ½À» µé¼ö ÀÖ´Ù.
for %%e in (0 1 2 3 4 5 6 7) do if errorlevel==%%e set
_errlev=%%e
if "%_errlev%"=="2" echo Errorlevel 2
Á» ´õ ÀϹÝÀûÀ¸·Î ´ÙÀ½°ú °°ÀÌ ÇÒ ¼ö ÀÖ´Ù.
for %%e in (0 1 2 3 4 5 6 7) do if errorlevel==%%e set
_errlev=%%e
if "%_errlev%"=="2" echo Errorlevel %_errlev%
º¹ÀâÇÑ ¹èÄ¡ÆÄÀÏ¿¡¼ Æí¸®ÇÑ ¹æ¹ýÀº goto¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù.
for %%e in (0 1 2) do if errorlevel==%%e goto _label%%e
goto _out
:_label0
echo Errorlevel 0
:_label1
echo Errorlevel 1
:_label2
echo Errorlevel 2
:_out
ÀÌ ±â¼úÀ» ½ÇÁ¦·Î »ç¿ëÇÏ´Â ¿¹´Â BOOT.BAT¿¡¼ ã¾Æº¼¼ö ÀÖ´Ù.
24. ¹èÄ¡ÆÄÀÏÀÇ Ãâ·ÂÀ» ¸®µð·º¼Ç(redirection)Çϱâ
===============================================
¹èÄ¡ÆÄÀÏ ¾È¿¡¼ÀÇ Ãâ·ÂÀº ¼Õ ½±°Ô Àç ¹æÇâÀüȯ(redirecion)ÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½°ú °°Àº example.bat À̶ó´Â ¹èÄ¡ÆÄÀÏÀ» »ý°¢Çغ¸ÀÚ.
@echo This is a redirection test> test
"example"¸¦ ½ÇÇà½ÃÅ°¸é ¾Æ·¡ÀÇ ¹®ÀåÀ» ´ãÀº "test"¶ó´Â ÆÄÀÏÀ» »ý¼º ÇÒ °ÍÀÌ´Ù.
This is a redirection test
ÀÌ ÁÙÀº eoln(end of line: ascii 13 + 10)À» ÁÙ ³¡¿¡ Æ÷ÇÔÇÏ°í ÀÖ´Ù. ¸®µð·º¼Ç ±âÈ£ '>' ¾Õ¿¡ ¾Æ¹«·± °ø¹éµµ ÁÖÁö ¾Ê´Â °ÍÀÌ Çö¸íÇÒ¶§°¡ ÀÖ´Ù.
¹èÄ¡ÆÄÀÏÀÌ ¸¸µå´Â Ãâ·ÂÀ» ´Ù½Ã Àç ¹æÇâÀüȯ(redirection)ÇÏ´Â °ÍÀº ´Ù¼Ò º¹ÀâÇÏ´Ù. ´ÙÀ½°ú °°Àº ³»¿ëÀ» Áö´Ñ example2.batÀ» »ý°¢ÇØ º¸ÀÚ.
@echo This is another redirection test
½ÇÇàÇϸé,
example2 > test
Ãâ·ÂÀº ȸ鿡 ³ª¿À°í, ºó test¶ó´Â ÆÄÀÏÀÌ »ý¼ºµÉ °ÍÀÌ´Ù. Ãâ·ÂÀ» Àç ¹æÇâ Àüȯ ½ÃÅ°±â À§Çؼ´Â ´ÙÀ½°ú °°ÀÌ command.com ¸í·É¾î Çؼ®±â¸¦ ÅëÇؼ ¹èÄ¡ÆÄÀÏÀ» ½ÇÇàÇØ¾ß ÇÑ´Ù.( command.comÀº Çöµð·ºÅ丮³ª °æ·Î¿¡ ÀÖ¾î¾ß ÇÑ´Ù.)
command /c example2 > test
ÀÌ¿Í °°ÀÌ ÇÏ¸é ³»¿ëÀÌ "test"¶ó´Â ÆÄÀÏ¿¡ ´ã±æ °ÍÀÌ´Ù.
25. ȯ°æÀúÀå °ø°£ÀÌ ÃæºÐÇÑÁö È®ÀÎÇϱâ
=====================================
¸¸¾à ¹èÄ¡ÆÄÀÏÀÌ È¯°æÀúÀå º¯¼ö¸¦ »ç¿ëÇϸé, ȯ°æÀúÀå °ø°£ÀÌ ºÎÁ·ÇÒ°æ¿ì°¡ ÀÖ´Ù. ¸¸¾à "Out of environment space"¶ó´Â ¸Þ¼¼Áö¸¦ ¹Þ´Â´Ù
¸é Àß ¾Ë·ÁÁø ¹æ¹ýÀ» ÅëÇؼ ´ÙÀ½°ú °°ÀÌ config.sys ÀÇ shellÀ» ¼³Á¤Çؼ ȯ°æÀúÀå °ø°£À» ´Ã¸± ¼ö ÀÖ´Ù.
shell=c:\bin\command.com c:\bin /e:1024 /p
ÀÌ º¸´Ù ´ú ¾Ë·ÁÁø ±â¼ú·Î´Â ȯ°æÀúÀå °ø°£ÀÌ ¸ðÀÚ¶ó±â Àü¿¡ ¹Ì¸® È®ÀÎÇØ º¼¼ö ÀÖ´Ù. ¾Æ·¡ÀÇ ¿¹´Â 32¹ÙÀÌÆ®ÀÇ È¯°æÀÌ ³²¾Æ ÀÖ´ÂÁö È®ÀÎÇÑ´Ù.
@echo off
set test_=12345678901234567890123456789012
if "%test_%"=="12345678901234567890123456789012" goto _yes
echo Insufficient environment space
goto _out
:_yes
echo Sufficient environment space
set test_=
rem Whatever you wish to do
:_out
26. µå¶óÀ̺긦 »ç¿ë ¸øÇÏ°Ô ÇÏ´Â °£´ÜÇÑ ¹æ¹ý
===========================================
Àӽ÷Πµå¶óÀ̺긦 »ç¿ëÇÏÁö ¸øÇÏ°Ô ÇÏ·Á¸é, subst¸í·É¾î¸¦ »ç¿ëÇÏ¸é µÈ´Ù. ¿¹´Â ¾Æ·¡¿Í °°´Ù.
@echo off
md c:\none
subst d: c:\none
´Ù½Ã »ç¿ëÇÏ°Ô ÇÏ·Á¸é,
@echo off
subst d: /d
rd c:\none
27. ÇÁ¸°ÅÍ¿¡ escape ¸í·É¾î¸¦ º¸³»±â
===================================
¿©±â Á¤¸» »ç¼ÒÇÑ ±â¼úÀÌ ÀÖ´Ù. ¸í·ÉÇà¿¡¼ °ð¹Ù·Î ÇÁ¸°ÅÍ¿¡°Ô escape sequence¸¦ º¸³¾ ¼ö ¾ø´Ù. ±×·¯³ª ´ÙÀ½°ú °°Àº ¹èÄ¡ÆÄÀÏÀ» ÀÌ¿ëÇÏ¸é °£´ÜÇÏ´Ù.
@echo ESC%1> prn
ESC´Â ÁøÂ¥ escape¹®ÀÚ·Î ¿¡µðÅÍ·Î ¾²¿©Á®¾ß µÈ´Ù. ÀÌ ¹æ¹ýÀÇ ÇÑ°¡Áö °áÁ¡Àº ¶óÀÎÇǵ带 º¸³»´Â °ÍÀÌ´Ù.
28. ¹«ÀÛÀ§ ¹®ÀÚ¿À» ¸¸µç´Â ¹æ¹ý
===============================
UseNet news¿¡¼ ¹«ÀÛÀ§ ¹®ÀÚ¿À» ¸¸µå´Â ¹æ¹ýÀ» ¹°¾îº¸´Â »ç¶÷ÀÌ ÀÖ¾ú´Ù. ´ë´äÀº ´ÙÀ½°ú °°´Ù. À̸¦ È®ÀåÇؼ °øºÎÇغ¸±â ¹Ù¶õ´Ù.
@echo off
echo 10 randomize(val(mid$(time$,7,2))) > tmp.bas
echo 20 open "tmp2.bat" for output as #1 >> tmp.bas
echo 30 x$ = mid$(str$(int(rnd*10000)),2) >> tmp.bas
echo 40 print #1,"@set ramdom_=";x$ >> tmp.bas
echo 50 close #2 >> tmp.bas
echo 60 system >> tmp.bas
gwbasic tmp.bas
call tmp2
del tmp.bas
del tmp2.bat
set
29. ¹®ÀÚ¿ÀÇ ±æÀ̸¦ ¾Ë¾Æ³»±â
============================
¹®ÀÚ¿ÀÇ ±æÀ̸¦ ã¾Æ³»´Â ÀÏÀº PC Magazine January 26, 1993 issue ¿¡ ½Ç·È´Ù. ¿©±â¼ Á¦¾ÈÇÏ´Â ¹æ¹ýÀº PC ¸Þ°ÅÁøÀÇ ¹æ¹ý°ú ±Ùº»ÀûÀ¸·Î °°Áö¸¸, ´õ ÀϹÝÀûÀÌ´Ù.
@echo off
set test_=Testing the lenght of a string
echo %test_% > len$&$&$
dir len$&$&$ | find "LEN$&$&$" > go$$$.bat
echo @echo off> len$&$&$.bat
echo set length_=%% len$&$&$.bat
call go$$$
echo The lenght is %length_% bytes
del len$&$&$
del len$&$&$.bat
del go$$$.bat
30. MsDosÀÇ ¹öÀüÀ» ȯ°æº¯¼ö·Î ÀúÀåÇϱâ
======================================
ADJCURS.BATÀ» º¸¸é ¾Ë°ÚÁö¸¸, ¹èÄ¡ÆÄÀϷθ¸ ¹öÀüÀ» ¾Ë¾Æ³¾ ¼öÀÖ´Ù.
¿©±â¿¡ ´Ù¸¥ ¹æ¹ýÀÌ ÀÖ´Ù.
@echo off
ver > go$$$.bat
echo @echo off> ms-dos.bat
echo set version_=%%2>> ms-dos.bat
call go$$$
echo Your MsDos version is %version_%
del go$$$.bat
del ms-dos.bat
̵̧ : 259
̵̧
¸ñ·Ï