Вход | Регистрация


Информационные технологии ::

Метки: 

Помогите написать Bat файл

Я
   botman4
 
16.05.18 - 14:10
Есть папка "test1", в ней появляются периодически файлики. Их нужно копировать в другую папку, предварительно проверяя в "datebase.txt",
если там есть имя файла, тогда ничего не делаем,
если нету - тогда копируем этот файл в папку "test" и добавляем строку с именем этого файла в "datebase.txt"

вот что я написал,проверяется, копируется, но в файл "datebase.txt" имена файла не попадают.
for %%A in ("d:\test1\*.txt") do find /I /C datebase.txt "%%~nA" 1>nul || COPY /Y %%A "d:\test\" || echo "%%~nA" >>"datebase.txt"

Подскажите плз!
 
 
   echo77
 
1 - 16.05.18 - 14:42
(0) А если так
for %%A in ("d:\test1\*.txt") do find /I /C datebase.txt "%%~nA" 1>nul || COPY /Y %%A "d:\test\" && echo "%%~nA" >>"datebase.txt"
   echo77
 
2 - 16.05.18 - 14:46
Если я правильно помню, "||" - это переход к выполнению следующей команды, если предыдущая выполнилась "неуспешно"
"&&" - успешно, "&" - когда фиолетово на результат выполнения предыдущей команды
   botman4
 
3 - 16.05.18 - 14:58
(2) Спасибо тебе, добрый человек! Все завелось!
   Вафель
 
4 - 16.05.18 - 14:59
лучше js напиши. более понятный синтаксис.
эту строку ты же сам потом не разберешь
   botman4
 
5 - 16.05.18 - 15:10
Ну я уже разберу )
а поповоду js гляну, спасибо.
   D_E_S_131
 
6 - 16.05.18 - 15:21
ОФФ: Шо и здесь "дайбатнеги" уже? xD
   Локи-13
 
7 - 16.05.18 - 15:26
уж лучше б на питоне написал, или, не в слух будет сказано, на 1скрипте
   vcv
 
8 - 16.05.18 - 15:26
(4)(7) Вам бы только программы по любому чиху писать.
(0) А зачем проверка файла по текстовому файлу? Если для того, что бы не копировать уже однажды скопированное хватило бы одного xcopy с ключом /M
   vcv
 
9 - 16.05.18 - 15:30
+(8) А если database.txt какой-то хитрый файл, можно xcopy указать ключ /EXCLUDE, что бы исключить файлы, перечисленные в database.txt.
А пополнять database.txt примерно так:
xcopy откуда куда /L >>database.txt
   Franchiser
 
10 - 16.05.18 - 15:34
Что такое "%%~nA" ?
 
 
   Franchiser
 
11 - 16.05.18 - 15:36
У меня похожая задача: можно ли как то в батнике переменную проверять со значением в первой строке файла и если он отличается, то заменять это значение?
   vcv
 
12 - 16.05.18 - 15:37
(10) for /? в помощь
%%A переменная. ~n означает, что из полного имени файла в переменной %%A нужно взять только имя без расширения
   Franchiser
 
13 - 16.05.18 - 15:39
(12) понял, посмотрел на stackoverflow
   Franchiser
 
14 - 16.05.18 - 15:42
(12) без цикла for обратиться к строке в файле по номеру нельзя?
   vcv
 
15 - 16.05.18 - 16:05
(14) Нормальных вариантов нет. Есть извратные.
Например: findstr /n . c:\boot.ini | findstr ^3:
получаем строку номер 3.
   botman4
 
16 - 16.05.18 - 16:07
(8) файлы потом из второй папки удаляются. и файлы копируются из исходной папки в разные, для разных машин.
(9) а вот это попробую
   vcv
 
17 - 16.05.18 - 16:17
(16) Может и стоит воспользоваться штатным атрибутом Архивный?
Кто-то создаёт файл. Атрибут архивный автоматом ставится. xcopy по какому-то критерию (наверное имени) копирует на нужную машину, снимая при этом атрибут Архивный, но только те файлы, для которых установлен Архивный. Вторая xcopy, копируя на другую машину, файлы, скопированные первой не видит, потому что атрибут Архивный снят.
Или я совсем не так задачу понял?
   Franchiser
 
18 - 16.05.18 - 16:46
(15) у меня возвращает 2 строки
   vcv
 
19 - 16.05.18 - 16:59
(18) Измени второй findstr. Возможно умолчания другие. Попробуй findstr /B /C:"3:"
   Franchiser
 
20 - 16.05.18 - 17:06
(19) так работает)
   botman4
 
21 - 16.05.18 - 17:12
(17) нет. так не пойдет.
Суть такова. Есть программа, которая получает обновления. Эти обновления в виде текстовых файлов.
После получения обновлений я их копирую, а потом прога их хавает.
Затем я эти скопированные обновления отправляю на webdav сервер(батником), там эти обновления копятся до потери сознания(не удаляются).
Затем в другом конце планеты, где эта программа по каким-то причинам не может получить обновления официально подключается к моему webdav серверу и забирает нужные обновы в свою папку, обновляется и удаляет их у себя.
Таких программ может стоять много по разным уголкам.
   Сияющий в темноте
 
22 - 16.05.18 - 21:45
Напиши сценарий на VbScript и запихай его в планировщик,он и файлы сможет переименовать и в проверит надичие в целевой папке без какого либо файла



Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует