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

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

Автор: cubacuba
Дата сообщения: 11.02.2009 23:23
Elroir
Огромное спасибо!!!!! Вы меня ОЧЕНЬ выручили....спасибо РАБОТАЕТ!!!
Автор: graydevil
Дата сообщения: 12.02.2009 09:01
А как изменить этот код ( удаление сторки c "g:\test" ) чтобы обработались все файлы в каталоге ?

@echo off
chcp 1251

for /f %%1 in ('dir /b *.log') do call :int_work %%1
goto end

:int_work
type %1 | find "g:\test" || goto :eof
type %1 | find /v "g:\test"> new_file.efd
del %1
rename new_file.efd %1
goto :eof

:end
Автор: Maza_Faka
Дата сообщения: 12.02.2009 09:30
graydevil
Так?

Код:
for /f %%1 in ('dir /b *.*') do call :int_work %%1
Автор: graydevil
Дата сообщения: 12.02.2009 09:39
Нет не так )) Так совсем некорректно работает.
Автор: whoyou
Дата сообщения: 12.02.2009 14:31
Есть батник который переименовывает файлики как имя-дата-время-счетчик.dat и создает файл имя-дата-время-счетчик.dat.ок в 0 байт
Запускается он каждых 5 минут (моя задачка страница 37) все работает на ура НО:
Что надо дописать или исправить чтоб счетчик увеличивался а не начинал с ЕДИНИЦЫ

Пример батника:

@Echo On
Set f_Ext=dat
Set f_Ok=ok
Set f_Count=0
For %%a In (d:\outgoing\*.*) Do @Call :Rena %%a %%~ta
exit

goto :EOF

:Rena
Set /a f_Count=%f_Count%+1
Set f_Name=%1
Set f_Date=%2
Set f_Time=%3
Set f_Day=%f_Date:~0,2%
Set f_Month=%f_Date:~3,2%
Set f_Year=%f_Date:~6,4%
Set f_Hour=%f_Time:~0,2%
Set f_Min=%f_Time:~3,2%
Set f_NewName=out-%f_Year%%f_Month%%f_Day%-%f_Hour%%f_Min%-%f_Count%

If Exist %f_NewName% Set f_NewName=%f_NewName%-%f_Count%
Ren %f_Name% %f_NewName%.%f_Ext%
copy nul d:\outgoing\out-%f_Year%%f_Month%%f_Day%-%f_Hour%%f_Min%-%f_Count%.%f_Ext%.%f_Ok%

goto :EOF

Заранее благодарен.
Автор: chel78
Дата сообщения: 12.02.2009 15:01
Привет.
такое дело, есть скажем так несколько точек доступа WLAN (всего около 100). нужен батник, который би пинговал все точки по очереди, для проверки, рабочая или нет, и выводил лог.
потому как пинговать каждую точку поотдельности напряжно и долго, а физически, проверить, нету возможности.

имя точки доступа например ord-ap001 и т д. но список непоследователен, тоесть в батнике наверное нужно указать не диапазон, а весь список точек.
заранее спасибо.
Автор: king_stiven
Дата сообщения: 12.02.2009 20:42
graydevil

Цитата:
А как изменить этот код ( удаление сторки c "g:\test" ) чтобы обработались все файлы в каталоге ?

А ты под %%1 что подразумеваешь, папку или файл из папки, файлы в которой надо обработать?
whoyou

Цитата:
Что надо дописать или исправить чтоб счетчик увеличивался а не начинал с ЕДИНИЦЫ

Не понял, может тебе надо
Set /a f_Count=%f_Count%+1
убрать а

Код: For %%a In (d:\outgoing\*.*) Do (
Set /a f_Count+=1
Call :Rena %%a %%~ta
)
Автор: Ilyansk
Дата сообщения: 13.02.2009 06:46
Nagual

Цитата:
more/s старый_текст.файл>текст.файл

одну пустую строку таки оставляет...
Автор: Maza_Faka
Дата сообщения: 13.02.2009 06:49
chel78

Цитата:
нужен батник, который би пинговал все точки по очереди

Цитата:
но список непоследователен

Как вариант: создать текстовый файл с IP-адресами в нужной последовательности и пинговать их в цикле:

Код:
@Echo Off
For /F %%A In (wlan.txt) Do Ping %%A>>ping_log.txt
Автор: chel78
Дата сообщения: 13.02.2009 07:58

Цитата:
Как вариант: создать текстовый файл с IP-адресами в нужной последовательности и пинговать их в цикле:

выводит в лог вот что:
„«п Їа®¤®«¦Ґ-Ёп - ¦¬ЁвҐ «оЎго Є« ўЁиг . . .
Автор: Maza_Faka
Дата сообщения: 13.02.2009 09:58
chel78

Цитата:
выводит в лог вот что:

