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

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

Автор: Smitis
Дата сообщения: 07.09.2008 15:19
Skus

Цитата:
Как передать в переменную X число месяц год из
программы curtime32.exe сколько ни пробывал
ничего не получается. Подскажите пожалуйста как нужно

Это консольная программа?
Что она выводит на экран (в каком формате)?
Если просто дату и время, не будет ли лучше использовать переменные %date% и %time%?
Автор: azamapendrus
Дата сообщения: 07.09.2008 17:40
Нужно удалять файлы, расширения которых будут записаны в текстовом файле.
Пример:
echo on
for %%a in (q w e r t y u i o p s d f g h j k l z x c v n m) do if exist %%a: del/q %%a:\*bin

Нужно, чтобы батник брал список удаляемых файлов из DEL.txt , написанных каждый на новой строчке.
Автор: king_stiven
Дата сообщения: 07.09.2008 19:22
azamapendrus
Приведи пример из DEL.txt
Автор: Dekabryi
Дата сообщения: 08.09.2008 05:48
azamapendrus

Цитата:
for %%a in (q w e r t y u i o p s d f g h j k l z x c v n m) do if exist %%a: del/q %%a:\*bin

for %%a in (del.txt) do if exist %%a: del/q %%a:\*bin
Так не пойдет ?
или
for f "eol=; token=1" %%a (del.txt) do if exist %%a | del /q %%a *.bin
Автор: Nagual
Дата сообщения: 08.09.2008 12:58
VitRom

Цитата:
<Win+R>cmd<enter>reg query /?<enter>

Код:REG QUERY Раздел [/v Параметр | /ve] [/s]



ЗЫ. а вот вывод уже разобрать с FOR (можно указать delims=<tab>)

о каких сложностях ты говоришь?
приведи рабочий код задачи
запускать консоль и т.д. мы и так умеем
Автор: avkorets
Дата сообщения: 08.09.2008 23:55
Есть файл
в файле много строк
необходимо вытащить определнный блок из cтроки и переместить в другое место строки
строки типа
дд.мм.гггг.час.мин.1234;ххххх;12346/123456789;уууу;;810;ххххх
нана так
дд.мм.гггг.час.мин.1234;ххххх;;уууу;12346/123456789;810;ххххх
х проивольное число произвольной длинны.
у проивольное число из 4 символов
123456/123456789 тош произвольные числа но до / стоит 6 символов после / 9
810 не меняется ; тош
чот как то тяшко....помготе хоть в каку сторону двигать..
Автор: 01MDM
Дата сообщения: 09.09.2008 04:14
avkorets
Если поля ";" не меняются то попробуй:

Код:
@echo off
chcp 1251 1>nul
for /f "tokens=1-6 delims=;" %%1 in (1.txt) do (
    echo %%1;%%2;;%%4;%%3;%%5;%%6 1>>1.tmp
)
move /y 1.tmp 1.txt
chcp 866 1>nul
Автор: avkorets
Дата сообщения: 09.09.2008 09:17
01MDM
о
гут
спасибо все работает!все понятно, кроме..
Обьясни строку chcp 1251 1>nul и chcp 866 1>nul ...если не сложно =)
Автор: 01MDM
Дата сообщения: 09.09.2008 09:31
avkorets

Цитата:
Обьясни строку chcp 1251 1>nul и chcp 866 1>nul ...если не сложно =)


В общем можно и не делать, в данном случае это лишнее
Автор: avkorets
Дата сообщения: 09.09.2008 09:54
Хм..задача усложнилась...
В файле присутсвует первая срока немного отличающаяся от той которую я описал
получается так
yyyyyyy;дд.мм.гггг;hh:mm:ss;yy;xxxxx
впринципе все норм ток вот двоеточие лишнее он впихивает оно и понятно...

@echo off
for %%j in (*.txt) do (
chcp 1251 1>nul
for /f "tokens=1-8 delims=;" %%1 in (%%j) do (
echo %%1;%%2;%%3;%%4;;;;%%6;;%%5;%%7;%%8 1>> 1.tmp
)
move /y 1.tmp %%j
chcp 866 1>nul
)

Мож ешо цикл в тело впихнуть ток как описать чтоб обработал первую но не трогал остальные строки skip вроде не катит...
Впринципе задача стоит в том чтоб первую строк вообще не трогать но на выходе она должна быть...
Автор: 01MDM
Дата сообщения: 09.09.2008 10:26

Цитата:
Хм..задача усложнилась...
Впринципе задача стоит в том чтоб первую строк вообще не трогать но на выходе она должна быть...



Код:
@echo off
setlocal

set /p firstline=<1.txt
echo %firstline% 1>1.tmp

