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

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

Автор: SapSat
Дата сообщения: 04.12.2007 09:25
01MDM

Спасибо за красивый код. Сам написал?

Но там нет рекурсии.
В моем примере я хотел изящно рекурсию обыграть...
Автор: 01MDM
Дата сообщения: 04.12.2007 09:28
SapSat
Первый да, второй портировал..
Автор: SapSat
Дата сообщения: 04.12.2007 09:33
01MDM

Respect

!
Автор: Elroir
Дата сообщения: 04.12.2007 12:20
kotLeon

Цитата:
локальная сеть и мне нужен такой батник с помощью которого можно было пропинговать компы (работает комп или нет) с последующим условием к примеру если комп работает то выведет сообщение что он работает и наоборот

Предположим, что в файле computers.txt есть список всех компьютеров в сети (адреса и названия, названия необязательны), примерно так:

Код:
192.168.0.1 Vasya
192.168.0.2 Petya
192.168.0.3
192.168.0.1 Vanya
Автор: SapSat
Дата сообщения: 04.12.2007 12:22
Помогите, плз, разобраться -
написал шапку к своему факториалу,
в которой проверяется - запустился ли батник с параметром или нет,
и если нет - то запускает сам себя с параметром -


Код:
@echo off
if "%1"=="" (
set /p d=Factorial:
call %~nx0 %d%
Exit
)
set /a f=1
:Fact
set /a i=%1-1
if %i% GTR 1 call:Fact %i%
set /a f*=%1
echo %f%
Автор: Elroir
Дата сообщения: 04.12.2007 13:12
SapSat

Цитата:
Почему здесь он просит дважды вводить параметр?

Потому что ты пытаешься дать батнику параметр, установленный внутри скобок if-a.
A для батника такого параметра не существует, поэтому он и вызывается второй раз без параметра. Используй "setlocal enabledelayedexpansion" и команду "call %~nx0 !d!".
Автор: kotLeon
Дата сообщения: 04.12.2007 13:33
Elroir
Спасибо за предложенное решение, на сколько я понял здесь в цикле будут перебираться те айпишники что указаны в .тхт файле.
А можно попросить если не очень затруднительно, показать как можно реализовать данную проверку для одного компьютера, не используя циклы, и айпи указать в самом батнике (к примеру такой айпи 192.168.0.1).

Спасибо за помощь!!!
Автор: Vladimir312
Дата сообщения: 04.12.2007 13:42
Elroir

Цитата:
Vladimir312
Чтобы определить каталог запуска батника (плюс вывести его короткий путь), вовсе не надо использовать for.
Можно так:

Спасибо.
Это идеальный вариант - всего одна строчка:

Код: @echo off
echo %~dps0
pause
Автор: SapSat
Дата сообщения: 04.12.2007 14:22
Elroir
Спасибо.
Я сделал вариант без setlocal enabledelayedexpansion


Код:
@echo off
if "%1"=="" (
set /p d=Factorial:
call %~nx0 %%d%%
Exit
)
set /a f=1
:Fact
set /a i=%1-1
if %i% GTR 1 call:Fact %i%
set /a f*=%1
echo %f%
Автор: king_stiven
Дата сообщения: 04.12.2007 14:32
Elroir
Как ты догадался, что имел в виду Vladimir312 ?
Автор: Elroir
Дата сообщения: 04.12.2007 15:11
kotLeon

Код:
@echo off
setlocal
set "ip=192.168.0.1"
ping -n 1 -w 1000 %ip% | find "TTL=">nul
if %errorlevel%==0 (echo %ip% is online) else (
echo %ip% is offline)
Автор: whitecherep
Дата сообщения: 04.12.2007 18:16
Нужен батник, который бы сканировал папку с музыкой в mp3 (например Music на диске J) и удалял без подтверждения все композиции, длительность которых больше 8 минут (предусмотреть что названия песен могут быть в кирилице)
Автор: 01MDM
Дата сообщения: 04.12.2007 20:04
whitecherep
Как-то уже обсуждалось
Стандартными средствами нельзя, найди утилиту tag.exe и положи рядом с батником

