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

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

Автор: Koyotpl
Дата сообщения: 15.04.2009 15:37
Чуствовал пятой точкой что в арджом каши не свариш
спасибо!
Автор: artrad77
Дата сообщения: 15.04.2009 16:04
Предистория. Написал скрипт (script.cmd), для того чтоб в нем не ковырялись (скорее всего его скомпилирую в будующем) вынес все данные которые задаются пользователем в отдельный файл (param.ini). Т.е. в этом файле находятся инструкции через rem и переменные которые надо забить set value=5. Соответственно все будет запускаться c:\script.cmd param.ini
Вопрос - что нужно прописать в самом script.cmd чтоб он прочел и принял к исполнению команды указанные param.ini
Автор: Mr_Hat
Дата сообщения: 15.04.2009 16:24
artrad77
мдаа... ни чего не понял, но понравилось
Автор: at200859
Дата сообщения: 15.04.2009 16:26
artrad77

Код:
copy param.ini @@@@.bat
call @@@@.bat
del @@@@.bat
Автор: greenfox
Дата сообщения: 15.04.2009 16:29
Maza_Faka

Цитата:
@Echo Off

Set MyFolder=E:\Temp

CD /D %MyFolder%
RD /S /Q %MyFolder%
это в стиле что текущий каталог не будет удалён по причине "занятости"? В принципе сойдёт
Автор: lanselotideo1111
Дата сообщения: 15.04.2009 17:00
Подскажите, пожалуйста как можно скопировать в другой файл последние 10 строчек из текстового файла, в котором 1500 строк?
Автор: artrad77
Дата сообщения: 15.04.2009 17:07

to
Цитата:
at200859

Спасибо
А ларчик просто открывался
Автор: sas1111
Дата сообщения: 15.04.2009 17:23
Помогите с вот таким ВзаимоОбменоМ по FTP . (пользуем ftp.exe)

-_- КОМП1 загружает
Если есть файлы C:\Otpravka\F1.dat , F2.dat , заRARив
их отправляем в FTP в \Comp1\Zagruzka\F1z.rar, F2z.rar,

Cкачиваем c FTP с папки (если есть файлы) Comp2\Otvet\F1otv.rar, F2otv.rar ,
разRARим их в C:\Prinato\F1otv.dat ,F2otv.dat , и
Сравниваем их с образцами имеющимися (текст) C:\Obrazec\obraz1.dat , obraz2.dat ,
Если сравнение верно ,то заRARив C:\OK\fileOK.dat
отправляем на FTP в Comp1\Ok\fileOK.rar
Ведем лог происходящего по ходу происходящего
Сохраняем лог в на компе     C:\LOG\YYMMDDhhmm_comp1.log
И отправляем на FTP в \Comp1\LOG\YYMMDDhhmm_comp1.log


    -_-КОМП2 (каждый час запускаем)
