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

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

Автор: igor_andreev
Дата сообщения: 17.04.2006 12:02
Allex_Van_Fogen

Цитата:
Заменить в текстовом файле все символы "!" на "^!" - похоже нереально решить


Код:
@ECHO OFF
SET MY_STRING=Yesss...!
SET MY_STRING=%MY_STRING:!=^^^^^!%
ECHO %MY_STRING%
PAUSE
Автор: KapralBel
Дата сообщения: 17.04.2006 13:06
3xp0

Код:
@Echo Off
Set count=0

Rem имя файла в котором меняются строки
Set name=DeleteFlag.cmd

Rem Строка, которая меняется
Set strSearch="!"

Rem Строка, на которую меняется
Set strReplace="^!"

Rem Путь, где ищутся файлы
Set pPath="C:\Program Files\DU\!\"


For /R %pPath% %%a In (*.*) Do Call :_Find %%~nxa "%%a"
Echo Общее кол-во отредактированых файлов: %count%
GoTo :EOF

:_Find
If /i %name% NEQ %1 GoTo :EOF
gsar -s%strSearch% -r%strReplace% %2 -o >Nul
Echo Successfuly Edited: %2
Set /a count=%count%+1
GoTo :EOF
Автор: cluster
Дата сообщения: 17.04.2006 14:10
KapralBel

Цитата:
Если ХП , то что выдает у тебя
Echo %Date% >Log - от этого зависит что надо записать

Выдаёт в файле Log 17.04.2006 В принципе, устраивает и такой формат, но если можно, то год 06.
А как убивать пустые каталоги?
Автор: KapralBel
Дата сообщения: 17.04.2006 14:14
cluster
Тебе исключительно средствами батника?
Автор: cluster
Дата сообщения: 17.04.2006 14:18
KapralBel
Думаю, если прибавится в каталоге мелкая тулза, особо комплексовать не стану
Автор: KapralBel
Дата сообщения: 17.04.2006 14:38
cluster
DirUse <Folder> /q:0 из SupportTool
Возвращает по ErrorLevel - 1 если размер папки больше 0 и 0 если равен 0
Автор: cluster
Дата сообщения: 17.04.2006 14:43
KapralBel
Пасиб, буду разбираться
Автор: slech
Дата сообщения: 17.04.2006 14:46
KapralBel
Как всегда спасибо.
Автор: 110465
Дата сообщения: 17.04.2006 16:00
shibog


>а кто объяснит, как заставить правильно работать в cmd.exe строку
>if exist *.* echo Files exist
>сообщение выводится независимо от наличия файлов в каталоге.
>Проявляется в ОС win2000, XP, win2003server

Сам озаботился этой проблемой и вот какой вариант ещё нашел:

dir/a-D/b h:\otchet\01_QWEEK\ |findstr ".">nul || goto nul

rem если есть файлы, выполняем эту строку

:nul


Автор: Serge2005
Дата сообщения: 17.04.2006 16:27
slech
Спасибо....
KapralBel
Ну да...но этого было малова-то
Вот что сделал:

Код:
set tagfile=\WIN51IP.SP1
FOR %%a IN (c d e f g h i j k l m n o p q r s t u v w x y z) DO (
DIR %%a:\
if not ErrorLevel 1 if exist "%%a:%tagfile%" set disk=%%a:
)
cd /d %disk%\Distr
Автор: Pushkir
Дата сообщения: 17.04.2006 17:26
Вот тут много говорили о всяких батах, амне всего-то надо написать такой бат, чтобы программа, в нём прописанная, запускалась через какое-то время после запуска самого бата, т.е. с задержкой. Пример можете написать plz.
Автор: cluster
Дата сообщения: 17.04.2006 21:29
KapralBel

Цитата:
DirUse <Folder> /q:0 из SupportTool
Возвращает по ErrorLevel - 1 если размер папки больше 0 и 0 если равен 0

А мне нужно убить ВСЕ пустые каталоги в папке. Как в таком случае команда будет выглядеть?

Код: DirUse <Folder> /q:0
IF ERRORLEVEL 0 rd <Folder>
Автор: 3xp0
Дата сообщения: 18.04.2006 00:42
KapralBel
Да я то сам не против. Просто запрещено.
Тот пример сверху, он будет работать? Я его чуточку переделаю и пошлю тебе в ПМ, если то, что сверху рабочее, ок?
Автор: Allex_Van_Fogen
Дата сообщения: 18.04.2006 08:58
KapralBel

Так заменять я и в Word-е смогу ;) Сделать такое без 3rd party tools нереально - уточняю свое предыдущее заявление..

