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

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

Автор: artem1982
Дата сообщения: 12.05.2010 00:09
Всем привет.
Есть игра BFBC2(battlefield bad company 2).В игре уже самой,можно ввести свой логин и пароль и поставить галку,чтобы запомнился и логин и пароль.Но если вписать другой логин и пароль,то уже автологин первого не будет работать.Я может быть не прав,но мне кажется,что все настройки,включая и атологин хранятся в 3 файлах,которые находятся в Мои документы в папке BFBC2-GameSettings.bin,GameSettings.ini и settings.ini.Возможно сохранить все настройки в другое место и через батник,до запуска игры,чтобы сохраненные настройки копировались(перезаписывались) в папку BFBC2.Спасибо.
А и еще,за запуск батника до игры,будет отвечать другая программа.То-есть батник надо такого вида.чтобы просто настройки с папки например c:\igra копировались в my documents\BFBC2
Автор: Joo1z
Дата сообщения: 12.05.2010 08:35
igor_andreev

Код: sed -e "N;N;N;N;s/\n/ /g"
Автор: PVS17
Дата сообщения: 12.05.2010 13:00
Скромный вопрос: из общей папки нужно переместить группу файлов с нужными именами, остальные файлы в папке остаются.
Не знаю, как сделать. Пробовал с командой Move - она принимает группу файлов только по маске, перечислять конкретные имена не выходит у меня. Могу пока перемещать каждый файл по отдельности, записывая для каждого отдельную строку с Move, но файлов довольно много, выходит весьма громоздко.
Если не трудно - подскажите, как проще сделать.
Спасибо.
Автор: BagaBaga
Дата сообщения: 12.05.2010 15:20
Как сделать вывод файлов в текущей директории, размером 0 байт (т.е. пустых файлов)
Автор: Rush
Дата сообщения: 12.05.2010 16:40
BagaBaga

Код: @echo off
for /f "tokens=*" %%A in ('dir /a-d /b') do if %%~zA==0 echo %%A
pause
Автор: wolf0425
Дата сообщения: 12.05.2010 16:57

Цитата:
Как сделать вывод файлов
в смысле их имена напечатать?

Код: for %%a in (*) do if %%~za equ 0 echo.%%~a
Автор: PVS17
Дата сообщения: 12.05.2010 18:47
wolf0425

Спасибо! Через For оказывается.
Автор: Unitaz
Дата сообщения: 13.05.2010 09:57
в модифицированной Xp использую свой собственный shell.exe можно ли его заменить из батника , пусть даже с перезагрузкой ?
Автор: Mark_Titov
Дата сообщения: 13.05.2010 15:02
...Извиняюсь за офтоп, но у меня вопрос - кто сдесь в скриптах разбирается?
Очень нужно, я запостил в топике по скриптам, но все молчат, может кто разбирается и поможет?
http://forum.ru-board.com/topic.cgi?forum=33&topic=1491&start=1600#2
Плиззз...
Спасибо...


Ps.

Не понимаю почему этот код нормально не работает -


Код: @echo off
@echo -----------------------------------------------------------
@echo Date %date:~0,2%-%date:~3,2%-%date:~6,4% Time %time%
@echo -----------------------------------------------------------
title Kill process
tasklist | find "opera" && goto :kill

:kill
:w
echo.
echo.
echo.
set /p u=Input kill name process:
tasklist /fi "imagename eq %u%*"
taskkill /fi "imagename eq %u%*"
echo.
goto w
Автор: us0r
Дата сообщения: 13.05.2010 22:04
Mark_Titov
Есть такая вещь- findstr

Добавлено:
artem1982

Код: @echo off
cls
setlocal
set mybfbc2ini="disk:\path2game\myinisettings"
set bfbc2ini="disk:\path2game\path2ini"
cd /D%mybfbc2ini%
copy /y *.* %bfbc2ini%
endlocal
Автор: wolf0425
Дата сообщения: 14.05.2010 00:11
Mark_Titov
Цитата:
...запущенно 2 оперы и через раз а то и на 3-тий запуск находит одну, а не 2 оперы. Почему?
если находит одну оперу - значит одна и запущенна, а что ты видишь более одного окна оперы - так количество окон с количеством запущенных процессов не связано, с одного процесса можно и десяток окон иметь.
Автор: Mark_Titov
Дата сообщения: 14.05.2010 07:07
А как сделать что бы все найденные по фильтру процессы нумеровались, и прибивались не по названию, а по присвоенному процессу номеру?
Автор: Joo1z
Дата сообщения: 14.05.2010 10:05
Mark_Titov
У любого процесса есть PID, по нему и грохай. Taskkill /PID 1234 Можешь до кучи прибивать все дочерние процессы Taskkill /PID 1234 /T

