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

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

Автор: isem
Дата сообщения: 10.08.2006 12:06
а как ето можно сделать?

просто не на тот язык переключился
Автор: fakel33
Дата сообщения: 10.08.2006 15:42
Помогите решить проблему.
В каталоге лежат текстовые файлы (имя может быть любым).
Нужно в каждом файле удалить третью строку и переложить полученные файлы в другой каталог.
Автор: KeyGen
Дата сообщения: 10.08.2006 15:52
Интересует такой вопрос:

Допустим имеется файл, c названием Test.exe (он более новый, чем другой Test.exe, который лежит в папке Folder).

Требуется заменить файл, но предварительно сделать backup старого (допустим в папку BAK).

Или же переименовать старый файл в Test.exe.BAK
Автор: isem
Дата сообщения: 10.08.2006 16:04
copy C:\folder1\test.exe C:\folder1\test.exe.bak
copy C:\folder\test.exe C:\folder1\test.exe
И все

Добавлено:

или так
copy C:\folder1\test.exe C:\folder1\bak\test.exe
copy C:\folder\test.exe C:\folder1\test.exe

Работает под ХР и 2000
Проверял лично
Автор: Smitis
Дата сообщения: 10.08.2006 16:26
isem

Цитата:
Можно ли батом сделать так, чтоб в текстовом файле найти строку с заданім текстом и все что віше єтой строки удалить?

В цикле (for /?) перебираешь все строки файла. Пока не встретишь строку с текстом, строки пропускаешь, затем пишешь оставшиеся строки в другой файл.
Но батники плохо приспособлены для обработки текста. Могут возникнуть проблемы со специальными символами.
Автор: isem
Дата сообщения: 10.08.2006 18:00
Smitis

А можно на примере, пожалуйста, а то никак не разберусь
Автор: 01MDM
Дата сообщения: 10.08.2006 19:36
Помогите, никак не разберусь. Как узнать имя текущего каталога без полного пути?
Автор: ViSiToR
Дата сообщения: 10.08.2006 22:13
01MDM

Цитата:
Как узнать имя текущего каталога без полного пути?

Не совсем понятен вопрос - что значит узнать имя текущего каталога?! если нужно вывести на экран это имя, то можно так:


Код: for /f %%I in ('cd') do echo %%~nI
pause
Автор: abz
Дата сообщения: 10.08.2006 22:45
ViSiToR

Цитата:
for /f %%I in ('cd') do echo %%~nI
pause


А если нужно вписать его в файл, то так:


Код:for /f %%I in ('cd') do echo %%~nI > File.txt

Не работает. Пишет:

Цитата:
Режим вывода команд на экран (ECHO) включен.
Автор: ViSiToR
Дата сообщения: 10.08.2006 23:21
abz

Цитата:
Не работает. Пишет:

Как я понимаю, проверка была сделанна в командной строке, а пример этот для батника - чтобы отображалось правильно в командной строке, нужно чтобы был один знак процента, а также, нужно сначало задать какой-то каталог:


Код:
cd "c:\program files"
for /f "delims=" %I in ('cd') do echo %~nI
Автор: 01MDM
Дата сообщения: 11.08.2006 00:33
2 abz
2 ViSiToR

Спасибо за подсказ.
Получилось.


Код:
@ECHO OFF

for /f %%I in ('cd') do (
    dir /b *.mp3 >> %%~nI.lst
    dir /b *.mp3 >> %%~nI.m3u
)    
Автор: 01MDM
Дата сообщения: 11.08.2006 08:07
Если быть более точным то

Код:
for /f "delims=\" %%I in ('cd') do ...
Автор: tim87
Дата сообщения: 11.08.2006 11:18
Привет!
Задача следующая.

Есть две программы, test.exe и server.exe. Я хочу запустить их в конвейере и проверить код возврата КАЖДОЙ из них. Вариант ниже не проходит, как быть?

(test.exe || echo test.exe failed) | server.exe || echo server.exe failed
Автор: sonic2
Дата сообщения: 11.08.2006 19:50
Так никто не скажет как из переменной
откинуть последние 10 символов и передать в другой батник ?
Автор: Kirillhome
Дата сообщения: 11.08.2006 20:01
sonic2
Например, так:

set my_do=%1%
SET my_posle=%my_do:~0,-10%


т.е. переменной my_do присваиваем первый параметр, а потом берем оттуда всё, кроме последних 10 символов...
Автор: hacsoft
Дата сообщения: 12.08.2006 21:38
Есть файл (например, text.txt).
Надо заменить в этом файле все подстроки TEST на ****
Как реализовать?
Автор: ViSiToR
Дата сообщения: 12.08.2006 22:35
Народ, может кто-то плиз помочь:

Нужно сравнить дату изминения файла в сети (по сссыкле), с указанной датой, и если дата изминения файла, является ранней чем указанная, то что-то должно делаться, если дата является поздней чем указанная (т.е файл был изменён позже чем указанная дата), то должно делаться что-то другое ... можно такое реализовать на батнике? если да, то как?
Автор: GarEx
Дата сообщения: 13.08.2006 14:57
Добрый день!
Подскажите, плз, как сделать, чтобы созданная вручную и запущенная служба постоянно возвращала параметр (0 или 1). У меня ко такой:

wnld
timeout /T 2 /nobreak
set T=1
pslist | find "F1Download" > NUL
if %errorlevel%==1 goto Dwnld
if %errorlevel%==0 set T=0

Но не работает. Мне надо, чтобы когда служба работает, она постоянно выдывала значение 0 или 1. В зависимости от того запущен процесс или нет. Нужно его считывать непосредственно в windows. Т.е. служба работает, а я в ком. строке отслеживаю значение Т и в зависимости от него решается, запускать ли следующий процесс или нет.
Автор: KapralBel
Дата сообщения: 14.08.2006 10:02
GarEx

Код: @Echo Off
SC Queryex Alerter |Find /i "state " >Temp.srv
Find "4" Temp.Srv
If ErrorLevel 1 GoTo :NotRun
If ErrorLevel 0 GoTo :Run
Автор: GarEx
Дата сообщения: 14.08.2006 10:05
Спасибо!
Автор: hacsoft
Дата сообщения: 14.08.2006 10:38
А на счет замены строк в файле ни кто не знает?
Автор: ALEF
Дата сообщения: 14.08.2006 14:27
hacsoft
munge.exe (по-моему она из Resource Kit)
Автор: Refugee
Дата сообщения: 14.08.2006 19:46
hacsoft
%windir%\Application Compatibility Scripts\acsr.exe
http://support.microsoft.com/kb/187627/en-us
Автор: Smitis
Дата сообщения: 14.08.2006 23:36
hacsoft
МАЛЕНЬКИЙ ликбез по обработке строк и текстовых файлов, а то что-то много вопросов
На сначала ПРЕДУПРЕЖДЕНИЕ:

Командный процессор имеет весьма ограниченные возможности по обработке содержимого текстовых файлов. Все его средства ореентированы в первую очередь на обработку различных системных текстовых файлов (например логов) с чёткой и простой структурой строк. На ПРОИЗВОЛЬНЫХ текстовых файлах, содержащих специальные символы (те же кавычки, например) процессор легко обламается. Могут возникнуть проблемы и с национальными кодовыми таблицами.
И это всё только для линейки NT - NT4, 2000, XP, 2003... (NT4 с ограничениями). Командный процессор для Windows9x/ME не имеет даже этих возможностей.

1. Основная команда для обработки текстовых файлов: for /f
Напрмер:

Код:
for /f "delims=" %%s in (aaa.txt) do call :sss "%%s"
goto:eof
:sss
:: Сдесь обрабатывается строка из файла
echo %~1
Автор: ViSiToR
Дата сообщения: 15.08.2006 00:34
Smitis
А теперь можешь пожалуйста привести пример батника, который будет в файле, например test.txt, заменять состав определённой строчки на что-то другое.
Т.е, вот к примеру состав файла test.txt:


я строка с неважным текстом...
а я другая строка, тоже с неважным текстом...
а я строка, с очень важным текстом... замените меня пожалуйста на что-то инное (например, на «я изменённая строка»)


И как должен выглядеть батник, который будет заменять строку «а я строка, с очень важным текстом... замените меня пожалуйста на что-то инное», на такую «я изменённая строка» ?

А то что-то до меня никак не доходит, как-же использовать всё руководство которое ты привёл в своём посте .
Автор: vu1tur
Дата сообщения: 15.08.2006 00:52
ViSiToR
А критично это делать средствами _только_ станартных команд? Есть замечательные утилитки sed, grep и пр.
Автор: ViSiToR
Дата сообщения: 15.08.2006 00:59
vu1tur

Цитата:
А критично это делать средствами _только_ станартных команд?


Это не критично, просто хочю научится делать это именно средствами одного лишь бтника.. я могу реализовать это и совсем инными средствами, но хочю именно батниками

Добавлено:
Может кто знает, как делать поиск опредллённого слова в файле, но само слово поиска, должно быть кириллицей...
Например, вот такая команда, найдёт строчку содержащую слова «Hello world», в файле test.tmp:


Код: find /i /c "Hello World" "test.tmp" | find /c "": 0"" > f.tmp
for /f %%i in (f.tmp) do if %%i==0 echo ok > ok.tmp
del /q f.tmp & exit
Автор: KapralBel
Дата сообщения: 15.08.2006 09:22
ViSiToR
Если тебе надо кириллицу
Либо создавай батничек в кодировке 866, а не 1251
Либо в начале батничка давай команду CHCP 1251
Автор: xlebopezka
Дата сообщения: 15.08.2006 10:50
Создаю CMD файл, в нем одна команда shutdown -s -f.
Если запускаю файл, в консоли получается примерно следующее

c:\...>shutdown -s -f
c:\...>shutdown -s -f
c:\...>shutdown -s -f
.....

и так добавляется непрерывно, хотя если эту же команду написать в консоли все корректно работает.
Автор: Ruslan FM
Дата сообщения: 15.08.2006 12:32

Цитата:
Создаю CMD файл, в нем одна команда shutdown -s -f.
Если запускаю файл, в консоли получается примерно следующее

c:\...>shutdown -s -f
c:\...>shutdown -s -f
c:\...>shutdown -s -f

назови его иначе не shutdown
или запускай shutdown.bat или shutdown.cmd
замени shutdown -s -f на shutdown.exe -s -f

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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