-(Если НЕТ файла на FTP Comp1\Ok\FileOK.rar ,то
-Скачиваем с FTP \Comp1\Zagruzka\F1z.rar , F2z.drar ,
разархивировов в папку      C:\ALL\F1z.dat , F2z.dat ,
преобразовав,(скажем просто скопировав) в C:\ALL\F1otv.dat ,F2otv.dat , и
отправляет заRARив на FTP в Comp2\Otvet\F1otv.rar, F2otv.rar ,
Подтираем tmp и Закрываемся.

-Если ЕСТЬ файла на FTP Comp1\Ok\File_OK.rar ,тогда
скачиваем разRARиваем его в C:\ALL\fileOK.dat
Если скачено без ошибок-то
- Удаляем с FTP файлы Comp2\Otvet\F1otv.rar, F2otv.rar ,
- Удаляем с FTP файлы Comp1\Ok\File_OK.rar

Ведем лог происходящего по ходу действий в C:\ALL\tmp.log
И отправляем tmp.log на FTP в \Comp1\YYMMDDhhmm_comp1.log
Подтираем tmp.log и другие tmp
Закрываемся. Может сильно подробно расписал извиняйте..

Кто Силён в таком обмене.!! Подсобите.!!.
Автор: ZeroCrash
Дата сообщения: 15.04.2009 20:51
Здравствуйте! У меня есть проблема, которую я не могу решить(
Нужно создать батник чтобы он выполнял программу (которая работает под командной строкой) с определёнными параметрами. Сейчас я лучше покажу пример, т. к. будет понятнее:

-допустим программа, которую нужно запустить, называется prog.exe
-запустить её нужно вот так: prog.exe c: xyxy-xyxy
x - это число от 1 до 5
y - это одна из букв: asdce
Буквы и цифры могут повторяться, но нужно чтобы при каждом запуски он генерировал значение xyxy-xyxy, либо брал это значение допустим из текстового файла и после выполнения программы удалял значение, которое он взял, из текстового файла.
Если что непонятно, спрашивайте.
Очень рассчитываю на вашу помощь!
Автор: 01MDM
Дата сообщения: 15.04.2009 22:19
ZeroCrash

Где-то так, я только не понял сама программа консольная?


Код:
@echo off
setlocal enabledelayedexpansion

for %%i in (1,2,3,4) do (
for %%j in (a,s,d,c,e) do set y_%%i_!random!=%%j
for %%j in (1,2,3,4,5) do set x_%%i_!random!=%%j
)

for %%i in (1,2,3,4) do (
for /f "tokens=4 delims=_=" %%j in ('set x_%%i') do set x-%%i=%%j
for /f "tokens=4 delims=_=" %%j in ('set y_%%i') do set y-%%i=%%j
)

:: Если программа консольная
start /b prog.exe %x-1%%y-1%%x-2%%y-2%-%x-3%%y-3%%x-4%%y-4%

:: Если не консольная
start "" prog.exe %x-1%%y-1%%x-2%%y-2%-%x-3%%y-3%%x-4%%y-4%
Автор: NovaC
Дата сообщения: 16.04.2009 03:46
Mr_Hat

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

да, нужно обратить внимание на 'конкретную строку'.
а как изменить 'цветовую гамму окна и текста' ???
Автор: king_stiven
Дата сообщения: 16.04.2009 06:26
NovaC

Цитата:
а как изменить 'цветовую гамму окна и текста' ???

COLOR /?
Автор: Maza_Faka
Дата сообщения: 16.04.2009 07:28
lanselotideo1111

Цитата:
скопировать в другой файл последние 10 строчек из текстового файла


Код:
sed -e :a -e "$q;N;11,$D;ba" < input.txt > result.txt
Автор: lanselotideo1111
Дата сообщения: 16.04.2009 08:20
Респект Maza_Faka. А без доп. утилит такое возможно?
Автор: 01MDM
Дата сообщения: 16.04.2009 08:34
lanselotideo1111

Цитата:
А без доп. утилит такое возможно?


Возможно, но возможны и ошибки. Стандартными средствами, включая пустые строки:

Код:
@echo off
setlocal

for /f "tokens=*" %%i in (file.txt) do set "last=%%i"
for /f "tokens=1 delims=:" %%i in ('findstr /n /c:"%last%" file.txt') do set "lastNum=%%i"
set /a skip=lastNum-10
more +%skip% file.txt 1>new.txt
Автор: alexagf
Дата сообщения: 16.04.2009 08:36
Ребята, подскажите как сделать.
Необходима команда запуска фала в зависимости от ОС.
Если х32 - старт Файл-1, если х64 - старт Файл-2
Автор: greenfox
Дата сообщения: 16.04.2009 09:34
alexagf
стандартный майкрософтовский вариант
Цитата:
@echo off
if /i "%PROCESSOR_ARCHITECTURE%" == "X86" "%~d0%~p0\x86\setup.exe"
if /i not "%PROCESSOR_ARCHITECTURE%" == "X86" "%~d0%~p0\x64\setup.exe"
Автор: vu1tur
Дата сообщения: 16.04.2009 09:39
alexagf

Код:
if _%PROCESSOR_ARCHITEW6432% == _AMD64 (
echo "x64"
) else (
echo "x86"
)
Автор: alexagf
Дата сообщения: 16.04.2009 10:34
greenfox
А если нужны еще другие команды, типа копирования/удаления файлов,
вывода сообщений, также в зависимости от ОС?

Добавлено:
vu1tur

Цитата:
if _%PROCESSOR_ARCHITEW6432% == _AMD64 (
echo "x64"
) else (
echo "x86"
)

Тоже, однако, не то.
Нужен выбор именно операционки XP/Vista/7 x86 vs XP/Vista/7 x64
Автор: wolf0425
Дата сообщения: 16.04.2009 10:46
lanselotideo1111,
чего-то тебе 01MDM лишнего накрутил

Код: for /f %%a in ('type input.txt ^| find /c /v "" ') do set /a str_cnt=%%a
if %str_cnt% gtr 10 ( set /a start_cnt = %str_cnt% - 10 ) else (set start_cnt=0)
more +%start_cnt% input.txt > result.txt
Автор: vu1tur
Дата сообщения: 16.04.2009 10:59
alexagf

Цитата:
Тоже, однако, не то.
Нужен выбор именно операционки XP/Vista/7 x86 vs XP/Vista/7 x64

это он и есть. Вот кусок окружения с x86 системы, которая стоит на Xeon-е (поддерживающем x64).

Код: PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 15 Model 4 Stepping 3, GenuineIntel
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0403
Автор: alexagf
Дата сообщения: 16.04.2009 11:09
wolf0425

Цитата:
а что на XP/Vista/7 x64 пишет встроенная команда ver ?

На XP x64 (на виртуалке) вообще не реагирует.
vu1tur

Цитата:
if _%PROCESSOR_ARCHITEW6432% == _AMD64 (
echo "x64"
) else (
echo "x86"
)

И на XP x64 и на х86 пишет "x86"
Автор: vu1tur
Дата сообщения: 16.04.2009 11:23
alexagf
а покажи свое окружение с xp x64
Автор: alexagf
Дата сообщения: 16.04.2009 11:26
vu1tur

Цитата:
покажи свое окружение с xp x64

Как это сделать?
Автор: Joo1z
Дата сообщения: 16.04.2009 11:35
alexagf
Введи set в командной строке. Без параметров.
Автор: alexagf
Дата сообщения: 16.04.2009 11:51
Joo1z
Не реагирует

Добавлено:
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=EM64T Family 6 Model 26 Stepping 4, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=1a04

Добавлено:
if %PROCESSOR_ARCHITECTURE% == AMD64 (
echo "x64"
) else (
echo "x86"
)

Вот так работает
Автор: vu1tur
Дата сообщения: 16.04.2009 13:10
alexagf
да, действительно PROCESSOR_ARCHITECTURE, а не PROCESSOR_ARCHITEW6432. Мне printenv почему-то выдаёт отличные от set результаты…
Автор: greenfox
Дата сообщения: 16.04.2009 15:05
vu1tur

Цитата:
не знаю, чем этот вариант стандартен, но работать он не будет. Вот часть окружения с х64 системы:
я взял этот код из дистрибутива от мс (шарапоинт 2007) + вы сами то посмотрите, в вашем случае переменная PROCESSOR_ARCHITECTURE имеет одно значение - x86 и этим судя по всему всё сказано
Вот вариант "снятый" на моей 2008 винде:

Код: PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 23 Stepping 6, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=1706
Автор: ZeroCrash
Дата сообщения: 16.04.2009 18:14
01MDM


Цитата:
Где-то так, я только не понял сама программа консольная?


Код:

@echo off
setlocal enabledelayedexpansion

for %%i in (1,2,3,4) do (
for %%j in (a,s,d,c,e) do set y_%%i_!random!=%%j
for %%j in (1,2,3,4,5) do set x_%%i_!random!=%%j
)

for %%i in (1,2,3,4) do (
for /f "tokens=4 delims=_=" %%j in ('set x_%%i') do set x-%%i=%%j
for /f "tokens=4 delims=_=" %%j in ('set y_%%i') do set y-%%i=%%j
)

:: Если программа консольная
start /b prog.exe %x-1%%y-1%%x-2%%y-2%-%x-3%%y-3%%x-4%%y-4%

:: Если не консольная
start "" prog.exe %x-1%%y-1%%x-2%%y-2%-%x-3%%y-3%%x-4%%y-4%


Программа не консольная, но твой код не работает!

Вот лог:


Код: C:\>volumeid.bat

C:\>setlocal enabledelayedexpansion

C:\>for %i in (1 2 3 4) do (
for %j in (a s d c e) do set y_%i_!random!=%j
for %j in (1 2 3 4 5) do set x_%i_!random!=%j
)

C:\>(
for %j in (a s d c e) do set y_1_!random!=%j
for %j in (1 2 3 4 5) do set x_1_!random!=%j
)

C:\>set y_1_!random!=a

C:\>set y_1_!random!=s

C:\>set y_1_!random!=d

C:\>set y_1_!random!=c

C:\>set y_1_!random!=e

C:\>set x_1_!random!=1

C:\>set x_1_!random!=2

C:\>set x_1_!random!=3

C:\>set x_1_!random!=4

C:\>set x_1_!random!=5

C:\>(
for %j in (a s d c e) do set y_2_!random!=%j
for %j in (1 2 3 4 5) do set x_2_!random!=%j
)

C:\>set y_2_!random!=a

C:\>set y_2_!random!=s

C:\>set y_2_!random!=d

C:\>set y_2_!random!=c

C:\>set y_2_!random!=e

C:\>set x_2_!random!=1

C:\>set x_2_!random!=2

C:\>set x_2_!random!=3

C:\>set x_2_!random!=4

C:\>set x_2_!random!=5

C:\>(
for %j in (a s d c e) do set y_3_!random!=%j
for %j in (1 2 3 4 5) do set x_3_!random!=%j
)

C:\>set y_3_!random!=a

C:\>set y_3_!random!=s

C:\>set y_3_!random!=d

C:\>set y_3_!random!=c

C:\>set y_3_!random!=e

C:\>set x_3_!random!=1

C:\>set x_3_!random!=2

C:\>set x_3_!random!=3

C:\>set x_3_!random!=4

C:\>set x_3_!random!=5

C:\>(
for %j in (a s d c e) do set y_4_!random!=%j
for %j in (1 2 3 4 5) do set x_4_!random!=%j
)

C:\>set y_4_!random!=a

C:\>set y_4_!random!=s

C:\>set y_4_!random!=d

C:\>set y_4_!random!=c

C:\>set y_4_!random!=e

C:\>set x_4_!random!=1

C:\>set x_4_!random!=2

C:\>set x_4_!random!=3

C:\>set x_4_!random!=4

C:\>set x_4_!random!=5
Автор: 01MDM
Дата сообщения: 16.04.2009 19:16
ZeroCrash

У меня все работает. Какая у тебя версия виндоз? Убери ненужный start, и если указываешь полный путь к prog.exe, то заключай его в кавычки:


Код:
start "" "C:\Some Foder\prog.exe" %x-1%%y-1%%x-2%%y-2%-%x-3%%y-3%%x-4%%y-4%

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: как сохранить сетевые настройки


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