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

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

Автор: wolf0425
Дата сообщения: 07.02.2010 21:15
BagaBaga

Код: for /f "tokens=1,2* delims=," %%a in ( file.txt ) do (
    echo %%a
    echo %%b
    echo %%c
)
Автор: kirik64
Дата сообщения: 08.02.2010 00:58
Как организовать простейший цикл for...next?
Мне нужно сделать так:
Код: for i=1 to n
start /wait prog.exe
next
Автор: wolf0425
Дата сообщения: 08.02.2010 05:38

Цитата:
Туплю я...
а самосоятельно прочитать for /? - никак нельзя?
for /L %%i in (1,1,100) do start "" /w prog.exe
Автор: alexandrExt
Дата сообщения: 08.02.2010 07:10
Господа эксперты, подскажите пожалуйста, как можно решить такую задачу:
Есть N-ое количество обновлений для windows. Надо их устанавливать в определенном порядке. Можно ли и, если можно, то как сделать следующее:
1. создать файл со списком обновлений в формате: kb***** - без указания полного имени файла;
2. Организовать проверку установки - установлено данное обновление или нет;
3. Если не установлено, то установить, если установлено - пропустить.

Желательно со счетчиком (X установлено из Y).
Предусматривается обобщенный вариант потому, что обновления хотелось бы так устанавливать в Windows *** Ru и Eng.

Автор: slech
Дата сообщения: 08.02.2010 09:42

Цитата:

set arcdir=c:\progra~1\7-Zip
set arcprog=7z.exe
::
set m=06
set y=08
::
%arcdir%\%arcprog% a -t7z IIS_Logs_20%y%%m% ex%y%%m%*.log
del ex%y%%m%*.log
pause

подскажите пожалуйста как пробежаться в цикле по m=01-12 ?
спасибо.
Автор: Tase4ka
Дата сообщения: 08.02.2010 11:29
Помогите составить батник. А то я что-то совсем запуталась

Задача такая в каталоге хранятся файлы типа
fin-backup-100203-2.nbk
fin-backup-100204-2.nbk
fin-backup-100205-2.nbk
fin-backup-100206-2.nbk
Нужно удалить старые файлы при этом ограничиваем количество хранимых файлов 3 штуками. То есть если в каталоге больше 3-х файлов с именами тип *-2.nbk удаляем старые и оставляем тока три последних.
Я сама в корень запуталась. Помогите написать батничек.
Автор: wolf0425
Дата сообщения: 08.02.2010 11:55

Цитата:
как пробежаться в цикле по m=01-12 ?
проще вместо m сразу переменную цикла вставлять:

Код: set y=08
::
for %%m in ( 01 02 03 04 05 06 07 08 09 10 11 12 ) do (
    %arcdir%\%arcprog% a -t7z IIS_Logs_20%y%%%m ex%y%%%m*.log
    del ex%y%%%m.log
)
Автор: BagaBaga
Дата сообщения: 08.02.2010 12:13

Цитата:
[/q]
[q]BagaBaga

Код:
for /f "tokens=1,2* delims=," %%a in ( file.txt ) do (
echo %%a
echo %%b
echo %%c
)


Вероятно, я не правильно выразился. Количество элементов в строке (в файле) не известно. Т.е. в случае 3х Ваш код работает. В случае 4х и более - нет
Автор: Tase4ka
Дата сообщения: 08.02.2010 12:42
wolf0425, Спасибо огроменное! Это именно то что нужно :*
Автор: wolf0425
Дата сообщения: 08.02.2010 12:45

Цитата:
Количество элементов в строке (в файле) не известно.


Код: @echo off
set tk=1
:_repeat
for /f "tokens=%tk%* delims=," %%a in ( file.txt ) do (
    echo.%%a
    if "%%b" equ "" goto :eof
)
set /a tk += 1
goto :_repeat
Автор: BagaBaga
Дата сообщения: 08.02.2010 13:11
wolf0425,
спасибо!

