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

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

Автор: dimpase
Дата сообщения: 10.10.2008 11:53
Скажите как сделать чтоюы в батнике буквы и знаки не путались,например мне надо вытащить инфу под строкой
12,она находится первая сверху,есть еще строка 125,онанаходится последняя,дак вот .Мне надо вытащить то что под строкой 12 а он мне дергает то что под 125.Тоесть как я понял он принимает во внимание только первую букву??как это обойти?
Автор: VitRom
Дата сообщения: 10.10.2008 13:42
NIKZZZZ, навскидку (всех особенностей каждой не помню):
1) с Ghost идёт gdisk (и gdisk32)
2) в дистре FreeDOS есть fdisk и pfdsik
3) в дистрах xBSD есть каталог tools кажется
4) ещё вспоминается fips
Автор: Shadowland
Дата сообщения: 10.10.2008 13:58
2Nagual
может всёже ответите на вопрос заданный дважды - а именно - куда вспихивать название этой самой обрабатываемой папки ?? (теперь - трижды...)

изврат или нет - у меня есть и другие кэши... - доделайте пожалуйста скрипт...

заранее спасибо
Автор: dimpase
Дата сообщения: 10.10.2008 14:21
!!!МУЖИКИ!!! СПАСАЙТЕ!!!

Цитата:
Скажите как сделать чтоюы в батнике буквы и знаки не путались,например мне надо вытащить инфу под строкой
12,она находится первая сверху,есть еще строка 125,онанаходится последняя,дак вот .Мне надо вытащить то что под строкой 12 а он мне дергает то что под 125.Тоесть как я понял он принимает во внимание только первую букву??как это обойти?

Автор: avkorets
Дата сообщения: 10.10.2008 15:15

Цитата:
01MDM

спасибо за подсказку, а как этот счетчик впихнуть сюда??чот не получается...

Цитата:
@echo off
setlocal enabledelayedexpansion
for %%i in (*.txt) do (
set /p firstline=<%%i
echo !firstline!>> 1.tmp
for /f "skip=1 tokens=1-8 delims=;" %%a in (%%i) do (set x=%%d
if not "!x!"=="40817810200055100054" (
echo %%a;%%b;%%c;%%d;;;;%%f;;%%e;%%g;%%h>> 1.tmp
) else (
echo %%a;%%b;%%c;;%%d;;;%%f;;%%e;%%g;%%h>> 1.tmp
)
)
move /y 1.tmp %%i
)

как видно у меня здесь идет просто сравнение значения переменной %%d.
Было бы точнее сравнить именно количесвто символов т.е. если в пременной %%d 20 символов (в данном случае) то условие "!x!"=="20" выполняется....
Автор: Nagual
Дата сообщения: 10.10.2008 15:31
Shadowland
ессно вместо %temp% ставь свой каталог ...\cach4
сейчас пока нет времени, как будет, допишу
Автор: dimpase
Дата сообщения: 10.10.2008 15:33
Ребята спасибо вам огромное за вашу помощь!!!
САМ додумал.
чужая голова хорошо а своя лучше!!!
Автор: ilicho42
Дата сообщения: 10.10.2008 15:44
Доброго времени суток!
Решил облегчить себе жизнь, но как то получилось не очень...
В сети есть несколько проксиков и нужно перевести пользователей qip с одного проксика на другой. Хранит qip конфиг в текстовом файле и для перевода qip на другой прокси-сервер нужно всего лишь заменить там несколько строк.
Вот что я написал для этого:

1.bat (поиск файлов config.ini на диске С):

@echo off
dir C:\ /s /b | find "config.ini">list001451.txt
call 2.bat

2.bat (привожу пути к файлу в вид, понятный команде cd):

@echo off
for /f "tokens=*" %%b in ('more^<list001451.txt') do call :_replace1 %%b
del list001451.txt
rename new.txt list001451.txt
call 3.bat
goto eof
:_replace1
set i=%*
echo %i%
set i=%i:Config.ini=%
echo %i%>>new.txt
:eof

3.bat (ну и тут собственно открытие файлов config.ini, поиск и замена нужных строк):