Добавлено:

Цитата:
@ECHO OFF
SET MY_STRING=Yesss...!
SET MY_STRING=%MY_STRING:!=^^^^^!%
ECHO %MY_STRING%
PAUSE


Супер! А теперь попробуйте засунуть это вовнутрь цикла в котором, кроме всего прочего надо ещё чего нибудь присваивать.

Вот последний, очень извратный вариант скрипта для этого. Работает, НО! только с мелкими (5-10 строк) файлами.


Код:
@echo off
setlocal
rem Создаем файл для примера, и пытаемся заменить в нем все знаки "!" на "^!"
if exist problem.txt goto :SkipCreate
echo Hello, World!>problem.txt
echo Ahtung!!! Eine, Zwai. Drai...>>problem.txt
echo "It's very interesting!">>problem.txt
echo My password="Ready for battle!">>problem.txt
echo [HKEY_CURRENT_USER\Software\RIT\The Bat!]>>problem.txt
echo "LNK_ST"="E:\\USERS\\Ivanov\\SendTo\\The Bat!.LNK">>problem.txt
:SkipCreate
for /f "tokens=* delims=" %%a in (problem.txt) do (
set tempstr=%%a
setlocal ENABLEDELAYEDEXPANSION
call :SetEsc !tempstr!
setlocal DISABLEDELAYEDEXPANSION
)
endlocal
goto :EOF

:SetEsc
setlocal DISABLEDELAYEDEXPANSION
set mark=
set tmpstr=%*
set mark=%tmpstr:*!=%
if not defined mark set mark=0
set mark=%mark:~0,1%
set mark=%mark:"=*%
if %mark%.==*. (set mark=1) else set mark=
if defined mark (
set tmpstr=%*
set result=%tmpstr:!=^!%
) else (
set tmpstr="%*"
set result=%tmpstr:!=^^^^!%
)
echo %result%>>noproblem.txt
setlocal ENABLEDELAYEDEXPANSION
goto :EOF
Автор: igor_andreev
Дата сообщения: 18.04.2006 11:18
Allex_Van_Fogen
Для начала без изврата попробуй
Ты разрешаешь ENABLEDELAYEDEXPANSION и вызываешь метку батника :SetEsc, передаешь ей строку в качестве параметра

Цитата:
setlocal ENABLEDELAYEDEXPANSION
call :SetEsc !tempstr!

а в метке :SetEsc первой же строкой делаешь DISABLEDELAYEDEXPANSION

Цитата:
:SetEsc
setlocal DISABLEDELAYEDEXPANSION

Смысл?
Автор: Smitis
Дата сообщения: 18.04.2006 14:39
cluster
Батник для прибивания пустых папок в текущей, в том числе и вложенных. Пустой считается папка, не содержащая файлов, но которая может содержать другие пустые папки.

Код:
@echo off
set _tmp1_=_list_1.tmp
set _tmp2_=_list_2.tmp
dir /b/s /ad /on > %_tmp1_%
sort /r < %_tmp1_% > %_tmp2_%
for /f "delims=/" %%d in (%_tmp2_%) do rmdir "%%d" 2> nul
del /q %_tmp1_%
del /q %_tmp2_%
Автор: cluster
Дата сообщения: 18.04.2006 16:07
Smitis
Ну, спасиба. Дома попробую.

Можно сделать такой скриптик:
Вводим имена пользователей (например, 3 человека), а затем для каждого из них выполняется одинаковый набор команд (например, создание папки с именем пользователя)?
Автор: B rom
Дата сообщения: 21.04.2006 08:42
Доброго дня, возникли проблемы с кодами возврата ping под 98SE, собственно говоря погоже, что ОС вообще их не возвращает.Организовать баш файл, который мапит сетевые диски, но при этом вначале с помощью пинга проверяет доступность хоста, под ХП все четко, переложил на 98, отлуп. Проверил скриптом errolevel пинга, вообще нет ответа. Помогите с решением, действительно ли проблемы с errolevel, или под 98 нужно пофиксить код?
ping /n 1 ля.ля.ля.ля >nul
if not errorlevel 1 goto map хост
echo Host Unreachable
goto далее
:map хост
net use t: \\хост\d >nul
Или альтнрнативный вариант с проверкой доступности хоста?
Автор: andrbir
Дата сообщения: 21.04.2006 10:14
Доброго времени суток, уважаемые!

Не посоветуете, как штатными средствами узнать, в онлайне ли компьютер или нет (находится в одной локальной сети) зная ip?