Это кодировка DOS-866. Для корректного отображения файлов с данной кодировкой нужно использовать редакторы, которые "понимают" эту кодировку. Например AkelPad
Автор: Johny_x3mal
Дата сообщения: 13.02.2009 10:00
Всем доброго времени суток!
У меня по сети гуляют два файла, источник не смог определить, но файлы легко можно удалить. Хочу накатать батник, на поиск файлов по всем разделам жесткого диска, удаление и запись истории на общесетевом ресурсе. Файлы nvmqqa.exe и khm.
С наскоку не получилось сделать поиск по всем разделам на винте.
Кто-нить, помогите, как мне задать поиск файлов по всему винту?
Автор: whoyou
Дата сообщения: 13.02.2009 10:02

Цитата:
graydevil


Цитата:
Цитата:Что надо дописать или исправить чтоб счетчик увеличивался а не начинал с ЕДИНИЦЫ

Не понял, может тебе надо
Set /a f_Count=%f_Count%+1
убрать а

Код:For %%a In (d:\outgoing\*.*) Do (
Set /a f_Count+=1
Call :Rena %%a %%~ta
)


Все это классно, но файлики там переменовывуются, а потом переносятся в архив, и папка пустая. вот в чем проблема
Автор: king_stiven
Дата сообщения: 13.02.2009 11:03
whoyou
если у тебя в именах нет воскл знаков, проще отладить через

Цитата:
· setlocal enabledelayedexpansion и переменные окружения


Set f_Name=%1
Set f_Date=%2
Set f_Time=%3

а передаёшь два аргумента
Do @Call :Rena %%a %%~ta
Автор: chel78
Дата сообщения: 13.02.2009 11:24
я так понял?? создать батник

Цитата:
@Echo Off
For /F %%A In (wlan.txt) Do Ping %%A>>ping_log.txt

в эту же директорию файл со списком точек???
не получаецо, в батнике пишет что: процес не может получить доступ к файлу, а в лог выводицо: Для продолжения нажмите любую клавишу . .
Автор: whoyou
Дата сообщения: 13.02.2009 11:27
king_stiven
А можно это (для особо одаренного) на моем примере показать. В готовом виде написать, куда и чте писать. Если это не сложно.
Автор: chel78
Дата сообщения: 13.02.2009 11:50

Цитата:
А можно это (для особо одаренного) на моем примере показать. В готовом виде написать, куда и чте писать. Если это не сложно.

и если можно для меня(как ламера
)
Цитата:

Как вариант: создать текстовый файл с IP-адресами в нужной последовательности и пинговать их в цикле:

Код:

@Echo Off
For /F %%A In (wlan.txt) Do Ping %%A>>ping_log.txt

на моем примере
Автор: king_stiven
Дата сообщения: 13.02.2009 11:54
whoyou
О кей, сначала ты мне подробненько скажешь, что ты хочешь получить, только не общими выражениями а конкретными, типа: в папке D:\1 без подпапок находятся несклько файлов, ... и т.д. И нащёт воскл знаков уточни.
Автор: whoyou
Дата сообщения: 13.02.2009 12:25
king_stiven

В папку d:\outgoing переносятся с других папок файлики с разными названиями в формате txt. Там они переменовываются как out-дата-время-счетчик.dat и создается пустой файлик out-дата-время-счетчик.dat.ok
Затем запускантся другой батник который отправляет (переносит) все файли на другой сервер - это у меня есть.
Через некоторое время снова пользователи снова сбрасываю файлики и цикл снова повторяется переименовка и отправка (вертушка у меня есть).
Но при этом счетчик начинается снова с 1 а не продолжает нумерацию дальше. Мне нужно чтоб нумерация продолжалась, когда переименовываются файлики. Никаких восклицательных знаков там нет.

Заранее благодарен.
Автор: king_stiven
Дата сообщения: 13.02.2009 12:54
whoyou
Правильно ли я понял:
1.Ты запускаешь 1.bat (текст приведён на предыдущей странице), он отрабатывает нормально и закрывется. Или есть проблемы и тут?
2. Далее запускаешь 2.bat? или по другому отправляешь файлы? Файлы переносятся и 2.bat закрывается.
3. Ты снова запускаешь 1.bat и тут счётчик снова с еденицы идёт, а тебе надо с предыдущего батника последнее значение.


То есть надо только счётчик поправить?



Код: @Echo On
Set f_Ext=dat
Set f_Ok=ok
for /f "usebackq tokens=*" %%c in ("%temp%\1.txt") do Set f_Count=%%c
For %%a In (d:\outgoing\*.*) Do @Call :Rena %%a %%~ta
exit

goto :EOF

:Rena
Set /a f_Count=%f_Count%+1
Set f_Name=%1
Set f_Date=%2
Set f_Time=%3
Set f_Day=%f_Date:~0,2%
Set f_Month=%f_Date:~3,2%
Set f_Year=%f_Date:~6,4%
Set f_Hour=%f_Time:~0,2%
Set f_Min=%f_Time:~3,2%
Set f_NewName=out-%f_Year%%f_Month%%f_Day%-%f_Hour%%f_Min%-%f_Count%
echo %Set f_Count%>"%temp%\1.txt"

