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

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

Автор: 01MDM
Дата сообщения: 06.05.2008 14:18
Dantis
Не ругайся с домашней
Отредактируй Windows\system32\drivers\etc\hosts

Что-нибудь типа:

127.0.0.1 liveinternet.ru

Не всегда работает, по этому для надежности еще допиши туда-же с www. и http://...
Автор: bmax
Дата сообщения: 06.05.2008 14:56
To 01MDM


Цитата:

:: Находим строки "FileName=...." и их номера
set /p skip=<last_pos.txt
for /f "skip=%skip% tokens=1,3* delims=:=" %%i in ('findstr /n "FileName=.b.*" d:\2\all.txt') do (
set "line=%%i" && call:copy)

Такое впечатление что skip в данном случае не строки пропускает а найденные файлы, потому как без него (без skipа) все работает а с ним нет. Что может быть?
Автор: igor_andreev
Дата сообщения: 06.05.2008 15:06
bmax
Попробуй skip=%skip% вообще убери, а в кавычках more + добавь
.... ('more +%skip% d:\2\all.txt ^| findstr /n "FileName=.b.*"')...
Автор: 01MDM
Дата сообщения: 06.05.2008 15:18
bmax
А что записано в last_pos.txt. Номер последней строки all.txt при предыдущем выполнении?
Наверное в первый раз надо запустить без skip, что бы получить все строки и конец файла. Или написать условие if exist last_pos.txt

Т.е этот батник должен применяться и в следующий раз? Сейчас нет возможности проверить, вечером отпишусь.


Добавлено:
igor_andreev

Да, пожалуй это будет нормально

Добавлено:
bmax

Попробуй так:

Код:
:: Находим строки "FileName=...." и их номера
set skip=0
if exist last_pos.txt (     
    set /p skip=<last_pos.txt
)
for /f "tokens=1,3* delims=:=" %%i in ('more +%skip% d:\2\all.txt ^| findstr /n "FileName=.b.*"') do ....

Автор: ruan
Дата сообщения: 06.05.2008 16:12
Привет всем! Подскажите плс, стоит такая задача. Есть каталог, в нем каждый день создаются файлы. Мне в начале наступившего дня, скажем в 00:05 необходимо создать папку с именем равным дате прошедшего дня, и переместить в нее все файлы, у которых дата создания соответствует дате прошедшего дня.
Заранее спасибо!
Автор: king_stiven
Дата сообщения: 06.05.2008 16:38
Требуется имитировать нажатие сочетания клавиш ctrl+shift+p, чтобы потом в цикле с паузами можно было запустить, или утилиту какую лёгкую.
Автор: bmax
Дата сообщения: 06.05.2008 16:57
igor_andreev, 01MDM спасибо работает.
что означает ^ потому как я тоже сначала пошел этим путем но у меня ничего не вышло, потом прочитал ваши сообщения - получилось. и еще будет ли корректно отрабатываться поиск строки по одному из двух значений?

Цитата:

for /f "tokens=1,3* delims=:=" %%i in ('more +%skip% d:\2\all.txt ^| findstr /n "FileName=.b.* FileName=.а.*"') do ...

Спасибо за ответы, в очередной раз выручаете
Автор: 01MDM
Дата сообщения: 06.05.2008 17:16
king_stiven
последняя версия nircmdc (nircmdc sendkey)

bmax
И не забудь при обработке увеличить line на skip, что бы номера строк соответствовали действительности

Код:
:: Находим строки "FileName=...." и их номера
set skip=0
if exist last_pos.txt set /p skip=<last_pos.txt
for /f "tokens=1,3* delims=:=" %%i in ('more +%skip d:\2\all.txt ^| findstr /n "FileName=.b.*"') do (
set /a line=%%i+skip && call:copy
)
Автор: SHEVRSV
Дата сообщения: 06.05.2008 18:34
king_stiven
Огромнейшее спасибо. Выручили меня.
Автор: DazZzle
Дата сообщения: 07.05.2008 00:06
Как поменять дату изменения(или создания) файла через бат файл.
Автор: rupinskiy
Дата сообщения: 07.05.2008 00:15

Цитата:
Код:@echo off
cd /d D:\2
for %%c in (*.*) do call :rty "%%c"
goto :eof
:rty
set file=%~1
set "file=%file:~0,4%"
if not exist "%file%\" md "%file%"
MOVE %1 "%file%"


