programing

배치 파일에 파일이 있는지 확인하는 방법

megabox 2023. 4. 14. 21:36
반응형

배치 파일에 파일이 있는지 확인하는 방법

를 작성해야 합니다..BAT다음과 같은 작업을 수행하는 파일:

  1. 한다면C:\myprogram\sync\data.handler존재, 종료;
  2. 한다면C:\myprogram\html\data.sql존재하지 않습니다.종료합니다.
  3. C:\myprogram\sync\(을 제외한 모든 파일 및 폴더를 삭제합니다.test,test3그리고.test2)
  4. 알았다.C:\myprogram\html\data.sql로.C:\myprogram\sync\
  5. 옵션을 사용하여 다른 배치 파일 호출sync.bat myprogram.ini.

Bash 환경이라면 쉬웠는데, 파일이나 폴더가 있는지, 파일인지 폴더인지 테스트하는 방법을 모르겠습니다.

IF EXISTRESS를 사용하여 파일을 확인할 수 있습니다.

IF EXIST "filename" (
  REM Do one thing
) ELSE (
  REM Do another thing
)

"else"가 필요하지 않은 경우 다음과 같은 작업을 수행할 수 있습니다.

set __myVariable=
IF EXIST "C:\folder with space\myfile.txt" set __myVariable=C:\folder with space\myfile.txt
IF EXIST "C:\some other folder with space\myfile.txt" set __myVariable=C:\some other folder with space\myfile.txt
set __myVariable=

다음은 파일 또는 폴더를 검색하는 작업 예입니다.

REM setup

echo "some text" > filename
mkdir "foldername"

REM finds file    

IF EXIST "filename" (
  ECHO file filename exists
) ELSE (
  ECHO file filename does not exist
)

REM does not find file

IF EXIST "filename2.txt" (
  ECHO file filename2.txt exists
) ELSE (
  ECHO file filename2.txt does not exist
)

REM folders must have a trailing backslash    

REM finds folder

IF EXIST "foldername\" (
  ECHO folder foldername exists
) ELSE (
  ECHO folder foldername does not exist
)

REM does not find folder

IF EXIST "filename\" (
  ECHO folder filename exists
) ELSE (
  ECHO folder filename does not exist
)

다음은 파일이 존재하거나 존재하지 않는 경우의 명령어 실행 방법의 좋은 예입니다.

if exist C:\myprogram\sync\data.handler echo Now Exiting && Exit
if not exist C:\myprogram\html\data.sql Exit

우리는 그 3개의 파일을 가져다가 임시로 보관한다.폴더를 삭제하면 이 세 개의 파일이 복원됩니다.

xcopy "test" "C:\temp"
xcopy "test2" "C:\temp"
del C:\myprogram\sync\
xcopy "C:\temp" "test"
xcopy "C:\temp" "test2"
del "c:\temp"

XCOPY 명령어를 사용합니다.

xcopy "C:\myprogram\html\data.sql"  /c /d /h /e /i /y  "C:\myprogram\sync\"

제가 설명드리겠습니다./c /d /h /e /i /y다음을 의미합니다.

  /C           Continues copying even if errors occur.
  /D:m-d-y     Copies files changed on or after the specified date.
               If no date is given, copies only those files whose
               source time is newer than the destination time.
  /H           Copies hidden and system files also.
  /E           Copies directories and subdirectories, including empty ones.
               Same as /S /E. May be used to modify /T.
  /T           Creates directory structure, but does not copy files. Does not
               include empty directories or subdirectories. /T /E includes
  /I           If destination does not exist and copying more than one file,
               assumes that destination must be a directory.
  /Y           Suppresses prompting to confirm you want to overwrite an
               existing destination file.

`To see all the commands type`xcopy /? in cmd

sync.bat myprogram.ini 옵션을 사용하여 다른 배치파일을 호출합니다.

무슨 뜻인지 모르겠지만 이 두 파일을 모두 열고 싶다면 파일의 경로를 다음과 같이 입력합니다.

Path/sync.bat
Path/myprogram.ini

Bash 환경이라면 쉬웠는데, 파일이나 폴더가 있는지, 파일인지 폴더인지 테스트하는 방법을 모르겠습니다.

배치 파일을 사용하고 있습니다.앞에서 설명한 바와 같이 이 기능을 사용하려면 .bat 파일을 작성해야 합니다.

를 작성해야 합니다.다음 작업을 수행하는 BAT 파일:

IF /? 라고 입력하고, if 에 관한 도움말을 참조해 주세요.IF EXISTIVE 사용 방법에 대해 명확하게 설명합니다.

일부 폴더를 제외한 전체 트리를 삭제하려면 다음 질문에 대한 답변을 참조하십시오.1개를 제외한 폴더의 모든 항목을 삭제하는 Windows 배치 스크립트

마지막으로 복사란 다음과 같이 COPY를 호출하고 다른 bat 파일을 호출하는 것을 의미합니다.

MYOTHERBATFILE.BAT sync.bat myprogram.ini

언급URL : https://stackoverflow.com/questions/3022176/how-to-verify-if-a-file-exists-in-a-batch-file

반응형