Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 5

Автор: ab48
Дата сообщения: 18.04.2008 14:51
Очень нужна помощь! Я новичок в написании bat-файлов, но кое-что все таки написала:

1 код (он же запускной) - cop.bat

call copy_f.bat
call copy_ftp.bat
call del_f.bat

2 код - copy_f.bat

@echo off
setlocal enabledelayedexpansion
set "folder=d:\ARC\"
set "copy_to=d:\ARC_FTP\"
set "cdate=%date:,=%"
for %%a in (%folder%*.rar) do (
set "file_date=%%~ta"
set "file_dm=!file_date:~0,10!"
set "file_dm=!file_dm:,=!"
if !file_dm!==!cdate! copy %%a %copy_to%
)

3 код - copy_ftp.bat

ftp -s:com.txt

4 код - com.txt

open ftp.ab48.org
login
password
cd ARH/AB
prompt off
mput d:\arc_ftp\*.rar
bye

5 код - del_f.bat

prompt off
del "d:\ARC_FTP\*.rar"

В папке ARC лежат архивы баз, архивы делаются каждый день, если не вдаваться в подробности батников, то я копирую каждый день новый архив ( с сегодняшней датой) на ftp-сервер. Все копируется, но что-то происходит при копировании и в итоге на ftp-сервер ложится какой-то поломанный архив, я так подозреваю, что это как-то связано с перекодировкой? Помогите, пожалуйста, разобраться, весь форум излазила, ничего не нашла.
Автор: igor_andreev
Дата сообщения: 18.04.2008 15:16
ab48

Цитата:
Все копируется, но что-то происходит при копировании и в итоге на ftp-сервер ложится какой-то поломанный архив, я так подозреваю, что это как-то связано с перекодировкой?

А если все действия проделать не с rar, а с zip? Тоже архивы битыми закачиваются? Если zip закачивается нормально - то это по идее ненастроенный apache, он по умолчанию рассматривает незнакомые расширения как text\plain. Надо "рыкнуть" на своего хостера или самому в файл .htacces вписать что-то наподобие "AddType application/x-rar-compressed .rar". В гугле набери ".htacces + AddType application/x-rar-compressed" (без кавычек) - найдешь ссылки с более подробным описанием проблемы.


Добавлено:
Тю блин, я думал, ты на сайт закачиваешь rar и скачать по http пытаешься В com.txt после login и password добавь команду binary, все будет нормально. Ftp.exe по умолчанию тоже все рассматривает, как text\plain
Автор: ab48
Дата сообщения: 18.04.2008 15:50

Цитата:
[/q]
[q]Тю блин, я думал, ты на сайт закачиваешь rar и скачать по http пытаешься В com.txt после login и password добавь команду binary, все будет нормально. Ftp.exe по умолчанию тоже все рассматривает, как text\plain


Спасибо огромное, все заработало .
Автор: SymA
Дата сообщения: 18.04.2008 16:02

Цитата:
Как залить по фтп файл на some.narod.ru ?


Цитата:
curl -T file.ext ftp://login:pass@ftp.narod.ru/dir/subdir/


Спасибо. НО хотелось бы без сторонних утилит. . .

Если делаю так:
БАТ

Код: ftp -s:com.txt
Автор: igor_andreev
Дата сообщения: 18.04.2008 16:05
SymA
а если open ftp.narod.ru?
Автор: bmax
Дата сообщения: 18.04.2008 16:20
wolf0425

Цитата:
Цитата: goto :eof

э... тебе надо скопировать один файл или много?



один (который, был создан последним) и скопировать его в паку и присвоить ему имя на единичку больше, чем у предыдущего. Для этого в самом начале подсчитываем кол-во файлов в этой папке.

скрипт работает (может кому пригодится)