В папке D:\2 лежат обрабатываемые файлы, если проблема с кириллицей вставь во вторую строку chcp 1251 > nul
Также смотри ключи к командам md MOVE


Вы ГЕНИЙ !!! Такой короткий алгоритм и ТАКОЙ еффективный. Браво !!!

Может поможете с первым заданием, большая просьба ...
Автор: JI063uk
Дата сообщения: 07.05.2008 07:48


Подскажите какой командой можно запустить программу на удаленном компе, очень надо

Автор: bmax
Дата сообщения: 07.05.2008 09:23
O1MDM


Цитата:

:: Находим строки "FileName=...." и их номера
set skip=0
if exist last_pos.txt set /p skip=<last_pos.txt

Такая конструкция не устроила почему - то при повторном выполнении ругалась на непредвиденное появление чего-то вроде ."
Вышел из положения след. образом

Цитата:

set /p sk=<last_pos.txt
erase last_pos.txt

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


Цитата:

... me=.b.*"') do (
set /a line=%%i+skip && call:copy...


Спасибо это тоже учел, однако в другом месте и через дополнительную переменную, сегодня наверное переделаю(в этом месте почему-то не догадался вставить )
Еще раз огромное спасибо!
Автор: ruan
Дата сообщения: 07.05.2008 09:25
Прошу прощения за повтор вопроса, но если и сейчас не ответят, почти поверю, что задача нерешаема... Есть каталог, в нем каждый день создаются файлы. Мне в начале наступившего дня, скажем в 00:05 необходимо создать в каталоге папку с именем равным дате прошедшего дня, и переместить в нее все файлы в исходном каталоге, у которых дата создания соответствует дате прошедшего дня.
Заранее спасибо!
Автор: king_stiven
Дата сообщения: 07.05.2008 09:41
ruan
В шапке есть решение
Цитата:
Работа с текстом, датой, и файлами »

а там "Использование даты на день раньше чем сегодня (используя VBScript) [?] "


создать md
переместить MOVE

Цитата:
но если и сейчас не ответят, почти поверю, что задача нерешаема...

Значит просто все заняты, сам сделай некоторые усилия.
Автор: bmax
Дата сообщения: 07.05.2008 11:02
Подскажите как сделать чтобы номер строки конца файла сохранялся в любом случае, т.е. не только в случае нахождения искомой последовательности символов?


Цитата:

:: Находим строки "FileName=...." и их номера
set /p sk=<last_pos.txt
set /a skip=%sk%-1
erase last_pos.txt
for /f "tokens=1,3* delims=:=" %%i in ('more +%skip% d:\Teleport\files\acp.rec ^| findstr /n "FileName=.b.* FileName=.a.*"') do (
set /a "line=%%cnt+%skip%" && call:copy)

:: Считаем дальше, от последнего найденного, до конца файла
for /f %%i in ("more+%line% d:\Teleport\files\acp.rec") do set /a cnt+=1
set /a cnt+=line

::Запоминаем конец файла
echo %cnt% >> last_pos.txt
goto:eof

::Обрабатываем найденные номера строк
:copy
FOR /f "tok .............
Автор: JohnRD
Дата сообщения: 07.05.2008 14:09
добрый день

подскажите пожалуйста как можно запустить everest на машине пользователя чтобы сделать отчет с именем фала его %username%

psexec \\COMP -u domain\inst_agt -p 123 \\serv\everest\start.cmd

start.cmd
everest.exe /R \\serv\everest\%username% /CSV /SUM /DELAY 10

поскольку если запустить так psexec \\COMP -u domain\inst_agt -p 123 cmd
то USERNAME=inst_agt

если так psexec \\COMP -u domain\inst_agt -p 123 -s cmd
то USERNAME нет вобще

спасибо
Автор: 01MDM
Дата сообщения: 07.05.2008 15:00
bmax
Извини, не стал смотреть твой вариант, немного переделал исходный. Все вроде работает, ошибку с "." больше не выдает если не найдена строка


Код:
@echo off
setlocal

:: Находим строки "FileName=...." и их номера
set skip=0
if exist last_pos.txt (set /p skip=<last_pos.txt)
for /f "tokens=1,3* delims=:=" %%i in ('more +%skip% 1.txt ^| findstr /n "FileName=.b.*"') do (
set /a line=%%i+skip && call:somejob %%j %%k
)