for /f "tokens=*" %%f in ('more^<list001451.txt') do cd %%f&call :_replace0
:_replace0
for /f "tokens=*" %%a in ('more^<config.ini') do call :_replace %%a
del config.ini
rename new.ini config.ini
goto eof
:_replace
set i=%*
echo %i%
set i=%i:Port=5190=Port=443%
set i=%i:ProxyType=NONE=ProxyType=HTTP(S)%
set i=%i:ProxyHost==ProxyHost=192.168.130.8%
set i=%i:ProxyHost=192.168.130.18=ProxyHost=192.168.130.8%
set i=%i:ProxyPort==ProxyPort=3128%
set i=%i:ProxyAyth=No=ProxyAuth=Yes%
echo %i%>>new.ini
:eof

Может это не совсем красиво, но как смог...
Как видно изменение строк сторок идёт в 3м батнике и нужно (например) изменить строку Port=5190 на Port=443. Так вот вопрос: как заэкранировать знак = ? Пробывал делать так: Port^=5190=Port^=443, но при такой компоновке он не воспринимает строку Port=5190 и соответственно не заменяет её.
Блин, такую работу проделал и на такой ерунде запоролся
Заранее спасибо за помощь!
Автор: NIKZZZZ
Дата сообщения: 10.10.2008 16:12
VitRom

Цитата:
с Ghost идёт gdisk (и gdisk32)

Скачал полную версию, была обрезанная (без gdisk32).
Посмотрел, вроде есть все, что надо, главное не сложно вытащить инфу о диске.

Цитата:
ещё вспоминается fips

??? не нашел.



Автор: VitRom
Дата сообщения: 10.10.2008 17:37
NIKZZZZ
почти всё в куче здесь и "дедушка" здесь

ЗЫ. а сам гдиск от гдиск32 (и наоборот) не зависит, просто смотря откуда (из Вин или ДОС) работать будешь
Автор: avkorets
Дата сообщения: 10.10.2008 17:40
Ребят подскажите как исправить код чтоб работал корректно?

Цитата:

for %%i in (%workd%\?4??????.*) do (
start /wait C:\x\x\copyftp.exe %workd%\%%~nxi
move %workd%\%%~nxi c:\x\received_files
pause
)

суть в чем, если при обработке последнего файла в директории %workd% в эту директорию подсунуть еще один файл то этот файл мувиться, но copyftp.exe его не обрабатывает....
Автор: VitRom
Дата сообщения: 10.10.2008 17:43
(deleted)
Автор: Nagual
Дата сообщения: 10.10.2008 22:36
Shadowland
Код:
@echo off
set d=400
set temp=c:\TEMP\opera\opcache4
:st
for
/f "tokens=3" %%a in ('dir/s "%temp%"^|findstr/i д ©«®ў') do set "f=%%a"
set /a f=%f%/1024 2>nul
if
%d%
geq %f% sleep 3600&goto:st
set p="%systemdrive%\%username%"
if exist %p% rd/s/q %p%
md %p%
robocopy %temp% %p%
/create /min:1048576
robocopy %p% %temp% /mov /max:1
robocopy %temp% %p% /mov /max:1
if exist %p% rd/s/q %p%
sleep
3600&goto:st
будет работать на русской винде
для последнего пожелания изучай robocopy внимательно
Автор: ruslanjuve
Дата сообщения: 10.10.2008 23:51
> imeiu 5 file-ov .txt (1.txt,2.txt,3.txt,4.txt,5.txt) ,vopros takoi , kak mne vse texti iz atih files vpihnuti v odin file - results.txt , i text kajdovo file bil razdelean poloskoi ili isheo cem nibuti :


primer > :

results.txt >

1 ( - file name )
fdsfsdfdsfdsfdsfdsfds
fdsfdsfdsgdggfgfdgfd

---------------------------

2 ( - file name )
uikuiluiluilulkljkljkljkljk
ljkljkljklkjljkljkljkljklkjl

----------------------------

.
.
.

i tak dalee ...

o4eni nujno .. spasiba !

> ho4iu otoslati 4erez blat (mail) ...