И если невозможно штатными средствами (ну, например результатом возврата ping-ом значений), как бы попроще узнать это?
Автор: KapralBel
Дата сообщения: 21.04.2006 10:17
3xp0

Цитата:
от пример сверху, он будет работать? Я его чуточку переделаю и пошлю тебе в ПМ, если то, что сверху рабочее,

Скидывай
Все что я тут выкладываю я сначала проверяю

PS. сейчас нет времени на разработку батничков без доп.средств
Автор: B rom
Дата сообщения: 21.04.2006 10:20
andrbir

Да сразу над головой мой пост посмотри
Автор: KapralBel
Дата сообщения: 21.04.2006 10:21
andrbir
см. предыдущий (перед твоим) пост от B rom
Автор: andrbir
Дата сообщения: 21.04.2006 11:20
Точно, спасибо, все работает.
Автор: bornbill
Дата сообщения: 25.04.2006 15:38
только начал изучать данный вопрос но есть такая маленькая задачка
есть сеть
надо в текущей группе обойти все компутеры и просмотреть на них все шары и найти в них все *.avi соответственно записав всё в файлик

как пониаю надо отталкиватся от net view но как потом файлик разобрать и вызвать с именем каждого компутера непонятно....

Заранееблагодарен..
Автор: AirArt
Дата сообщения: 25.04.2006 19:13
имеется прога imagetool

нужно батник, чтобы при перетаскивании на него файла вида 123.bmp прогой imagetool менялся формат файла из 32bit в DXT3 и сохранался как 123.bmp
Автор: bdfy
Дата сообщения: 25.04.2006 20:44
Есть консольный конвертер, работающий из ком. строки типа
iwitodds.exe file.iwi
Как бы его заставить обработать все файлы в папке (естественно маску * он не понимает ) ? Батник может помочь или в програмирование податься ?
Автор: Smitis
Дата сообщения: 25.04.2006 23:36
bdfy

Цитата:
Есть консольный конвертер, работающий из ком. строки типа
iwitodds.exe file.iwi
Как бы его заставить обработать все файлы в папке (естественно маску * он не понимает ) ? Батник может помочь или в програмирование податься ?

Хелп
FOR /?
Пример (для батника):
for %%f in (*.*) do iwitodds.exe %%f
если не в батнике, а непосредственно в комстроке, вместо %%f надо писать %f
Автор: jak_forest
Дата сообщения: 26.04.2006 08:35
bornbill
опять же тебе должен помочь for
например вывод построчного содержимого файла:
for /f %%i in (file.txt) do echo %%i
даелее смотри на свои вспомагательные утилитки, что они позволят тебе посмотреть

AirArt
??? [qoute]нужно батник, чтобы при перетаскивании на него файла вида 123.bmp прогой imagetool менялся формат файла из 32bit в DXT3 и сохранался как 123.bmp[/quote]
а эта программа понимает параметры командной строки?
и я еще ни разу не слышал, чтобы делали нужно батник, чтобы при перетаскивании на него...
может как-то по другому сформулирушеь задачу и побольше исходных данных дашь....
Автор: Serge2005
Дата сообщения: 26.04.2006 10:28
Есть скрипт, например такой:
[more]SET TEM2=%systemdrive%\InstallSFSerge
SET tagfile=\WIN51IP.SP1
FOR %%a IN (c d e f g h i j k l m n o p q r s t u v w x y z) DO (
DIR %%a:\
if not ErrorLevel 1 if exist "%%a:%tagfile%" set disk=%%a:
)
cd /d %disk%\Distr\SF

forge80_enu02.msi

mkdir %TEM2%
copy "crack\keygen.exe" "%TEM2%\" /y
copy "crack\reg02.exe" "%TEM2%\" /y
cd /d %TEM2%
start /wait reg02.exe
regedit /s license01.reg
cd %systemdrive%\Program Files
rmdir /s /q %TEM2%[/more]
Как сделать сохранение лога выполнения этого скрипта в %SystemDrive%\log01.txt?

Добавлено:
Есть папка dir1 где-то на компе (путь известен). В ней лежат 01.cmd, 01.exe и еще что-нить. в 01.cmd прописано start /wait 01.exe. Если запускать смд из этой папки, то все ок. А если из другого места, то фигня получается. Рабочий каталог не тот. Как рабочим каталогом сделать папку dir1? Без cd /d путь к папке. В общем как програмно узнать местоположение запущенного смд файла?
Автор: antsh85
Дата сообщения: 26.04.2006 10:55
Народ, я что-то не понимаю как работают регулярные выражения в батнике. Можно пару примеров?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Вернуть библиотеку АТМ (поддержка шрифтов Type 1)


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