for /f "skip=1 tokens=1-6 delims=;" %%1 in (1.txt) do (
echo %%1;%%2;;%%4;%%3;%%5;%%6 1>>1.tmp
)
move /y 1.tmp 1.txt
Автор: avkorets
Дата сообщения: 09.09.2008 11:30
гут работает,спасибо еще раз =)
ток в случае если находится все в теле цикла

@echo off

for %%j in (*.txt) do (
setlocal
set /p firstline=<%%j
echo %firstline% 1>> 1.tmp
for /f "skip=1 tokens=1-8 delims=;" %%1 in (%%j) do (
echo %%1;%%2;%%3;%%4;;;;%%6;;%%5;%%7;%%8 1>> 1.tmp
)
move /y 1.tmp %%j
)

пишет первую строку
режим ввода команд на экран (echo) выключен/включен=)
мож ему %%j не нравится?
Автор: Dis74
Дата сообщения: 09.09.2008 13:31
подскажите как это оформить 1 строкой? и без создания файла

date /t > date.txt
set /p curdate=<\date.txt

подозреваю что-то вроде date /t|set /p curdate=
но не срабатывает.
Автор: BuLLet3D
Дата сообщения: 09.09.2008 13:32
Доброго времени суток и заранее прошу прощения потому как может быть этот вопрос уже обсуждался
НО тем не менее есть проблема
есть скрипт выполняющий определенную задачу и в зависимости от переданного параметра выводящий результат либо в файл либо на экран.
Проблема заключается в следующем: необходимо отредактировать результаты выводимые в файл так что бы требуемая информация выводилась в столбик а не строками
Скрипт написан для работы с windows AD
Собственно скрипт
@echo off
rem esli parametr 2 raven 0 to vivod v file
if %2==0 net group %1 /domain >group.txt
rem esli parametr 2 raven 1 to vivod na monitor
if %2==1 net group %1 /domain
net group %1 %2 /domain

Пример того как выводит в файл скрипт
........
11111111 111111111 1111111
11111111 11111111 1111111

........

Пример того как нужно что бы отображалась информация
.........
1111111
1111111
111111111
1111111111
.........
Автор: king_stiven
Дата сообщения: 09.09.2008 13:43
Dis74
Может так

Код: set curdate=%date%
Автор: VitRom
Дата сообщения: 09.09.2008 14:27
Nagual
Цитата:
о каких сложностях ты говоришь?
"такие сложности" - это устоявшееся фигуральное выражение русского языка, которое вовсе не означает, что речь идёт именно о "сложностях" в буквальном смысле. В этом случае речь шла о лишних "движениях" в виде временных файлов (в исходном вопросе) или пайпов (в твоём варианте). Не сомневаюсь, что консоль запускать ты умеешь (решпект и уважуха ); я же лишь показал (напомнил), откуда взято простое прямое решение (получить сразу само значение конкретного параметра).
Автор: Dis74
Дата сообщения: 09.09.2008 14:42
king_stiven
пример с датой был условным.
на деле нужно передать результат работы bat файла (он возвращает строку) в ответ на set /p
Автор: S377
Дата сообщения: 09.09.2008 15:42
Нужно с ftp ресурса копировать файлы
но в пути встречаются директории на кириллице и пробелы
и поэтому батник ругается на путь
например вот такой путь:
ftp 321.21.564.231\фыва фыа\ыва ыва\file.df

пишу
ftp -s:res.txt 321.21.564.231
а в res.txt файле уже пишу:
cd \фыва фыа\
хочу перейти к нужному файлу
но тут и ругань на путь
и в кавычки заводил путь и чтотолько не делал...
Перелапатил поиском всю ветку про батники и так и не нашел ответ...
Автор: Dis74
Дата сообщения: 09.09.2008 15:51
S377
сохрани файл в той кодировке в которой работет FTP

к тому же на фтп надо сначала зайти. у меня вот какой файл есть:
get_ftp.bat:

Код:
echo anonymous>c:\ftp.tmp
echo anonymous@pop3.ru>>c:\ftp.tmp
echo binary>>c:\ftp.tmp
echo get %2>>c:\ftp.tmp
echo disconnect>>c:\ftp.tmp
echo bye>>c:\ftp.tmp
ftp.exe -s:c:\ftp.tmp %1
del c:\ftp.tmp
Автор: S377
Дата сообщения: 09.09.2008 15:56

Цитата:
сохрани файл в той кодировке в которой работет FTP

все сохранено в досовской кодировке