FOR /f "tokens=*" %%i in ('dir /b /s /a-d "D:\2\*.*"') do set /a count+=1
IF EXIST D:\2\*.* set "count=0%count%" ELSE
set "count=00%count%"
set "count=%count:~-2%"
for /f "tokens=*" %%c in ('dir "D:\1\*.*" /o:-d /t:c /b /a:-d') do (
more +6 "D:\1\%%c" | findstr "<EA323" 1>nul || (
copy /y /D "D:\1\%%c" "D:\2\11%date:~0,2%%count%.dvc"
goto :eof
)
)
Автор: SymA
Дата сообщения: 18.04.2008 16:29
igor_andreev

Cпасибо!
Автор: ASTERIKS88
Дата сообщения: 18.04.2008 20:43
Огромная нужда в очистке реестра батником! Нужно удалить все ветки и ключи содержащие слово "SolidWorks" и в конце этого процесса выдать что-то типа того что реестр очищен или операция выполнена

ПОМОГИТЕ!
Автор: 01MDM
Дата сообщения: 18.04.2008 21:54
ASTERIKS88
reg delete /?
Автор: ASTERIKS88
Дата сообщения: 18.04.2008 22:01
Благодарю
Автор: Dmitriy05
Дата сообщения: 19.04.2008 14:50
Задача: скопировать папку D:\The Bat!\Mail в C:\Recover\ - то есть в итоге будем иметь
C:\Recover\Mail
Автор: Elroir
Дата сообщения: 19.04.2008 15:16
Dmitriy05

Код:
@echo off
md "C:\Recover\Mail" 2>nul
xcopy "D:\The Bat!\Mail" "C:\Recover\Mail" /s /e /q
Автор: Dmitriy05
Дата сообщения: 19.04.2008 15:40
Elroir
Спасибо! Только один вопрос: Зачем мы пишем /s и /e - ведь таким образом мы включаеим и одновременно исключаем копирование пустых подпапок?
Автор: Elroir
Дата сообщения: 19.04.2008 17:53
Dmitriy05

Цитата:
Зачем мы пишем /s и /e

На самом деле - незачем. Можно просто использовать /е - будет то же самое
Автор: Nagual
Дата сообщения: 19.04.2008 21:34
задача: вывести строку произвольной длины с паузами, используя утилиту sleep
пример
set str=qwerty asdfg zxcvb
нужно, чтобы выводилось
q
qw
qwe
и тд
кто сталкивался, жду кирпича
Автор: Elroir
Дата сообщения: 19.04.2008 22:08
Nagual

Код:
@echo off
setlocal enabledelayedexpansion
set "str=qwerty asdfg zxcvb"
set "count=1"
set "time=1"
:next
if "!str:~%count%!"=="" goto :EOF
echo !str:~0,%count%!
sleep %time%
set /a "count+=1"
goto next
Автор: yorcie
Дата сообщения: 20.04.2008 11:24
Привет всем!
Помогите, пожалуйста, с решением такой элементарной задачи - нужно скопировать каталог. Путь к нему может быть длинным и указывается как один из параметров, целевая папка не указывается, используется текущая. Так вот, при использовании COPY & XCOPY копируется только СОДЕРЖИМОЕ каталога, но не САМ ОН и не ЕГО НАЗВАНИЕ!!!
Полазил по форуму - нашёл рекомендацию использовать конструкцию такого вида:
xcopy C:\1 C:\2\ /s /e /r /h

Не помогает...
Подскажите, люди добрые!
Автор: 01MDM
Дата сообщения: 20.04.2008 11:41
yorcie
xcopy все копирует как надо, а вот путь лучше заключить в кавычки.
Автор: king_stiven
Дата сообщения: 20.04.2008 12:34
yorcie

Код: set "new_folder=1"
xcopy "C:\1" "C:\2\%new_folder%" /e /r /h /i
Автор: yorcie
Дата сообщения: 20.04.2008 14:09
Спасибо за помощь! Однако моя задача в том, чтобы обработать параметр командной строки %1, содержащий полное имя каталога, например, c:\windows\system32, а скопировать только сам каталог system32 и его содержимое! Используя предложенные Вами варианты, добился того же, что и раньше - копируется только СОДЕРЖИМОЕ каталога в текущий каталог. При этом я в вызове xcopy в качестве конечной папки ничего не указываю, хотя можно было бы указать %~p0, но это ничего не меняет. То есть мне нужно как-то извлечь имя последней папки из полного пути и создать такую же в текущем каталоге, затем перейти в неё и уже потом скопировать содержимое каталога!
Автор: Elroir
Дата сообщения: 20.04.2008 14:23
yorcie

Код:
@echo off
setlocal
set "dest_path=C:\2"
set "dest_folder=%~nx1"
md "%dest_path%\%dest_folder%" 2>nul
xcopy "%~1" "%dest_path%\%dest_folder%" /s /e /r /h /i
Автор: Dantis
Дата сообщения: 21.04.2008 06:32
Здрасти всем.

Как удалить фай на компе..где бы он не находился.?

файл 1.exe
Автор: 01MDM
Дата сообщения: 21.04.2008 07:44
Dantis

Цитата:
Как удалить фай на компе..где бы он не находился.?


Код:
@echo off
for %%i in (q w e r t y u i o p a s d f g h j k l z x c v b n m) do (
for /f "tokens=*" %%i in ('dir /b /s %%i:\1.exe 2^>nul') do del /q "%%i"
)

Автор: teaser11
Дата сообщения: 22.04.2008 03:04
Добрый день! Прошу помочь, на компутере на диске E есть две папки: папка Клипы и папка Музыка, весом более 1 гига каждая, нужен батник который самостоятельно бы удалил эти папки в определенный день...возможно ли это?
Сам я в батниках не понимаю ни черта....
Автор: ipmanyak
Дата сообщения: 22.04.2008 05:29
teaser11 В планировщике заданий создай задание на нужный день на твой батник. В батнике:
RD /s /q "E:\Клипы"
RD /s /q "E:\Музыка"
Автор: inock
Дата сообщения: 22.04.2008 10:05
Подскажите плз, реализуемо ли средствами cmd следующая задача:
требуется делать рекурсивный обход каталогов и производить действия (в данном случае удалять) файлы, у которых дата модификации И дата создания старше, чем указанное количество дней.

Пока я придумал только следующее.

Первый батник:
C:\utils\FORFILES /D -14 /C "cmd /c C:\utils\fordir.cmd @path"

Второй батник (C:\utils\fordir.cmd):

FOR /F "tokens=1" %%i in ( 'dir /T:C %1 ^| find "."' ) do @echo %%i

Ну вот получил я у файлов, у которых дата модификации больше 14 дней назад дату создания. Теперь ее как-то надо проанализировать и если она тоже больше, чем 14 дней назад - файл удалить. А вот как проанализировать - никак не придумаю. Оно вообще реально в рамках топика?
Автор: 01MDM
Дата сообщения: 22.04.2008 10:45
inock
Наверное так, проверить сейчас не могу

Код:
forfiles /s /d -14 /c "cmd /c del @file"
Автор: inock
Дата сообщения: 22.04.2008 11:33

Цитата:
Наверное так, проверить сейчас не могу


Так здесь проверка по второму критерию (дата создания файла) не проводится.

Автор: RaP1D
Дата сообщения: 22.04.2008 12:53
teaser11
Моно ещё так:
date /t | find "01.06" && goto s
exit

:s
RD /s /q "E:\Клипы"
RD /s /q "E:\Музыка"


01.06 - день и месяц

Добавлено:
У меня вопрос, можно ли посредством bat файлов качать файлы из инета, например с адреса:

Цитата:
"http://site.ru/arxiv.rar"
Автор: igor_andreev
Дата сообщения: 22.04.2008 13:23
inock

Цитата:
Оно вообще реально в рамках топика?

Реально. Но муторно. Vbs легче прикрутить.

Код:
@echo off
echo WScript.Quit (DateDiff("d", CreateObject("Scripting.FileSystemObject").GetFile(WScript.Arguments.Item(0)).DateCreated, Now))>timediff.vbs

for /r %%a in (*.*) do call :compare_crdate "%%~fa"
del timediff.vbs
goto :eof

:compare_crdate
cscript timediff.vbs %1
if %errorlevel% gtr 14 echo %1 created more than 14 days ago

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Сброс пароля администратора


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.