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