Код:
@echo off
if exist list.tmp del /q list.tmp
setlocal enabledelayedexpansion
tag --hidetags "J:\Music\*.mp3" --recursive --tofilen list.tmp
set count=0
for /f "tokens=*" %%i in (list.tmp) do (
set /a count+=1
if !count!==1 set "file=%%i"
if !count!==3 set "len=%%i"
if !count!==4 set count=0 && call:check !len:~-5,2!
)
del /q list.tmp
goto:eof
:check
if %1 gtr 0x07 del /q "%file%"
Автор: Serge2005
Дата сообщения: 04.12.2007 23:25
Помогите, пожалуйста, реализовать:
Есть папка MainDir. В ней около 60 папок. В них есть файлы, среди содержимого каждой есть файл: "sbo"+dirname+".htm". Нужно, чтобы скрипт создавал файл, следующего содержимого:
(i:=1)

Итем: [i]. <----первый кусочек
некоторый текст (везде одинаковый)
директория[i]: Dir1Name
Файл[i]: Dir1Name+"/sbo"+Dir1Name+".htm"
некоторый текст2

i++

Итем: [i]. <---- второй кусочек и тд....
...

Помогите, пожалуйста..
Автор: king_stiven
Дата сообщения: 04.12.2007 23:34
Serge2005
Я например не понял, что надо.
Автор: Elroir
Дата сообщения: 04.12.2007 23:58
king_stiven
Тут и я не понял

Serge2005
Приведи конкретный пример с названиями файлов и директорий (можно не один)
Автор: Ilyansk
Дата сообщения: 05.12.2007 05:53
а че тут думать?! прыгать надо

Код:
@echo off
if exist outfile.txt del outfile.txt
setlocal enabledelayedexpansion
set "i=0"
FOR /D %%A IN (*.*) DO @call :maker %%A %0
goto :eof
:maker
if exist %1\sbo*.htm (
for %%N in (%1\sbo*.htm) do "set FN=%%N"
set /a i+=1
echo Item: !i! >>outfile.txt
echo везде одинаковый текст >> outfile.txt
echo Директория: %1 >>outfile.txt
echo Файл: %1/!FN! >>outfile.txt
echo некоторый текст2 >>outfile.txt
)
Автор: Camelot107
Дата сообщения: 05.12.2007 08:02
Люди ХЕЛП МИ! Нужен bat-ник для 7-Zip, который будет архивировать файлы с расшир. *.bkf
Пробовал такой:
"C:\Program Files\7-Zip\7z.exe" a -r -y -t7z -mx=9 -ms=on -mf=on -mhc=on -mhcf=on -mhe=on -mmt=on -m0=BCJ2 -m1=LZMA:d=640m -m1=LZMA:fb=96 -m1=LZMA:lc=3 -m2=LZMA:d=4m -m2=LZMA:fb=96 -m2=LZMA:lc=3 -m3=LZMA:d=4m -m3=LZMA:fb=96 -m3=LZMA:lc=3 -mb0:1 -mb0s1:2 -mb0s2:3 -v4g srez *.bkf
Серваки повисли подскажите плз можт кто-то уже с таким сталкивался
Автор: Elroir
Дата сообщения: 05.12.2007 08:53
Ilyansk

Цитата:
Есть ли решение на ВАТ файле у задачи
спрашиваем у юзера параметр, если в течение N сек. нет ответа, берем по умолчанию

Есть. В Windows 2003 (или в Resource Kit-ах NT или 2000) есть утилита choice.exe.
Автор: OOD
Дата сообщения: 05.12.2007 13:04
Как с помощью батника отчистить CD-RW диск находящийся в приводе?
Автор: kotLeon
Дата сообщения: 05.12.2007 13:47
Elroir
Спасибо за помощь очень пригодилась такая проверка.
Благодарствую!!!
Автор: king_stiven
Дата сообщения: 05.12.2007 14:18
OOD
С помощью NeroCmd.exe, буква дисковода K:

if exist "%drivename%\*.*" -если диск с записью
--disable_eject - не выдвигать лоток