а как еще лидирующие (начальные) пробелы убрать из %%a (если после запятой есть пробел перед символьной строкой, то он тоже выводится)
Автор: Keir
Дата сообщения: 08.02.2010 14:19
Доброго времени суток. Подскажите пожалуйста, как создать батник с записью в файл, но только если в файле отсутствует данная строка.

То есть например

@echo off
echo 127.0.0.1 localhost>>C:\Windows\System32\drivers\etc\hosts

как сделать, чтобы данная строчка записывалась в файл, только если она там отсутствует.

Заранее спасибо.
Автор: wolf0425
Дата сообщения: 08.02.2010 14:59

Цитата:
а как еще лидирующие (начальные) пробелы убрать
если пробел один - поменять печать на echo %%a
побочный эффект - на , , будет неадекват.
Если надо и много пробелов давить - могу придумать, но несколько громоздко.


Добавлено:

Цитата:
echo 127.0.0.1 localhost>>C:\Windows\System32\drivers\etc\hosts

как сделать, чтобы данная строчка записывалась в файл, только если она там отсутствует.
а строка известная или неизвестная?
если известная, то проверить и при отсутствии - записать

Код: find /i "127.0.0.1 localhost" C:\Windows\System32\drivers\etc\hosts || echo 127.0.0.1 localhost>>C:\Windows\System32\drivers\etc\hosts
Автор: BagaBaga
Дата сообщения: 08.02.2010 15:15
wolf0425,
я делал echo %%a

Просто, если в файле лежит
Раз Два, Три Четыре, Пять Шесть, Семь One

то выход будет

Код:
Раз Два
Три Четыре
Пять Шесть
Семь One
Автор: JohnRD
Дата сообщения: 08.02.2010 16:43
добрый день

подскажите пожалуйста, можно ли добавить текст из файла в другой файл только выше существующего текста

more file.txt >> file2.txt - это добавляет ниже существующего

спасибо
Автор: BagaBaga
Дата сообщения: 08.02.2010 17:00
JohnRD,
если оба файла существуют, то

copy /b f1.txt+f2.txt f3.txt
echo y | del f2.txt
ren f3.txt f2.txt
Автор: kirik64
Дата сообщения: 08.02.2010 18:58
wolf0425
Цитата:
а самосоятельно прочитать for /? - никак нельзя?
Читал, как же . Но у меня идиосинкразия к синтаксису дяди Билли. Благодарю.
Автор: wolf0425
Дата сообщения: 08.02.2010 19:12
BagaBagaможно и на батфайле, только то что приходит в голову - имеет проблемы проблемы со спецсимволами <> ^ %
если их не ожидается - то вроде работает.

Код: set tk=1
:_repeat
for /f "tokens=%tk%* delims=," %%a in ( file.txt ) do (
    call:_print %%a
    if "%%b" equ "" goto :eof
)
set /a tk += 1
goto :_repeat

:_print
echo %*
goto :eof
Автор: king_stiven
Дата сообщения: 08.02.2010 20:24
BagaBaga


Код: @echo off
set tk=1
:hjk
if not "%tk%"=="1" echo %tk1%
for /f "tokens=%tk%* delims=," %%a in (file.txt) do (
set tk1=%%a
goto uio
)
goto :eof
:uio
if "%tk1:~0,1%"==" " (
set tk1=%tk1:~1%
goto uio
)
set /a tk+=1
goto hjk
Автор: koshara1980
Дата сообщения: 09.02.2010 01:42
Подскажите, как в батнике убрать последний слэш \ в параметре %1?
Использую батник, которому Тотал передаёт %P, но CDImage.exe нужен путь без слэша, иначе ISO-образ не создаётся...
Автор: vtlseeker
Дата сообщения: 09.02.2010 02:51
set a=%1
echo %a:~0, -1%