If Exist %f_NewName% Set f_NewName=%f_NewName%-%f_Count%
Ren %f_Name% %f_NewName%.%f_Ext%
copy nul d:\outgoing\out-%f_Year%%f_Month%%f_Day%-%f_Hour%%f_Min%-%f_Count%.%f_Ext%.%f_Ok%

goto :EOF
Автор: Maza_Faka
Дата сообщения: 13.02.2009 13:30
chel78

Цитата:
и если можно для меня

Пример текстового файла с IP-адресами:

Код:
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
Автор: whoyou
Дата сообщения: 13.02.2009 13:45
king_stiven

Этот батник запускается сам по себе- выполнил переименования закрылся- потом запускается другой батник который отправляет (переносит) эти файли но другой сервер. Снова папка пустая и когда приходят новые файлики в d:\outgoing, то переименовуются они и счетчик начинается снова с ЕДИНИЦЫ, а не продолжает нумерацию дальше (обидно).
Вот в чем проблема.

Тем что приведено на предыдущей все работает на ура но нумерация начинается с 1 после того как появляются новые фалы.
Автор: king_stiven
Дата сообщения: 13.02.2009 14:35
whoyou
Проверяй решение смотри выше, только в самом низу
goto :EOF
меня смущает

Добавлено:
смотри выше
Автор: whoyou
Дата сообщения: 13.02.2009 15:04
king_stiven

Проверил, не работает, файлы что пришли так и остались не переименованы, а пустые создались, запустил заново снова с НУЛЯ идет.
Автор: king_stiven
Дата сообщения: 13.02.2009 16:35
whoyou
два варианта


Код: @Echo On
Set f_Ext=dat
Set f_Ok=ok
for /f "usebackq tokens=*" %%c in ("%temp%\1.txt") do Set f_Count=%%c
For %%a In (d:\outgoing\*.*) Do @Call :Rena %%a %%~ta
exit

goto :EOF

:Rena
Set /a f_Count=%f_Count%+1
Set f_Name=%1
Set f_Date=%2
Set f_Time=%3
Set f_Day=%f_Date:~0,2%
Set f_Month=%f_Date:~3,2%
Set f_Year=%f_Date:~6,4%
Set f_Hour=%f_Time:~0,2%
Set f_Min=%f_Time:~3,2%
Set f_NewName=out-%f_Year%%f_Month%%f_Day%-%f_Hour%%f_Min%-%f_Count%
echo %f_Count%>"%temp%\1.txt"

If Exist %f_NewName% Set f_NewName=%f_NewName%-%f_Count%
Ren %f_Name% %f_NewName%.%f_Ext%
copy nul d:\outgoing\out-%f_Year%%f_Month%%f_Day%-%f_Hour%%f_Min%-%f_Count%.%f_Ext%.%f_Ok%

goto :EOF
Автор: Alex1985
Дата сообщения: 13.02.2009 21:55
а можно ли доделать батник так, что бы он проверял раз в час (ну или раз в сутки, не важно) наличие окна с заголовком "my program was crashed" и рестартить службу "my program"?

Код: @set @x=0 /*
net stop "my program"
del "C:\my program\*.tmp"
cscript //nologo /e:jscript "%~f0" 60000
net start "my program"
goto:eof */ if(isFinite(WScript.Arguments(0))) WScript.Sleep(WScript.Arguments(0))
Автор: Artem_Butenko
Дата сообщения: 14.02.2009 02:22
Ребята, пожалуйста, помогите решить такую задачу: есть файл test.txt, который может быть переименован в test.tx_, но как запретить в бат файле переименование файла test.txt, если в корневом каталоге уже есть файл test.tx_? Думаю объяснил все верно. Буду очень рад Вашей помощи.

Добавлено:
Забыл сказать, что это действие призвано блокировать многократное переименование одного и того же файла, т.е. важно лишь его первичное переименование!
Автор: 01MDM
Дата сообщения: 14.02.2009 05:58
Artem_Butenko
Если файлы находятся в одном каталоге, то исходный файл и так не переименуется:

Код:
ren test.txt test.tx_ 2>nul
Автор: Maza_Faka
Дата сообщения: 14.02.2009 07:34
Alex1985

Цитата:
проверял раз в час (ну или раз в сутки, не важно) наличие окна с заголовком "my program was crashed" и рестартить службу "my program"?

Пример:

Код:
@Echo Off

:WindowCheck
Tasklist /FI "Windowtitle EQ my program was crashed" 2>Nul | Find /i "PID">Nul 2>&1 && Call :MyProc
Ping -n 3600 127.0.0.1>Nul
GoTo :WindowCheck

:MyProc
Echo MyProc
Автор: chel78
Дата сообщения: 14.02.2009 11:15

Цитата:
Пример текстового файла с IP-адресами:

Код:

192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4

и т. д.

не получается (( все равно пишет что - процесс не может получить доступ к файлу, так как файл занят другой программой

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: как сохранить сетевые настройки


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