А на чет скриптов - забей. Есть куча прог для инвентаризации. Сам в свое время писал скрипты, а затем понял, что велосипед изобрели задолго до меня. В PoSH, правда я свой периодически юзаю ввиду его краткости и наглядности для меня.
Из простых решений было:
Код: for /f %a in('net view ^| findstr \\') do psexec %a \\PC\SHARE\astra32.exe /RJP \\PC\SHRE\REPORTS\$HOSTNAME$.TXT
Автор: stydent62
Дата сообщения: 14.05.2010 14:28
надо скопировать файл cons*.usr из папки 1 в папку 2 и добавить в имя файла текущую дату.
в папке 1 лежит вот такой файл cons#1_313427.usr
дата сегодняшняя 14.05.2010г.
использую вот такой код
set CURDATE=%DATE%
copy d:\1\cons*.usr g:\2\%CURDATE:~8,2%%CURDATE:~3,2%%CURDATE:~0,2%_*
в результате получается файл в папке 2 именем 100514_313427.USR
а надо чтобы имя файла было вот таким: 100514_cons#1_313427.usr или еще лучше cons#1_313427_051410.usr
помогите пожалуйста реализовать
Автор: wolf0425
Дата сообщения: 14.05.2010 14:57
stydent62

Код: for %%a in ( d:\1\cons*.usr ) do 1>nul copy "%%~fa" "g:\2\%DATE:~8,2%%DATE:~3,2%%DATE:~0,2%_%%~nxa"
Автор: stydent62
Дата сообщения: 14.05.2010 15:41
если путь к файлу cons#.usr длиннее чем d:\1\, скажем d:\consultant\receive\cons*.usr то батник не работает
как в вот в этой чати кода вообще не писать путь начиная с диска (d:\1\cons*.usr) можно просто \receive\cons*.usr а сам батник запускается из папки d:\consultant
Автор: us0r
Дата сообщения: 14.05.2010 15:47
Mark_Titov
Получай список tasklist- ом, фильтруй пару процесс/PID и передавай параметром в taskkill)
Автор: Mark_Titov
Дата сообщения: 14.05.2010 15:57

Цитата:
Mark_Titov
У любого процесса есть PID, по нему и грохай. Taskkill /PID 1234 Можешь до кучи прибивать все дочерние процессы Taskkill /PID 1234 /T

...Нет, цель именно присваивать номер каждому найденному процессу и введя этот номер процесс убивается...

Спасибо за ответ Joo1z...
Автор: Free_Soft
Дата сообщения: 14.05.2010 21:58
Подскажите
есть код

Код: set par1=%~1
set par2=%~2
if "%par1%" == "" goto:1
set par1=%par1:/=%
set par1=%par1:-=%
set par2=%par2:/=%
set par2=%par2:-=%
if /i "%par2%" == "s" goto:2
:input
if /i "%par1%" == "act" goto:0
if /i "%par1%" == "qt" goto:3
if /i "%par1%" == "tt" goto:4
if /i "%par1%" == "us" goto:5
if /i "%par1%" == "is" goto:6
if /i "%par1%" == "srv" goto:7
if /i "%par1%" == "?" help.txt
Автор: METAJIJI
Дата сообщения: 14.05.2010 23:39

Цитата:
Вот незадача... Как добавить к файлу "лишние" строки понятно... А вот как их удалить?


Код:

[_start_]
jkg=455
qwe=asd

[_vars_]
var=123
zxc=567

как обработать этот файл таким образом, чтобы получилось так:

Код:

[_start_]
jkg=455
qwe=asd


Отвечу сам:

Код: CALL :DELLINE "file.ini" "[_vars_]"
CALL :DELLINE "file.ini" "var=123"
CALL :DELLINE "file.ini" "zxc=567"

:DELLINE
IF NOT EXIST "%~1" EXIT /B 1
IF EXIST "%~dpn1.tmp" DEL /F/Q "%~dpn1.tmp"

SET $N=0 & FOR /F "Delims=:" %%i IN ('FINDSTR /INRC:"^%~2$" "%~1"') DO SET $N=%%i
IF %$N% NEQ 0 FOR /F "Tokens=1* Delims=:" %%i IN ('FINDSTR /ENRC:"$" "%~1"') DO IF "%%i" NEQ "%$N%" (
1>>"%~dpn1.tmp" ECHO.%%j)
Автор: Joo1z
Дата сообщения: 14.05.2010 23:56
Mark_Titov

Цитата:
цель именно присваивать номер каждому найденному процессу и введя этот номер процесс убивается