Код: set drivename=K:
if exist "%drivename%\*.*" NeroCmd.exe --erase --drivename %drivename% --disable_eject --no_error_log
Автор: 01MDM
Дата сообщения: 05.12.2007 14:25
OOD
Или с помощью cdburn.exe

Код:
cdburn DriveLetter: -erase
Автор: crazy_dead
Дата сообщения: 05.12.2007 15:21
Всем привет.
Подскажите, пожалуйста, как можно батником копирнуть лежащий где-либо файл во все подкаталоги данного каталога.

Пример:

Есть файл: d:\faylo\file.txt,
есть каталог "c:\percy",

а вот че в нем:

c:\percy\chuvak
c:\percy\parnyaga
c:\percy\kent

Заранее спасибо.
Автор: 01MDM
Дата сообщения: 05.12.2007 16:09
crazy_dead
Приведи пример строки. Тогда подправим.
Если пустые строки и знаки табуляции не важны, то

Код:
@echo off

set "oldStr=Старая строка, та что надо заменить"
set "newStr=Новая строка, та на которую надо заменить старую"

for /f "tokens=*" %%i in (old.file) do (
    echo "%oldstr%" | findstr /c:"%%i" 1>nul 2>&1 && echo %newStr%>>new.file || echo %%i >>new.file
)
move new.file old.file
Автор: crazy_dead
Дата сообщения: 05.12.2007 16:24
01MDM
Прошу прощения. Задачка поменялась, т.к. нужно было подправить файл настройки, но, как оказалось, есть др. файл настр, имеющий больший приоритет. Поэтому нужно просто его раскидать по всем юзерам винды. Если быть точнее то мне нужно проверить какие юзеры ваще есть и им кинуть этот файл, т.е. нужно:
- вывести список папок в Doc & set;
- проверить наличие в каждой из них подпапки с конкретным названием;
- при положительном результате предыдущего пункта копирнуть файл.
Автор: AFedorov
Дата сообщения: 05.12.2007 16:34
Народ погите плз!
Несложная задача но не могу сообразить ((
Наваял батничек для рассылке нужных файлов по нужным адресам с помощью проги sendmail. Всё хорошо, всё работает но есть вопрос - письма делаются по шаблону - это обычный текстовый файл , где можно вставить и сабж и адрес и тело письма. Нужно в батничке наваять команды чтоб формировало этот файлик (например типа
@set outputfile=templ.txt
echo Отчёт за ХХХХ число > %outputfile%), где ХХХХ - чтоб проставлялась текущая дата.. Как можно её туда вставить?? и как можно таким макаром вставить в файл пустую строку???
Автор: king_stiven
Дата сообщения: 05.12.2007 16:44
AFedorov

Цитата:
Как можно её туда вставить??


echo Отчёт за %date% число > %outputfile%


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


echo.> %outputfile%
Автор: Nagual
Дата сообщения: 05.12.2007 17:24
AFedorov
test.cmd
Код: @[no]echo[/no] off
[no]chcp[/no] 1251[no]>[/no][no]nul[/no]
[no]set[/no] outputfile[no]=[/no]templ.txt
[no]for[/no] /f "tokens[no]=[/no]1-6 delims[no]=[/no]:., " [no]%%a[/no][no] in[/no] ("[no]%date%[/no] [no]%time:~0,8%[/no]") [no]do[/no] (
[no]echo[/no][no]>>%outputfile%[/no] Отчёт за [[no]%%c[/no].[no]%%b[/no].[no]%%a[/no]_[no]%%d[/no].[no]%%e[/no].[no]%%f[/no]]
[no]echo[/no].[no]>>%outputfile%[/no])
Автор: 01MDM
Дата сообщения: 05.12.2007 17:25
crazy_dead


Код:
@echo off
set "file=file.cfg"
set "folder=folderName"

for /f "tokens=*" %%i in ('dir /b /a:d "C:\Documents and Settings"') do (
    dir "C:\Documents and Settings\%%i\%folder%" >nul 2>nul && copy %file% "C:\Documents and Settings\%%i\%folder%")

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

Предыдущая тема: Доступ к реестру через RegEdit?


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