batch-file
배치 파일의 파일 처리
수색…
소개
이 항목에서는 일괄 적으로 파일을 작성, 편집, 복사, 이동 및 삭제하는 방법을 학습합니다.
일괄 처리로 파일 만들기
텍스트 파일을 일괄 적으로 만들려는 이유는 여러 가지가있을 수 있습니다. 그러나 이유가 무엇이든간에, 이것이 당신이하는 방법입니다.
기존 텍스트 파일을 덮어 쓰려면 >
사용하십시오. 예:
@echo off
echo info to save > text.txt
그러나 기존 텍스트 파일에 텍스트를 추가하려면 >>
사용하십시오. 예:
@echo off
echo info to save >> text.txt
여러 줄의 텍스트를 파일에 저장해야하는 경우 use ()>text.txt
예 :
@echo off
(echo username
echo password)>text.txt
파일을 일괄 적으로 복사하는 방법
한 위치에서 다른 위치로 파일을 복사 할 수 있습니다. 이 예에서 우리는 당신을 가르 칠 것입니다.
xcopy
명령을 사용할 수 있습니다. 구문은 xcopy c:\From C:\To
예:
@echo off
xcopy C:\Folder\text.txt C:\User\Username\Desktop
또한 사용할 수있는 스위치가 있습니다. 그들을 보려면 Start Menu -> Accessories -> Command Prompt
명령 프롬프트를 열고 xcopy /?
를 입력하십시오 xcopy /?
파일 이동
move 명령을 사용하여 파일을 이동할 수 있습니다.
@echo off
cd C:\Foo\Bat\Baz
move /Y Meow.bat "Meow Folder" >nul
Meow.bat
는 이동할 파일을 나타냅니다. "Meow Folder"는 Meow.bat
를 Meow Folder
이동 Meow.bat
. /Y
는 확인을 요구하지 않는다고 말합니다. 이를 /-Y
배치 파일이 확인을 위해 프롬프트됩니다. >nul
명령 출력을 숨 깁니다. >nul
이 없다면 다음과 같이 출력됩니다 :
1 File Moved
파일 삭제
DEL
(별명 ERASE
) 명령을 사용하여 파일을 제거 할 수 있습니다.
@echo off
del foo.ext
이 명령은 foo.ext
를 현재 디렉토리에서 삭제합니다. 다음과 같이 경로와 파일을 지정할 수도 있습니다.
del C:\Foo\Bar\Baz.ext
그러나 경로를 따옴표 ( "
)로 묶는 것이 항상 이상적입니다. 이유는 여기 에서 확인 하십시오 .
DEL
사용할 수있는 플래그가 몇 가지 있습니다.
깃발 | 기능 |
---|---|
/P | 파일을 삭제하기 전에 사용자에게 메시지를 표시합니다. |
/F | 읽기 전용 파일을 강제로 제거하십시오. |
/S | 하위 디렉토리에서 파일 제거 |
/Q | 사용자 프롬프트를 방지합니다. |
/A | 필터 : 특정 속성 파일 만 제거합니다. |
- 문자를 사용한다는 것은 해당 유형으로 분류 되지 않았 음을 의미합니다. |
xcopy를 사용하지 않고 파일 복사
이 예 에서 사용자 BoeNoe는 xcopy
명령을 사용하여 파일을 복사하는 방법을 보여 줬습니다. copy
라는 추가 명령도 있습니다.
다음은 간단한 예입니다.
copy foo.ext bar.ext
이렇게하면 foo.ext
가 bar.ext
복사되고 bar.ext
가없는 경우 bar.ext
가 작성됩니다. 파일에 대한 경로도 지정할 수 있지만 항상 경로를 따옴표 ( "
)로 묶는 것이 이상적입니다. 이유는 여기 에서 확인 하십시오 .
copy
수있는 플래그도 많이 있습니다 ( copy /?
또는 명령 프롬프트에서 help copy
하여 더 많은 것을 볼 수 있습니다.
파일의 N 번째 줄 편집
배치 파일에는 replace
및 append
( >
및 >>
)를 제외하고 파일의 n
번째 줄을 바꾸는 내장 메서드가 없습니다. for
루프를 사용하면 이러한 종류의 함수를 에뮬레이트 할 수 있습니다.
@echo off
set file=new2.txt
call :replaceLine "%file%" 3 "stringResult"
type "%file%"
pause
exit /b
:replaceLine <fileName> <changeLine> <stringResult>
setlocal enableDelayedExpansion
set /a lineCount=%~2-1
for /f %%G in (%~1) do (
if !lineCount! equ 0 pause & goto :changeLine
echo %%G>>temp.txt
set /a lineCount-=1
)
:changeLine
echo %~3>>temp.txt
for /f "skip=%~2" %%G in (%~1) do (
echo %%G>>temp.txt
)
type temp.txt>%~1
del /f /q temp.txt
endlocal
exit /b
주 스크립트는
replaceLine
함수를 호출하며, 파일 이름 / 변경할 행 /과 바꿀 문자열을 호출합니다.함수는 입력을받습니다.
- 모든 라인을
echo
하고 대체 라인 이전에 임시 파일로echo
합니다. - 그것은
echo
파일에 ES 교체 라인 - 파일의 나머지 부분으로 출력을 계속합니다.
- 임시 파일을 원본 파일에 복사합니다.
- 임시 파일을 제거합니다.
- 모든 라인을
메인 스크립트는 컨트롤을 다시 얻고 결과를
type
합니다.