Я должен создать a .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, это было легко для меня, но я не знаю, как протестировать, если файл или папка существуют и если это - файл или папка.
Вы можете использовать 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
)
Тип IF /? чтобы получить справку об if, в нем четко объясняется, как использовать IF EXIST.
Чтобы удалить все дерево, кроме некоторых папок, см. Ответ на этот вопрос: Пакетный сценарий Windows для удаления всего в папке, кроме одной
Наконец, копирование означает просто вызов COPY и вызов другого файла bat. вот так:
MYOTHERBATFILE.BAT sync.bat myprogram.ini