:: Считаем дальше, от последнего найденного, до конца файла
for /f %%i in ('more +%skip% 1.txt') do set /a cnt+=1
set /a cnt+=%skip%

:: Всего строк в файле, без учета пустых в нижней части файла :-(
:: Но можно исправить, если принципиально.
echo %cnt% > last_pos.txt
goto:eof

:somejob
:: Здесь обрабатываешь названия файлов из найденных строк
echo file name is %~1 %~2 line:%line%
Автор: bmax
Дата сообщения: 07.05.2008 16:30
To 01MDM большое спасибо!


Цитата:

for /f %%i in ('more +%skip% 1.txt') do set /a cnt+=1
set /a cnt+=%skip%


Эта поправка избавила меня от проблемы с сохранением номера строки в случае если совпадений не было найдено (у меня было line, правда и с line все работало но сделал через такую ж..., что страшно себе представить)
Автор: Kostya83
Дата сообщения: 07.05.2008 17:51
Добрый вечер!

как сделать чтобы в батнике выполнялась только та строка которая содержит в себе имя компьютера на котором этот батник запущен?

содержание батника:
reg add "\\comp1\HKEY_LOCAL_MACHINE\SOFTWARE" /v test1 /t REG_SZ /d vvv1
reg add "\\comp2\HKEY_LOCAL_MACHINE\SOFTWARE" /v test2 /t REG_SZ /d vvv2
reg add "\\comp3\HKEY_LOCAL_MACHINE\SOFTWARE" /v test3 /t REG_SZ /d vvv3

Этот батник будет запускаться на компьютерах comp1, comp2, comp3, нужно чтобы на каждом компьютере выполнялась только та строчка которая содержит имя компьютера.
Автор: DazZzle
Дата сообщения: 07.05.2008 18:03
Пожалуйста ответте возможно ли изменить дату изменения файла через bat файл, если да, то как!! Заранее спасибо
Автор: king_stiven
Дата сообщения: 07.05.2008 18:30
ruan

Код: @echo off
set way=D:\2
echo WScript.Quit (DateDiff("d", CreateObject("Scripting.FileSystemObject").GetFile(WScript.Arguments.Item(0)).DateCreated, Now))>timediff.vbs
ECHO wscript.echo date-1>tmp.vbs
FOR /F %%A IN ('cscript tmp.vbs //Nologo') DO SET "YESTERDAY=%%A"
for %%a in ("%way%\*.*") do (
set "file=%%a"
call :ata
)
goto :eof
:ata
cscript timediff.vbs "%file%" > nul
if "%errorlevel%"=="1" (
if not exist "%way%\%YESTERDAY%\" md "%way%\%YESTERDAY%"
MOVE "%file%" "%way%\%YESTERDAY%"
)
Автор: igor_andreev
Дата сообщения: 08.05.2008 02:13
DazZzle
тынц
Автор: zhuchella
Дата сообщения: 08.05.2008 05:22
ToALL
Скажите, как можно командной строкой сперва отключить сетевую карту, а потом её включить ?
Автор: 01MDM
Дата сообщения: 08.05.2008 07:17
DazZzle
NirCmd умеет менять время создания/модификации файла (nircmdc setfiletime)
zhuchella
Cnic.exe
Расспакуй.

Синтаксис простой:
cnic "название_соединения" -d
cnic "название_соединения" -c
cnic /?

Автор: ruan
Дата сообщения: 08.05.2008 09:42
king_stiven и
igor_andreev!
Большое спасибо, ребята!

Автор: zhuchella
Дата сообщения: 08.05.2008 10:26
01MDM
Большое спасибо
Автор: Vlamo
Дата сообщения: 08.05.2008 14:35
Уважаемые знатоки командной строки!!!
Помогите решить такую задачку:

Имеется команда в батнике:

Код: ftp -n -s:hostconnect.txt 2>&1 1>nul
Автор: GreaseOD
Дата сообщения: 08.05.2008 14:35
Кто-нибудь пробовал организовать печать файлов через cmd?
Нужно напечатать test.xls через cmd, желательно не сторонними дополнительными программами требующие установке
Или если есть скинте пжл ссылку!
Автор: igor_andreev
Дата сообщения: 08.05.2008 14:54
Vlamo
Не в nul вывод, а в файл и анализируй файл
GreaseOD
В гугле classExec набери

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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