Перейти к содержанию

Условный оператор if в bat


siways

Рекомендуемые сообщения

Добрый день. У меня есть .bat который копирует файлы с одного сетевого диска на сервер архивирует все что скопировал через 7z и дальше распределяет файлы по папкам на сервере и удаляется из определенной папки после скачивания с сетевого диска (Структура: Копируются файлы с сетевого диска в переменную папку на сервере - Архивируется - распределяется по папкам на сервере - файлы удаляются с папки где происходит архивирование (переменной папки) - файлы удаляются с сетевого диска), но архив создается даже в том случае если файлы на сетевой диск не выложили, архив создается пустым. Как сделать условие при котором архивирование бы не происходило если с сетевого диска не было скачено ни одного файла (файлы с названием *KD*.txt *OP*.txt ). Примечание: Копирование KD и OP файлов происходит в разных действиях, сначала KD, потом OP, а значит нужно создавать 2 условных опрератора на каждое название файлов.  Тоесть нужна помощь в том чтоб проверить переменную папку на наличие файлов *KD*.txt и *OP*.txt, если файлов KD нет, то без архивации переход к следующему поиску файлов OP, если OP тоже нет в переменной папке, то сценарий скрипта "exit" до начала архивирования, если файлы есть то архивация в zip и распределение файлов по папкам на машине "xcopy"..  Если я не очень понятно объяснил заранее прошу прощения. Я максимально постараюсь дать подробности в комментариях если будут какие либо вопросы в уточнениях. Буду рад любой помощи, спасибо!

Изменено пользователем siways
Ссылка на комментарий
Поделиться на другие сайты

@siways, применение PowerShell возможно?

Да возможно

@siways, а минимальные усилия по поиску сами приложить не пробовали?

 

IF NOT EXIST *KD*.txt GOTO 123

 

https://ab57.ru/cmdlist/if.html

Спасибо за ссылку, попробую сделать так чтобы KD b OP вместе в одном действии проверялись если не одного не будет, то "exit"

Ссылка на комментарий
Поделиться на другие сайты

Кому интересно это выглядит вот так:

xcopy "C:\Users\user\Downloads\1\*KD*.txt" "D:\Windows 7\KO" /d
xcopy "C:\Users\user\Downloads\1\*OP*.txt" "D:\Windows 7\KO" /d
IF EXIST *KD*.txt IF EXIST *OP*.txt (


"C:\Program Files\7-Zip\7z.exe" a -tzip -ssw -mx0 -r0 "C:\Temp\Babs%DATE:~0,2%.%DATE:~3,2%.%DATE:~6,4%_%Time:~0,2%-%Time:~3,2%.zip" "D:\Windows 7\KO" 


) ELSE (
exit
)





Правда нет распределения дальше по папкам, но самого главного я добился, сделал архивацию при наличии файлов в переменной папке. Если кто знает как сделать так чтоб происходила архивация только определенных файлов *KD*.txt и *OP*.txt буду благодарен, знаю про функцию исключения, но не смог найти способ по которому архивация происходит только для определенных типов файлов.

Ссылка на комментарий
Поделиться на другие сайты

 

 


как сделать так чтоб происходила архивация только определенных файлов *KD*.txt и *OP*.txt
вы копируете только определенные файлы, и, следовательно, только их и архивируете.

Чтобы разделить архивы, сделайте две операции последовательно. Грубо говоря:

xcopy *KD*.txt ...

If exist *KD*.txt (7zip ...) else goto end

move *.zip куда_то_там

del *KD*.txt

xcopy *OP*.txt ...

If exist *OP*.txt (7zip ...)

move *.zip куда_то_там

del *KD*.txt

:end

Тем более я не уверен, что конструкция с двойным IF будет работать.

Ссылка на комментарий
Поделиться на другие сайты

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Похожий контент

    • Ig0r
      От Ig0r
      Пожалуйста, голосуйте. Можно и высказаться.
    • cringemachine
      От cringemachine
      Коллеги, добрый день.
       
      Есть bat-файл, который создает на сетевом диске директорию и в нее копирует (должен копировать) журнал Безопасность – нужны админские права. 
      Также, в качестве теста в него добавлена строка для копирования текстового файла (txt) в созданную директорию – не нужны админские права.
       
        mkdir \\192.168.0.5\temp\KasperskyEventLog\%computername%   copy %SystemRoot%\System32\Winevt\Logs\"Kaspersky Event Log.evtx" \\192.168.0.5\temp\KasperskyEventLog\%computername%\"Kaspersky Event Log.evtx"   copy C:\Users\testuser\Desktop\1.txt \\192.168.0.5\temp\KasperskyEventLog\%computername%\1.txt  
      При запуске скрипта локально с указанием админской УЗ скрипт отрабатывает корректно и оба файла (Журнал Безопасность и текстовый файл) копируются на сетевой диск.
       
      При распространении скрипта посредством KSC через задачу Удаленная установка программы копируется только текстовый файл, т.е. прав не хватает.
      Попробовал разные сценарии – С помощью Агента администрирования (с указанием админской УЗ), Средствами операционной системы с помощью Сервера администрирования (с указанием админской УЗ).
      Результат один – копируется только текстовый файл.
       
      Может быть кто-то владеет опытом распространения bat-файла для исполнения которого требуются админские прав.
    • Rgn
      От Rgn
      Добрый день.
      Подскажите, поддерживает ли kec стандартный удаление стороннего  по c помощью задач или батников?
      Пытался я удалить с помощью батника фаил  но безуспешно в чем могут быть проблемы ?
       
       @echo off
      "C:\Program Files\WinRAR\uninstall.exe"/q
×
×
  • Создать...