Автор: Shadowland
Дата сообщения: 11.10.2008 08:48
2Nagual
подскажите пожалуйста где добыть это самое robocopy а ?
Автор: Nagual
Дата сообщения: 11.10.2008 14:44
Shadowland
тут
только потом не спрашивай, где взять sleep
Автор: Nagual
Дата сообщения: 11.10.2008 16:59
ruslanjuve
copy/b 1.txt + 2.txt + 3.txt + 4.txt + 5.txt results.txt
Автор: SERGE_BLIZNUK
Дата сообщения: 11.10.2008 18:07
Nagual,
такой вариант не вставит в результирующий файл имена файлов, как того хотел ruslanjuve...
Автор: reff
Дата сообщения: 11.10.2008 18:08
2 ALL
Дано: консольная утилита purejpeg, затирающая EXIF в фотографиях по команде "purejpeg.exe file.jpg" и каталог с сотней снимков.
Вопрос: каким образом можно скормить утилите весь каталог?

Автор: ruslanjuve
Дата сообщения: 11.10.2008 18:10
SERGE_BLIZNUK +1

Добавлено:
Takoi vopros , blat.exe mojet otsilati attach (rar) ?
Автор: U235
Дата сообщения: 11.10.2008 18:42
reff
Как-то так (с учетом всех подпапок):

Код: FOR /R C:\MY_PHOTO_DIR %I IN (*.jpg) DO purejpeg.exe %I
Автор: reff
Дата сообщения: 11.10.2008 21:26
U235
Подправил путь, запустил ваш код и получил ошибку: "Непредвиденное появление: I." Кстати, нельзя ли отказаться от указания каталога? С моей точки зрения более удобный вариант — копирование исполняемого файла и скрипта в каталог с фотографиями.
Автор: U235
Дата сообщения: 11.10.2008 22:13
reff

Цитата:
"Непредвиденное появление: I."

Правильно, если эта строчка будет в bat-файле, то знаки % нужно задублировать - %%, если выполнять строчку из консоли - тогда ничего не надо менять.

Цитата:
Кстати, нельзя ли отказаться от указания каталога?

Можно.
Автор: reff
Дата сообщения: 12.10.2008 06:35
U235
Удвоил число знаков "%" и всё заработало. Положительный результат наблюдается 'на глубине' трех подкаталогов.
Спасибо Вам.
Автор: drug2k55
Дата сообщения: 12.10.2008 20:27
Добрые люди подскажите. Решил написать вопрос тут, но возможно уже поднималась похожая тема, просто рыскать в таком колличестве информации просто не реально.
Вобщем требуется батник со следующим функционалом:
Запуск консольного Rar(rar.exe) с архивацией определенных папок, на выходе файл архива с именем archive_текущая дата.rar
после этого в папке где успешно! был создан архив будет находится еще 8 архивов с теми же параметрами, при этом нужно будет удалить 1 архив с более ранней датой, вот собсна и все. Как такое сделать?
Автор: vu1tur
Дата сообщения: 12.10.2008 20:35
drug2k55
nnCron
Автор: U235
Дата сообщения: 12.10.2008 22:15
drug2k55

Цитата:
был создан архив будет находится еще 8 архивов с теми же параметрами, при этом нужно будет удалить 1 архив с более ранней датой, вот собсна и все.

Можно попробовать так:

Код:
DIR /B /O-D archive_*.rar > a.tmp
FOR /F "skip=7" %I IN (a.tmp) DO DEL %I
DEL a.tmp
Автор: iamantbk
Дата сообщения: 13.10.2008 02:49
Как сделать архив, который содержит все файлы, кроме одного конкретного?

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

Расширение у этого файла не уникальное для этой папки - только имя.
Автор: U235
Дата сообщения: 13.10.2008 06:00
iamantbk

Цитата:
Как сделать архив, который содержит все файлы, кроме одного конкретного?

Первый вариант:
1. Перенести этот конкретный файл в другую временную папку
2. Заархивировать все файлы
3. Вернуть файл обратно.
Второй вариант:
использовать FOR и IF совместно.
Автор: KapralBel
Дата сообщения: 13.10.2008 11:06
Насколько я помню в RAR есть опция - исключения файлов из архивации либо в коммстроке, либо через файл список

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Сброс пароля администратора


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