Как проверить, существует ли файл в пакетном файле?

Я должен создать a .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, это было легко для меня, но я не знаю, как протестировать, если файл или папка существуют и если это - файл или папка.

176
задан Synetech 30 December 2018 в 03:35
поделиться

2 ответа

Вы можете использовать IF EXIST для проверки наличия файла:

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
)
270
ответ дан 23 November 2019 в 20:23
поделиться

Тип IF /? чтобы получить справку об if, в нем четко объясняется, как использовать IF EXIST.

Чтобы удалить все дерево, кроме некоторых папок, см. Ответ на этот вопрос: Пакетный сценарий Windows для удаления всего в папке, кроме одной

Наконец, копирование означает просто вызов COPY и вызов другого файла bat. вот так:

MYOTHERBATFILE.BAT sync.bat myprogram.ini
11
ответ дан 23 November 2019 в 20:23
поделиться