Добавлено:
на фтп заходит
под логином и паролем
проблема встала со сменой директории изза русской кодировки и пробелов
Автор: king_stiven
Дата сообщения: 09.09.2008 16:48
Dis74
Приведи пример своего батника, можно в сокращённом виде, но чтобы было понятно.
Набери в командной строчке for /?
Разбор команды тебе может помочь
FOR /F ["options"] %%e IN ('command') DO set /p curdate=%%e
Автор: Nagual
Дата сообщения: 09.09.2008 16:57
VitRom
в русском языке нет слова "пайпов"
хочешь пообщаться, пиши в личку
в контексте данной темы твой ответ должен был выглядеть так:
Код:
@echo off
set "pr=myprog"
for /f "skip=2 tokens=3 delims=    " %%a in ('@reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "%pr%"') do set pd=%%a
echo
Program Dir: %pd%
после delims= должен идти символ табуляции
Автор: avkorets
Дата сообщения: 09.09.2008 17:01
@echo off
for %%j in (*.txt) do (
setlocal
set /p firstline=<%%j
echo %firstline% 1>> 1.tmp
for /f "skip=1 tokens=1-8 delims=;" %%1 in (%%j) do (
echo %%1;%%2;%%3;%%4;;;;%%6;;%%5;%%7;%%8 1>> 1.tmp
)
move /y 1.tmp %%j
)

пишет первую строку
режим ввода команд на экран (echo) выключен
провозился полдня так и не решил почему так выдает...=(
%firstline% вообще имеет пустое значение, видимо здесь зарыто->
set /p firstline=<%%j
мож ешо варит у кого =)
Автор: 01MDM
Дата сообщения: 09.09.2008 18:07
avkorets
Так тебе надо для одного файла или нескольких? Я если честно уже запутался...
Напиши, что конкретно надо, по пунктам.
Автор: avkorets
Дата сообщения: 09.09.2008 18:44
Да сначала было для одного.
Потом выяснилось что в директории может быть много файлов(внутри впринципе все идентичны)
Вот я взял за основу твой код и сунул в цикл....
Он впринципе пашет но вот с первой строкой в файлах застрял...Первая строка немного отличима от остальных и ее не нужно менять,но нужно чтобы она была на выходе.
Этот код в итоге обрабатывает все файлы как положено но вместо первой строки в выходных файлах красуется:
режим ввода команд на экран (echo) выключен
все остальные строки все как нана.
=)
Автор: king_stiven
Дата сообщения: 09.09.2008 19:26
avkorets

Код: @echo off
setlocal enabledelayedexpansion
for %%j in (*.txt) do (
set /p firstline=<%%j
echo !firstline! 1>> 1.tmp
for /f "skip=1 tokens=1-8 delims=;" %%1 in (%%j) do (
echo %%1;%%2;%%3;%%4;;;;%%6;;%%5;%%7;%%8 1>> 1.tmp
)
move /y 1.tmp %%j
)
Автор: 01MDM
Дата сообщения: 09.09.2008 19:32
avkorets
На основе твоего последнего, не проверял.

Код:
@echo off
for %%i in (*.txt) do call:1 "%%i"
goto:eof

:1
set /p firstline=<%1
echo %firstline% 1> 1.tmp
for /f "skip=1 tokens=1-8 delims=;" %%1 in ('type %1') do (
echo %%1;%%2;%%3;%%4;;;;%%6;;%%5;%%7;%%8 1>> 1.tmp
)
move /y 1.tmp %1
Автор: avkorets
Дата сообщения: 09.09.2008 19:58
Огромное спасибо все работает замечательно =0)

Цитата:
king_stiven

setlocal enabledelayedexpansion и переменные окружения
пробовал ток видимо с первого раза впихнул в тело цикла не помогло =)
В шапке уже ознакомился но видимо не улеглось =)

Цитата:
01MDM

Огромнейшее спасибо, последовал Вашему совету перешел на буквенные значения токена.
после обработки файлики стали тяжелее ..выяснилось что в конце каждой строки клеется два пробела, откуда?
Автор: 01MDM
Дата сообщения: 09.09.2008 20:07

Цитата:
..выяснилось что в конце каждой строки клеется два пробела, откуда?


Посмотри повнимательней и удали концевые пробелы в батнике.
Автор: S377
Дата сообщения: 10.09.2008 15:09
ВОТ пример батника моего:
ftp -s:res.txt 14.112.32.15 - сам батник
а вот текстовый файл res.txt с коммандами:

rem логин
user
rem пароль
111
rem переход в директорию
rem если директория на кириллице - пишет access denied!
rem а если на латинице то все ок!
cd "Справочники"
rem на кириллицу в названии файла НЕ ругается!
get 16ываыва.zip D:\16ываыва.zip

Что то можно сделать с этим?
пробовал в OEM и ANSI кодировках - без разницы

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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