Код: @echo off
set /a cnt=0
for /f "tokens=1,3 delims=: " %%a in ('tasklist ^| findstr opera.exe ^| findstr /n opera.exe') do echo %%a    %%b
echo Enter number of prosess:
set /p kill=
for /f "tokens=1,3 delims=: " %%e in ('tasklist ^| findstr opera.exe ^| findstr /n opera.exe') do if %%e==%kill% echo taskkill /PID %%f
Автор: Free_Soft
Дата сообщения: 15.05.2010 00:03

Цитата:
Попробуйте так

Код:
IF NOT EXIST "par1" goto:err

Так тоже не работает
Автор: igor_andreev
Дата сообщения: 15.05.2010 00:56
Free_Soft
да ты в конце просто допиши goto :err

Код:
:input
if /i "%par1%" == "act" goto:0
if /i "%par1%" == "qt" goto:3
if /i "%par1%" == "tt" goto:4
if /i "%par1%" == "us" goto:5
if /i "%par1%" == "is" goto:6
if /i "%par1%" == "srv" goto:7
if /i "%par1%" == "?" goto :help
goto :err
Автор: Mark_Titov
Дата сообщения: 15.05.2010 06:19

Код: @echo off
setlocal enabledelayedexpansion
set /a cnt=-1
ser pr=
for /f "tokens=1,3 delims=: " %%a in ('tasklist ^| findstr opera.exe ^| findstr /n opera.exe') do echo %%a %%b & set pr=!pr!,%%b
set pr=!pr:~1!
echo Enter number of prosess:
set /p kill=
for /d %%t in (!pr!) do set /a cnt+=1 & if !cnt!==%kill% echo taskkill /pid %%t
Автор: Joo1z
Дата сообщения: 15.05.2010 06:40

Код: @echo off
setlocal enabledelayedexpansion
set /a cnt=0
set pr=
for /f "tokens=1,2,3 delims=: " %%a in ('tasklist /s %1 ^| findstr opera.exe ^| findstr /n opera.exe') do echo %%a %%b %%c & set pr=!pr!,%%c
set pr=!pr:~1!
echo Enter number of prosess:
set /p kill=
for /d %%t in (!pr!) do set /a cnt+=1 & if !cnt!==%kill% echo taskkill /s %1 /pid %%t
Автор: Free_Soft
Дата сообщения: 15.05.2010 07:05
igor_andreev
спасибо! все гениальное просто))
Автор: Mark_Titov
Дата сообщения: 15.05.2010 08:29

Цитата:
Код:@echo off
setlocal enabledelayedexpansion
set /a cnt=0
set pr=
for /f "tokens=1,2,3 delims=: " %%a in ('tasklist /s %1 ^| findstr opera.exe ^| findstr /n opera.exe') do echo %%a %%b %%c & set pr=!pr!,%%c
set pr=!pr:~1!
echo Enter number of prosess:
set /p kill=
for /d %%t in (!pr!) do set /a cnt+=1 & if !cnt!==%kill% echo taskkill /s %1 /pid %%t


Для запуска на удаленной машине запускать нужно script.cmd pcname.
Если не нравится надпись, то убери строчку с Echo
И с начальным значением переменной cnt какая-то ерунда.

...спасибо, но он ругается на "/s",

Код: ERROR: Invalid Syntax. Value expected for '/s'.
Type "TASKLIST /?" for usage.
Enter number of prosess:
Автор: mugil_cephalus
Дата сообщения: 15.05.2010 08:29
stydent62
попробуй писать путь короткими dos-именами, пример - F:\DOCUME~1\ADMIN\APPLIC~1\HEWLET~1>

Добавлено:
Mark_Titov
%1 покажи

/s компьютер
Указывает имя или IP-адрес удаленного компьютера (не используйте обратную косую черту).
Автор: Mark_Titov
Дата сообщения: 15.05.2010 08:53

Цитата:
Mark_Titov
%1 покажи

В смысле? Результат?

Если да, то вот -
...сделал вот так -

Код: @echo off
echo.
setlocal enabledelayedexpansion
set /a cnt=0
set pr=
for /f "tokens=1,2,3 delims=: " %%a in ('tasklist %1 ^| findstr opera ^| findstr /n opera') do echo %%a %%b %%c & set pr=!pr!,%%c
set pr=!pr:~1!
echo.
echo Enter number of prosess:
set /p kill=
for /d %%t in (!pr!) do set /a cnt+=1 & if !cnt!==%kill% echo taskkill /s %1 /pid %%t
Автор: Joo1z
Дата сообщения: 15.05.2010 08:55
Mark_Titov
Добавь после setlocal enabledelayedexpansion
Код:
set pc=%1
IF NOT DEFINED pc set pc=%computername%

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


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