Добавлено:
2 koshara1980
Автор: Mr_Hat
Дата сообщения: 09.02.2010 19:35
Пдскажите где ошибка.

есть батник для проверки наличия обновлений фильтров для блокировщика рекламы Ad Muncher

Код: @echo on
if not exist "C:\Program Files (x86)\Ad Muncher\">nul goto :error
if not exist "C:\Users\AnyKey\AppData\Local\Temp\AM*.adl">nul goto :EOF
taskkill /f /im "AdMunch.exe" /t
ren C:\Users\AnyKey\AppData\Local\Temp\AM*.adl AM.adl
move /y "C:\Users\AnyKey\AppData\Local\Temp\AM.adl" "C:\Program Files (x86)\Ad Muncher"
cd /d "C:\Program Files (x86)\Ad Muncher"
start AdMunch.exe
exit
:error
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "Update_AdMuncher_Filter" /f
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "Ad Muncher" /f
del /f /q C:\Windows\Utils\Update_AdMuncher_Filter.bat
Автор: king_stiven
Дата сообщения: 10.02.2010 10:38
Как передать в буфер обмена значение переменной не создавая текстового файла?
нашёл
http://www.petri.co.il/software/clip.zip
Автор: Vebsea
Дата сообщения: 10.02.2010 14:13
Помогите плз, есть проблема, сказали повторить тут:
Есть код:
ftp -s:1.txt
1.txt:
open xxx.xxx.xxx.xxx
Login
Password
mkdir ck
cd ck
LCD C:\
Теперь, мне нужно передать некий файл 1.rar с диска C на ФТП в каталог CK
Команда "Send" и "Put" не работает. Пишет:
"I won't open a connection to 0.0.0.0(only to 195.138.xxx.xxx(ну там мой IP))"
Как это решить? Все остальные FTP-клиенты нормально зхаходят и перекидывают.
Автор: wolf0425
Дата сообщения: 10.02.2010 17:17
Vebsea
literal PASV
send 1.rar
Автор: Vebsea
Дата сообщения: 10.02.2010 17:29
wolf0425
Не работает.
Автор: cluster
Дата сообщения: 10.02.2010 19:49
Vebsea
Должна работать команда PUT. Только что проверил на подобном примере.

Кстати, для того, чтобы не создавать отдельный файл с командами FTP, а использовать один только cmd-файл:


Цитата:
@ECHO OFF
MORE /e +8 < %~nx0 > tmp
FTP -s:tmp
DEL tmp
EXIT /b

:: FTP commands

open 192.168.1.201
login
password
..
bye

Цифра 8 в команде "MORE /e +8 < %~nx0 > tmp" означает число строк, после которых начинаются команды FTP
Автор: Vebsea
Дата сообщения: 10.02.2010 20:01
cluster
Не работает...

Цитата:
@ECHO OFF
MORE /e +6 < %~nx0 > tmp
FTP -s:tmp
DEL tmp
EXIT /b
::FTP Commands
open 195.216.243.32
x
x
literal PASV
mkdir ck
cd ck
put C:\1.rar
pause

Ни в пассивном режиме, ни так.
Автор: cluster
Дата сообщения: 10.02.2010 20:29

Цитата:
put C:\1.rar

А если так:

LCD C:\
put 1.rar
Автор: r00tik
Дата сообщения: 10.02.2010 22:56
for /f "skip=4 tokens=2,*" %%i in ('reg query "HKCU\software\microsoft\windows\currentversion\explorer\shell folders" /v desktop') do set desktop=%%j
for /f "skip=2 tokens=2,*" %%i in ('reg query "HKCU\software\microsoft\windows\currentversion\explorer\shell folders" /v desktop') do set desktop=%%j
echo %desktop%
Подскажите как заставить работать через ERRORLEVEL если в первом случае не удалось получить путь к рабочему столу(винхп) обработать второй и получить его (виста/7)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

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


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