Как проверить, существует ли файл в файле DOS (Windows Command Prompt).BAT?

Мне нужно создать файл .BAT, который делает это:

  • Если C:\myprogram\sync\data.handler существует, выйдите;
  • Если C:\myprogram\html\data.sql не существует, выйдите;
  • В C:\myprogram\sync\ удалите все файлы и папки, кроме (test, test3 и test2)
  • Скопировать C:\myprogram\html\data.sql в C:\myprogram\sync\
  • Вызов другого командного файла с опцией sync.bat myprogram.ini.

Если это было в среде Bash, это было легко для меня, но я не знаю, как проверить, существует ли файл или папка, и если это файл или папка.

Ответ 1

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

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

Если вы хотите найти диск или каталог, см. http://support.microsoft.com/kb/65994 для примеров

Ответ 2

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

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

Наконец, копирование просто означает вызов COPY и вызов другого файла bat можно сделать следующим образом:

MYOTHERBATFILE.BAT sync.bat myprogram.ini

Ответ 3

Вот хороший пример того, как выполнить команду, если файл существует или не существует:

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

Мы возьмем эти три файла и поместим их во временное место. После удаления папки она восстановит эти три файла.

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, который делает это: