Ru-Board.club
← Вернуться в раздел «Программы»

» Командная строка, батники, сценарии (bat, cmd)

Автор: SergFM
Дата сообщения: 06.10.2009 18:29
всем привет...
при заливке файла на фтп через батник который ссылается на команды фтпшные происходит фигня. файл недозаливается, хотя ошибку не выдает..если файл копировать через тотал по Ctrl+F тогда всё нормально...
Автор: bomzzz
Дата сообщения: 06.10.2009 18:47
каманды в студию.

впрочем в тотале к примеру может быть дозаливка срабатывающая автоматически при разрывах связи,а в простейшем консольном фтп клиенте винды ее может и не быть в принципе. я тоталом не пользуюсь уже не помню какие тама настройки. у мну cuteftp (умеет заливать в 4 потока) и flashfxp(умеет перемещать файлы с фтп сервера на сервер, впроечм cuteftp это тоже умеет, зато ссылки копировать удобнее), и ftptransport в асновном. в даунлоад мастере фтп менеджер удобный для копирования ссылок групп файлов.

попробуй по оканчании заливки получить размер файла и если он меньше чем надо попробовать еще раз залить интересно чиво он напишет докачать или перезаписать.
Автор: Dr29BArt
Дата сообщения: 07.10.2009 02:10
Объясните мне как можно использовать вложенные команды if их синтаксис.
Так же не пойму где тут ошибка (почему не выводит %b%:

Код: @echo off
set /p a="Enter 0 or 1 "
if "%a%" == "0" @echo You entered %a%
if "%a%" == "1" (
set /p b="Enter 2 or 3 "
@echo You entered %b%
)
pause
Автор: bomzzz
Дата сообщения: 07.10.2009 06:41
кавычки работают, иначе ты никогда не увидел бы результата работы паузы - в чем дело не знаю,
вот так не работает
(set /p a="Enter 0 or 1 "
@echo You entered %a%)
а вот так работает
set /p a="Enter 0 or 1 "
@echo You entered %a%
переменной ничего не присваевается.
(set /p a="Enter 0 or 1 ")
(@echo You entered %a%)
вот так работает - ну значит в одном блоке так нельзя. обойдись без скобок. здесь наверняка можно else обойтись без переходов


Цитата:

@echo off
set b=90
set /p a="Enter 0 or 1 "
if "%a%" == "0" @echo You entered %a%
if "%a%" == "1" (
set /p b="Enter 2 or 3 "
echo You entered %b%)
echo You entered %b%
pause

вот из такой конструкции однозначный вывод делается

так вот сделай
@echo off
set /p a="Enter 0 or 1 "
if "%a%" == "0" @echo You entered %a%
if "%a%" == "1" set /p b="Enter 2 or 3 "
if "%a%" == "1" echo You entered %b%
pause
Автор: SergFM
Дата сообщения: 07.10.2009 09:20
bomzzz
Цитата:
каманды в студию.
не проблема...вот они...

ftp -i -s:D:\folder\ftp.txt ftp.my.com

содержание файла ftp.txt

логин
пароль
cd prices
delete price.xls
send d:\prices\price.xls
bye
close
Автор: bomzzz
Дата сообщения: 07.10.2009 09:23
xls это какие то файлы типа html или txt, не знаю как точнее выразиться.
они должны весить немного и передавать как asc?????


Добавлено:
ECHO OFF
COLOR 9F
CLS
echo OPEN ftp.narod.ru>MYFTP.txt
echo MyLogin>>MYFTP.txt
echo MyPassword>>MYFTP.txt
echo BELL>>MYFTP.txt
echo STATUS>>MYFTP.txt
echo DIR>>MYFTP.txt
echo binary>>MYFTP.txt
echo send current.exe>>MYFTP.txt
echo quit>>MYFTP.txt
ftp -s:myftp.txt
pause

у меня фурыкаит намальна,, правда файл для опытов взял всего 3.5 кб
на народ нельзя больше 5 мб заливать - попробовал архивчик 5 мб, залил, скачал проверил - работаит

ну и па твоему работаит намальна
ECHO OFF
COLOR 9F
CLS
ftp -i -s:myftp.txt ftp.narod.ru
pause

MyLogin
MyPassword
BELL
STATUS
DIR
binary
send current.exe
quit

если тама такой файл лежит то сразу пишет что гатова. надо попробвоать чтоб размер не совпадал

разрезал файл и попробовал дозалить, файл полностью перезалился.
Автор: SergFM
Дата сообщения: 07.10.2009 10:03
bomzzz
работает...спс..
скорее всего виноват был ascii режим...после переключения в binary всё работает...
Автор: Mosl
Дата сообщения: 07.10.2009 15:31
Здравствуйте.
Помогите в написании сценария. Надо написать сценарий при выполнении, которого будет выполняться ping сетевого ресурса, если ресурс не отвечает, будет выполняться действие по переподключению VPN соединения (разрыв и соединение).

ЗЫ: Я так понимаю надо написать что то вро де этого:
ping 10.0.0.2

При получении ответа "потеряно 100%" выполнить

rasphone.exe -d VPN /disconnect
rasphone.exe -d VPN

а при получении ответа "получено 100%" нечего не делать

В конце всех операций завершить выполнение бат файла.
Автор: 01MDM
Дата сообщения: 07.10.2009 15:55
Mosl

Код:
@echo off
1>nul ping -n 1 ya.ru && goto:eof

rasdial "vpn_name" /disconnect
rasdial "vpn_name" vpn_login vpn_password
Автор: Mosl
Дата сообщения: 07.10.2009 16:16
01MDM
Спасибо вечером попробую!
ps я же могу использовать команду rasphone вместо rasdial?
Автор: Dr29BArt
Дата сообщения: 07.10.2009 21:59

Код: echo off
title laba2
set a=2
set b=2
for %%f in ("D:\*.swp") do (
set /p a="What do with %%~nf? (0 - delete; 1 - rename): "
if "%a%" == "0" (del "%%f" /f)
if "%a%" == "1" (
set /p b="Enter new name of %%~nf: " ren "%%f" %p%)
ping -n 1 -w 500 192.168.255.255 >nul
cls
)
pause
Автор: bomzzz
Дата сообщения: 07.10.2009 22:07
вы че седня сгаварились что ли? в пределах одной скобки почему то значение не присваевается, а только при выходе из скобок.воот так и исправляй. ну тута непросто будет так как с теле цикла - но не значит что нельзя исправить

Добавлено:
http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=29819&start=1040
MsgBox.exe

при помощи меседж бокса сделай - вообще ништяк получица удобна
Автор: mozers
Дата сообщения: 07.10.2009 23:38
Dr29BArt
Код: @echo off
setlocal enabledelayedexpansion
for %%F in ("D:\*.swp") do (
set /p a="What do with %%~nxF? (0 - delete; 1 - rename): "
if "!a!" == "0" del "%%~nxF" /f
if "!a!" == "1" (
set /p b="Enter new name of %%~nxF: "
ren "%%~nxF" !b!
)
)
Автор: Dr29BArt
Дата сообщения: 08.10.2009 00:08
ozers, ну спасибо, я уж думал не найду овтет. всё ништяк
Автор: bomzzz
Дата сообщения: 08.10.2009 00:08

Цитата:

На мой взгляд, с этим уже вполне можно жить. Но, как всегда, жизнь не так проста, как кажется. Есть одна проблема. Переменные, использующиеся в блоках then и else, раскрываются перед началом выполнения этих блоков, а не в процессе выполнения. В приведенном примере это не вызывает никаких проблем, однако в следующем вызовет:

if "%BUILDMODE%" == "debug" (
echo INFO: Устанавливаем debug-режим окружения
set OPTFLAGS=/Od
set CCFLAGS=%OPTFLAGS% /MDd /Z7
) else (
echo INFO: Устанавливаем release-режим окружения
set OPTFLAGS=/O2
set CCFLAGS=%OPTFLAGS% /MD
)

Загвоздка в том, что в обоих блоках подстановка переменной OPTFLAGS произойдет до того, как она будет изменена в процессе выполнения этого блока. Соответственно, в CCFLAGS будет подставлено то значение, которое OPTFLAGS имела на момент начала выполнения данного if-блока.
Решается эта проблема путем использования отложенного раскрытия переменных. Переменные, заключенные в !…! вместо %…%, будут раскрыты в их значения только в момент непосредственного использования. Данный режим по умолчанию отключен. Включить его можно либо использованием ключа /V:ON при вызове cmd.exe, либо использованием команды

setlocal enabledelayedexpansion

в тексте самого bat-файла. Второй способ мне представляется более удобным – не очень здорово требовать от кого-то запуска твоего сценария с определенным параметром.
С учетом сказанного предыдущий «неправильный» пример может быть исправлен так:

setlocal enabledelayedexpansion

rem ...

if "%BUILDMODE%" == "debug" (
echo INFO: Setting up debug mode environment
set OPTFLAGS=/Od
set CCFLAGS=!OPTFLAGS! /MDd /Z7
) else (
echo INFO: Setting up release mode environment
set OPTFLAGS=/O2
set CCFLAGS=!OPTFLAGS! /MD
)

Вот теперь это почти полноценный if-then-else блок. Почти, потому что если в одной из команд echo у вас встретится закрывающая круглая скобка, то вам необходимо заэкранировать ее символом ^, иначе синтаксический анализатор путается…
Но в любом случае, это гораздо лучше безумного количества меток и переходов.

Dr29BArt

Цитата:

@echo off
setlocal enabledelayedexpansion
set /p a="Enter 0 or 1 "
if "%a%" == "0" @echo You entered !a!
if "%a%" == "1" (
set /p b="Enter 2 or 3 "
echo You entered !b!)

Автор: TruLander100
Дата сообщения: 08.10.2009 16:38
Добрый день.
помогите с батником: необходимо в каждий .txt файл из заданной папки вставить слово "<LI>" в 7 строку. Спасибо
Автор: VV2006
Дата сообщения: 08.10.2009 20:26
А в WindowsXP что, нельзя, используя только встроенные средства оси, одновременно
запустить на выполнение из командного файла несколько приложений (команд)?

Написал cmd-файлы для запуска с флэшки процедур создания зеркал обновлений для DrWeb и Avira Antivir Premium. Справедливо решил, что тыкать два разА - громадные потери времени. Объеденил в один cmd - запускаются по очереди - потери времени ещё больше!

Задачу решил "нечисто" - через (поту)сторонний LacunaLauncher, с которым тоже есть непонятка:

"%~dp0SOFT\LacunaLauncher\ll.exe" "%~dp0SOFT\LacunaLauncher\MakeMirrorAV.txt" 0 0
- почему-то не работает: ll.exe "своих" не находит.

set ThisDisk=%~dp0
"%ThisDisk%SOFT\LacunaLauncher\ll.exe" "%ThisDisk%SOFT\LacunaLauncher\MakeMirrorAV.txt" 0 0
- а так - работает.

Кстати, насчёт вставки звуковых сигналов: сначала решил через playsound.exe, что тоже "нечисто", но затем нашёл такое простенькое решение beep-задачи: @echo (Alt-7).
Автор: 01MDM
Дата сообщения: 08.10.2009 20:37
VV2006
start /?
Автор: VV2006
Дата сообщения: 09.10.2009 10:25
01MDM
Спасибо! Действительно, кто бы мог догадаться, что запуск в отдельном окне и есть одновременно-параллельно! Теперь всё замечательно - один cmd-файл!
Автор: TruLander100
Дата сообщения: 10.10.2009 17:13
ЫЫы! народ как вставить в определенную строку файла слово?
Автор: 01MDM
Дата сообщения: 10.10.2009 19:19
TruLander100

Цитата:
как вставить в определенную строку файла слово?

С помощью sed (вставит "слово" в начало 10 строки в 1.txt):

Код:
sed "10 s/.*/слово&/" 1.txt 1>~1.txt
move /y ~1.txt 1.txt
Автор: TruLander100
Дата сообщения: 11.10.2009 13:04
sed - этого в cmd нет вроде? не работает на bat пример. где взять этот sed чет я не пойму, погуглил немного ниче не понел(( это в unix'ах используется? как его на windows использовать?
Автор: 01MDM
Дата сообщения: 11.10.2009 15:10
TruLander100
Гуглить надо gnuwin32, http://gnuwin32.sourceforge.net/packages/sed.htm
Автор: Mosl
Дата сообщения: 11.10.2009 22:52
Здравствуйте.
Я уже обращался за помощью:

Цитата:
Помогите в написании сценария. Надо написать сценарий при выполнении, которого будет выполняться ping сетевого ресурса, если ресурс не отвечает, будет выполняться действие по переподключению VPN соединения (разрыв и соединение).


Тогда мне написали

Код: @echo off
1>nul ping -n 1 ya.ru && goto:eof

rasdial "vpn_name" /disconnect
rasdial "vpn_name" vpn_login vpn_password
Автор: 01MDM
Дата сообщения: 11.10.2009 23:11
Mosl

Цитата:
Можно его подправить так что бы доступность ресурса проверялась не пингом а именно доступность index.html?

Наверное если только его выкачать. С помощью wget:

Код:
@echo off
cmd /c wget ya.ru

if not exist index.html (
rasdial "vpn_name" /disconnect
rasdial "vpn_name" vpn_login vpn_password
)
2>nul del index.html
Автор: Mosl
Дата сообщения: 11.10.2009 23:21
01MDM
Все спасибо разобрался!
Автор: 01MDM
Дата сообщения: 11.10.2009 23:31
Mosl
Конечно, это third-party утилита. Надо найти и скачать. Например с http://gnuwin32.sourceforge.net/packages/wget.htm

Штатными средствами это наверное возможно сделать в висте-семерке с помощью bitsadmin.exe (в 7 (ultimate и enterpise) точно есть), но не уверен и проверить сейчас не могу. В XP нельзя.

А чем не устраивает ping?
Автор: Mosl
Дата сообщения: 12.10.2009 00:15
01MDM
да я уже нашел и скачал wgetwin-1.5.3.1. Скинул в sistem32. все заработало. У меня win7 ultimate - проверил bitsadmin.exe - есть такая команда, но там к ней столько ключей!!! Без бутылки не разберешься )))) (разве что вы подскажите) А с wget все понятно, вроде работает, но надо испытать в палевых условиях.
А ping не устроил тем что у моего провайдера (beeline UA) опять глюки - vpn не рвется, сайты все пингуются, внутрение ресурсы работают, НО не один внешний сайт или закачка не работает.
Автор: 01MDM
Дата сообщения: 12.10.2009 07:33
Mosl
Пример:

Код:
bitsadmin /transfer "test" /download /priority normal http://ya.ru "%cd%\index.html"
Автор: Dr29BArt
Дата сообщения: 12.10.2009 09:34
Подскажите как удалить несуществующие пути из переменной path.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: SAS.Планета (часть 2)


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