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

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

Автор: Maza_Faka
Дата сообщения: 24.02.2009 06:44
Intexid
Один из вариантов:

Код:
@Echo Off
Set "Dir=C:\Test"

For /F "Usebackq" %%A In (`Dir /B /A:D "%Dir%"`) Do Echo %%A | Find /V "">Nul && Echo Sub-directory is exists
Автор: igor_andreev
Дата сообщения: 24.02.2009 08:19
Intexid
тынц
Автор: Maza_Faka
Дата сообщения: 24.02.2009 08:26
anatolus
Попробуй так:

Код:
@Echo Off

Set Server=www.ya.ru

:_Ping
Ping -n 120 127.0.0.1>Nul
Ping -n 10 %Server%
If ERRORLEVEL 1 GoTo :Reconnect
GoTo :_Ping

:Reconnect
::Разрываем соединение...
Ping -n 20 127.0.0.1>Nul
::Устанавливаем соединение
GoTo :_Ping
Автор: Kokozjabr
Дата сообщения: 24.02.2009 09:34
Создал файл VPN.cmd и прописал в нем rasphone -d VPN, тепеперь при старте винды появляеться дос окно и запускаеться соединение VPN. Скажите можно еще что-то дописать что бы дос окно запускалось свернутым или его вообще не было видно?
Автор: Maza_Faka
Дата сообщения: 24.02.2009 11:55
Kokozjabr
В шапке cmdow — изменение параметров и видимости дос-окна
Автор: Intexid
Дата сообщения: 24.02.2009 12:04
Maza_Faka
igor_andreev
спасибо друзья, попробую разобраться, пока для меня это слишком сложно, не все понимаю, что там написано

пока вот так придумал делать:

Код: if -%~x1 neq - (
echo Eto ne papka: u faila est rasshirenie
pause
exit
)
set count=0
for %%Y in (%1\*) do set /a count=count+1
for /d %%Z in (%1\*) do set /a count=count+1
if %count% neq 0 (
echo Eto papka i v nei %count% elementov
pause
exit
)
echo Eto papka, no ona pusta
pause
exit
Автор: v1rus
Дата сообщения: 24.02.2009 14:40
Добрый день!
Подскажите, можно ли решить на .cmd такую задачу:
есть предварительно подготовленный файл такого вида

текст        текст        123    456

Вообщем текст с разделителями. Нужно над одним из столбцов произвести ряд математических действий (подозреваю что через команду set) и результат записать тот же файл или в новый файл, но с сохранением структуры и остальных столбцов. Сейчас эта задача реализована, но с привлечением дополнительных програм и все это не очень красиво и аккуратно, а хотелось бы от начала до конца всю обработку иметь на cmd.

может привлечь для этих целей SED? я его использую немного, но по готовым примерам, но сам такое не осилю к сожалению
Автор: albamef
Дата сообщения: 24.02.2009 15:12
люди, помоги пожалуйста... такая задача:
в текстовом файле где-то в середине есть строка:

SkinDir=

задача - после знака равно написать путь к папке с тем батником, в котором он лежит...

например я запускаю файл из папки C:\Program Files\Program\123.bat, вот необходимо чтобы "SkinDir=C:\Program Files\Program".... возможно ли такое, если да то поскажите пожалуйста...?
Автор: jonnydram
Дата сообщения: 25.02.2009 06:06
Доброе утро =) В первую очередь хочу сказать спасибо Maza_Faka за предоставленный код - спс большое +)

Во вторую очередь - мини фича для модернизации уже сделанного.

Как сделать так, чтобы при запуске батник сворачивался сразу? Т.е. чтобы пользователь не видел этого черного окошка на фоне. А то ведь пользователи нонче умные пошли - крестик, крестик, крестик. А потом удивляются..
Автор: Maza_Faka
Дата сообщения: 25.02.2009 06:41
jonnydram

Цитата:
Как сделать так, чтобы при запуске батник сворачивался сразу?

cmdow - изменение параметров и видимости дос-окна - в шапке.
hstart - скрытый запуск командных файлов и консольных программ

Добавлено:
albamef

Цитата:
после знака равно написать путь к папке с тем батником, в котором он лежит

Попробуй так:

Код:
@Echo Off

Call :sbs2.com

"%temp%.\sbs2.com" 0 "SkinDir=" "SkinDir=%CD%" < test.txt > result.txt

Del /F /Q "%temp%.\sbs2.com"
GoTo :EOF

:sbs2.com
:: Create the assembler program, by Herbert Kleebauer
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=> "%temp%.\sbs2.com"
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU!WvX0GwUY Wv;ovBX2Gv0ExGIuht6>> "%temp%.\sbs2.com"
echo ?@}IKuNWpe~Fpe?FNHlF?wGMECIQqo{Ox{T?kPv@jeoSeIlRFD@{AyEKj@>> "%temp%.\sbs2.com"
echo iqe~1NeAyR?mHAG~BGRgB{~H?o~TsdgCYqe?HR~upkpBG?~slJBCyA?@xA>> "%temp%.\sbs2.com"
echo LZp{xq`Cs?H[C_vHDyB?Hos@QslFA@wQ~~x}viH}`LYNBGyA?@xAB?sUq`>> "%temp%.\sbs2.com"
echo LRy@PwtCYQEuFK@A~BxPtDss@fFqjVmzD@qBEOEenU?`eHHeBCMs?FExep>> "%temp%.\sbs2.com"
echo LHsPBGyA?@xAunjzA}EKNs@CA?wQpQpKLBHv?s`WJ`LRCYyIWMJaejCksl>> "%temp%.\sbs2.com"
echo H[GyFGhHBwHZjjHeoFasuFUJeHeB?OsQH[xeHCPvqFj@oq@eNc?~}Nu??O>> "%temp%.\sbs2.com"
echo ~oEwoAjBKs?Zp`LBzHQzyEFrAWAG{EFrAqAGYwHTECIQ{coKIsaCsf{Oe~>> "%temp%.\sbs2.com"
echo CK}Ayre~CNFA{rAyEKFACrA{EKGAjbA}eKGSjNMtQFtc{OAyDGFj?{FDGQ>> "%temp%.\sbs2.com"
echo KAjNVk_OCAx@e?f{o?CosI}1EGizhljJ~H1ZeG}JBA~rACBMDGjjDG@g0>> "%temp%.\sbs2.com"
Автор: maxi812
Дата сообщения: 25.02.2009 12:03
Помогите !

Нужен Батничек что бы при загрузке или выключения без разнице проверял определенные папки и удалял в них файлы старше 1 недели. и выводил сообшения что удалены.
Автор: Grisha_Tamashi_SAN
Дата сообщения: 25.02.2009 15:38
Приветствую, Уважаемые РуБордовцы.
Тут состряпал батник удаляющий определенный файл в каталоге старее 30 мин текущей даты. Возможно ли его как-то упростить(оптимизировать)?

Код: ::Удаление файла созданного на 30 минут раньше
@echo off
setlocal
pushd e:\temp\
for %%a in (flag.txt) do if exist %%a call :run_ "%%a" "%%~ta"
popd
goto :EOF
:run_
set tm=%TIME%
set h=%TIME:~0,2%
set m=%TIME:~3,2%
set /a m=1%m%-100
set /a "min=60*h+m"
set "fdate=%~2"
set "fdate=%fdate:~11,12%"
set fh=%fdate:~0,2%
set fm=%fdate:~3,2%
set /a fh=1%fh%-100
set /a fm=1%fm%-100
set /a "fmin=60*fh+fm"
set /a "rz=%min%-%fmin%"
if %rz% GTR 30 del /q "%~1" else (
echo File %~1 not deleted.
)
Автор: magistrfet
Дата сообщения: 25.02.2009 17:48
подскажите, есть ли где пример кода для инсталляции драйверов например для usb модема через .inf файлы
Автор: hunter19
Дата сообщения: 25.02.2009 17:54
Привет всем. Можете помочь пожалуйста? Я до этого bat-ики не писал и попалась проблема, которую решить не могу.

Вот мой пример:
:hlds
START/HIGH /wait hlds.exe +sv_lan 1 -game cstrike +port 27018 -console -insecure -noipx +maxplayers 32 +map de_dust2 +rcon_password 123 +exec server.cfg
echo (%time%) WARNING: hlds closed or crashed, restarting.
goto hlds

Здесь если программа сама закрывается, то заново после этого запускается.
Но если сам закрываешь, то спрашивает: Завершить выполнение пакетного файла [Y(да)/N(нет)]

Но нужно сделать так, чтобы когда сам закрываешь программу, то при этом и консольное окно закрывалось.
Автор: SoldatShveik
Дата сообщения: 25.02.2009 21:09

Цитата:
    Как вариант создать копию файла с заменой двойных кавычек - одинарными. Для замены можно использовать sbs2.com


Все супер! Одной проблемой стало меньше. Большое спасибо,
Цитата:
Maza_Faka
!


Цитата:
SED, GREP?


Блин, всю башку сломал, как эти GNU утилиты прикрутить для построчной замены в куче файлов. Если конкретное значение на конкретное менять - все ясно без вопросов.
А если параметры поиска и замены точно не определены - они построчно берутся из двух одноименных файлов в разных папках: если для строки_1 файла_1 соблюдается некое условие (присутствует, скажем, текст неопределенной длины между двумя одинарными кавычками или иными заданными символами), то этот кусок строки_1 между символами меняем на кусок строки_1 из файла_2 (аналогичного по структуре, но с иными параметрами между заданными символами), и так далее для каждой строки в каждом файле.
Если вообще возможна подобная процедура поиска и замены, подскажите алгоритм решения.
Автор: v1rus
Дата сообщения: 25.02.2009 23:05
Maza_Faka
Например над четвертым столбцом. Математических действий несколько, скажем *110, затем +100, затем /10 и *10 (так округлится, удобней мне будет). возможно такое? я честно не соображу..
то что через set все эти математические действия можно произвести мне понятно, оно работает, но как это сделать для всего столбца, перебирая строку за строкой, я не знаю ((
Автор: Maza_Faka
Дата сообщения: 26.02.2009 06:39
maxi812

Цитата:
что бы при загрузке или выключения без разнице проверял определенные папки и удалял в них файлы старше 1 недели. и выводил сообшения что удалены.

Помести батничек с нижеуказанным кодом в автозагрузку.

Код:
@Echo off

Forfiles /D -7 /P C:\Test /C "cmd /c if @isdir==FALSE del /f /q @path" | Find /I /V "error">Nul && Echo Files deleted!

Pause
Автор: maxi812
Дата сообщения: 26.02.2009 10:59

Цитата:
Помести батничек с нижеуказанным кодом в автозагрузку.

Код:

@Echo off

Forfiles /D -7 /P C:\Test /C "cmd /c if @isdir==FALSE del /f /q @path" | Find /I /V "error">Nul && Echo Files deleted!

Pause


фто то не работает ((


Добавлено:
@Echo off

Forfiles /D -7 /P C:\Test /C "cmd /c del /f /q @path"
Echo Files deleted!

pause


работает на сервере 2003 а на Xp нет почему ?
Автор: magistrfet
Дата сообщения: 26.02.2009 11:33
исправьте в шапке -

Набор GNU утилит для win32
http://gnuwin32.sourceforge.net/

старый комплект по ссылке в шапке не работает
Автор: Maza_Faka
Дата сообщения: 26.02.2009 13:43
maxi812

Цитата:
работает на сервере 2003 а на Xp нет почему ?

Возможно, потому, что в XP нет утилиты Forfiles?
Автор: maxi812
Дата сообщения: 26.02.2009 16:04

Цитата:
Возможно, потому, что в XP нет утилиты Forfiles?


ДА ДА ! СПС все работает ! Огромное спасибо !
Автор: zzxx1488
Дата сообщения: 26.02.2009 16:37
magistrfet - скорее всего это временные проблемы, комплект очень популярный
Автор: vitrzn
Дата сообщения: 26.02.2009 23:45
Сможет кто помочь в написании батника?!!!
Нужно через батник зайти на FTP (логин/пароль - есть)
перейти в определённую папку (назв. папки постоянное, например-- v3000 ) и скачать всё что там есть. ( c:\ftp_temp\ )
При повторном скачивании файлов проверять их присутствии на локальном компе и если такой файл уже был скачен, то пропустить его скачивание.

p.s. можно кончено взять какой-нить FTP-клиент и им это сделать, но вся загвозка в том что это надо сделать без инсталяции каких либо программ (нет прав админа ;( ), да и батником как-то приятнее
Автор: v1rus
Дата сообщения: 27.02.2009 09:43
Maza_Faka
вывести я могу.. а как с помощью for /F произвести над каждой строкой несколько действий и записать обратно в файл.. а потом ведь еще и обратно в тот файл из которого этот столбец взять нужно записать
Автор: Kilyan
Дата сообщения: 27.02.2009 10:53
Требуется организация батника!
В разделе реестра HKLM\SOFTWARE\microsoft\windows\curentversion\uninstall\
существуют разделы для удаления программ, например такого вида {7f....db527}
в которых несется информация о продукте (publisher) и ключ для удаления (uninstallString)
Как найти необходимый продукт из массы {7f....db527} со строковым параметром (publisher) и при нахождении вытянуть строковый параметр для удаления (uninstallString)
Очень нужно - ПОМОГИТЕ!
Автор: mavzer12
Дата сообщения: 28.02.2009 07:06
Помогите решить проблему! Вот есть команда del /F /Q *.wav она удаляет все файлы (.wav) находящиеся в данной папке
Можно как нибудь сделать чтобы файлы удалялись и из подпаппок . А папок много.

Я использовал команду с oggdec.exe for /r %%a in (*.ogg) do oggdec.exe "%%a" а оригиналы остались
Автор: Maza_Faka
Дата сообщения: 28.02.2009 08:05
mavzer12

Цитата:

Del /?
/S Удаление указанных файлов из всех подкаталогов
Автор: El Sanchez
Дата сообщения: 28.02.2009 12:04

Цитата:
Требуется организация батника!
В разделе реестра HKLM\SOFTWARE\microsoft\windows\curentversion\uninstall\
существуют разделы для удаления программ, например такого вида {7f....db527}
в которых несется информация о продукте (publisher) и ключ для удаления (uninstallString)
Как найти необходимый продукт из массы {7f....db527} со строковым параметром (publisher) и при нахождении вытянуть строковый параметр для удаления (uninstallString)
Очень нужно - ПОМОГИТЕ!


Вот пример батника, выводит в файл log.log разделы вида {7f....db527}, значения ключей Publisher и UninstallString (если они есть). Ввиду того, что значение UninstallString может быть сложным для обработки батником, в некоторых местах лога пишется лишняя строчка с No data. Может кто доделает сценарий.

Код: @echo off
set "regstr=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
setlocal EnableDelayedExpansion
for /f "tokens=7* delims=\" %%a in ('reg query %regstr% /s^|find "%regstr%\{" 2^>nul') do (
echo %%a>>log.log
reg query !regstr!\%%a /v Publisher|find "Publisher" 2>nul&&call :getvar1 "%%a" Publisher||(echo Publisher: No data.>>log.log)
reg query !regstr!\%%a /v UninstallString|find "UninstallString" 2>nul&&call :getvar2 "%%a" UninstallString||(echo UninstallString: No data.>>log.log)
echo.>>log.log
)
goto :eof
:getvar1
for /f "tokens=*" %%b in ('reg query !regstr!\%~1 /v %2^|find "%2" 2^>nul') do (
set "tempvar=%%b"
echo Publisher: !tempvar:~17!>>log.log
goto :eof
)
:getvar2
for /f "tokens=*" %%c in ('reg query !regstr!\%~1 /v %2^|find "%2" 2^>nul') do (
reg query !regstr!\%~1 /v %2|find "REG_SZ" 2>nul&&(set tempvar=%%c&echo UninstallString: !tempvar:~23!>>log.log)
reg query !regstr!\%~1 /v %2|find "REG_EXPAND_SZ" 2>nul&&(set tempvar=%%c&echo UninstallString: !tempvar:~30!>>log.log)
goto :eof
)
endlocal
:eof
Автор: KYMichael
Дата сообщения: 03.03.2009 01:16
Почему могут не срабатывать команды вида:

Код: set /a counter=!counter!+1

if !counter!==!line! echo %VAR%
Автор: Maza_Faka
Дата сообщения: 03.03.2009 05:50
KYMichael
Так, тоже не работает?

Код:
@Echo Off

Set VAR=YES
Set counter=0
Set line=1

Setlocal EnableDelayedExpansion

set /a counter=!counter!+1
if "!counter!"=="!line!" echo %VAR%

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: DVD-video (ДВД-видео) - что и как (часть 3)


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