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

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

Автор: Froz
Дата сообщения: 10.11.2008 00:56
batniki,

echo set /P return="(y/n): " >>debug.txt
echo if %%return%%==y goto label >>debug.txt
echo if %%return%%==n exit >>debug.txt
Автор: Pashkaa
Дата сообщения: 10.11.2008 11:45
Добрый день.
Подскажите, как сортировать текстовые файлы (123.txt, 234.txt) по разным папкам, в зависимости от содержимого текстового файла. Т.е., если в 123.txt найдено слово (байт), то его в папку "1", если найдено слово (порт) - в папку "2"?
Спасибо
Автор: demon1981
Дата сообщения: 10.11.2008 13:22
подскажите как батником понять что за айпишником комп или принтер? надо просканировать подсеть. Скажем 192.168.10.х и отобрать только принтера в текстовичок скажем
Автор: king_stiven
Дата сообщения: 10.11.2008 13:56
Pashkaa
Ищет в текущем каталоге внутри текстовых файлов

Код: chcp 1251 > nul
for %%i in (*.txt) do (
find "байт" "%%i" > nul && MOVE "%%i" 1
find "порт" "%%i" > nul && MOVE "%%i" 2
)
Автор: demon1981
Дата сообщения: 10.11.2008 14:24
Pashkaa
можно на каждое нужное слово свой проход делать и ложить в свою нужную папку
скажем что-то типа
for %f in (*.txt) do (
set var1=find /i "ilona"<%f
if var1.....)
Автор: johnmar
Дата сообщения: 10.11.2008 14:31
nightlight, спасибо!
попробую разобраться с этой утилитой
жалко что описание на английском...

Ещё вопрос:
Как разбить текстовый файл file.txt на строки str(i).txt (1 < i < n) ?

Например есть программа (консольная) prog.exe
необходимо выполнить:
for %%c in (str*.txt) do prog < %%c >> tmp.log

т.к. файл не разбит на строки, получается только для всего файла:
prog < file.txt > tmp.log

а нужно n раз (по разу для каждой строки)

будет ещё лучше, если получить результат (выполнение prog n раз с подстановкой вместо stdin строки) без разбиения файла на кучу мелких (каждый на строку), но не представляю как это сделать...
Автор: stydik
Дата сообщения: 10.11.2008 15:18

Цитата:
Ребята, нужен скрипт. Помогите с созданием. Объясню почему именно скрипт. Я написал батник, который забирает с сетевого диска документы и пакует их в формат с датой+время.

@echo Начнем >> 1.log
@Echo off
@DATE /t >> 1.log
@TIME /T >> 1.log
@echo Копирую и сохраняю результат копирования в лог ...
@xcopy v:\post\*.doc /z /c /Q >> 1.log
@echo Пакую... >> 1.log
@rar a -ag + YYYY:MM:DD:HH:MM \*.doc >> 1.log
@echo Перемещаю архив... в папку TEMP >> 1.log
@move *.rar TEMP
@echo Удаляю файл doc... >> 1.log
@del /F d:\*.doc
@echo Cделал... >> 1.log


Вот создал скрипт


Код: Set oShell = WScript.CreateObject("WScript.Shell")
While True
oShell.Run "с:\mycmd.cmd", 0, False
WScript.Sleep 1800000
Wend
Автор: losttda
Дата сообщения: 10.11.2008 17:14

Цитата:
[/q][q]У меня это сделано таким скриптом - http://taciturn-shadow.spb.ru/UniRoute.cmd - успешно работает от NT4 до 2008 сервера.


Спасибо, такой вариант подошёл идеально.
Автор: Nagual
Дата сообщения: 11.11.2008 01:02
losttda
были случаи (несколько провов, локалок и адаптеров), когда не помогала команда route print (она же netstat -r)
для всех адаптеров можно смотреть так netsh diag show gateway
однако, дефолтный шлюз не всегда удавалось получить корректно
после долгих поисков было найдено решение искать шлюз в реестре

для xp
Код:
for /f "tokens=3 " %%a in ('reg query "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces" /s^|findstr DhcpDefaultGateway') do set "gate=%%a"
for /f "tokens=1 delims=\" %%a in ("%gate%") do set "gate=%%a"
echo "%gate%"

для 2k3
Код:
for /f "tokens=3" %%a in ('reg query "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces" /v DhcpDefaultGateway /t reg_multi_sz /s^|findstr REG_MULTI_SZ') do echo "%%a"

на остальных OCях не тестировалось за ненадобностью
Автор: stydik
Дата сообщения: 11.11.2008 12:14
Добрый день. Ребята, есть такой батник. Упаковывает файлы которые больше или равны определенному количеству дней. Вот код


Код: @FORFILES /P C:\ /M *.xls /D -1 -C "CMD /C if @isdir==FALSE rar a %time% @File"
Автор: Taciturn
Дата сообщения: 11.11.2008 16:28
Nagual
Если DHCP не используется, то этот метод ничего не даст.
Автор: uranic2
Дата сообщения: 11.11.2008 16:46

Цитата:
Мне нужно, чтобы батник искал в определённой папке файлы который содержат слово (например, Привет). После того как пройдёт поиск, все файлы содержащие это слово должны скопироваться в отдельную директорию.


могу предложить вариант на windows script host:



Код:
' Codepage 1251
' -------------------------Конец изменяемой части --------------------------------
On Error Resume Next

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

Dim oShell
Set oShell = WScript.CreateObject ("WSCript.shell")
Dim FolderForBack


function FindInFile(AFILE)
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(AFileNameCompilerLog)
strFileContents = objTS.ReadAll
objTS.Close
numWarning = 0
Set objREHint = New RegExp
objREHint.Global = True
objREHint.IgnoreCase = TRUE
objREHint.Pattern = "СТРОКА КОТОРУЮ ИЩЕМ"
Set colMatches = objREHint.Execute(strFileContents)
For Each objMatch In colMatches
numWarning = numWarning +1
Next
FindInFile = numWarning


end function
' *************************************************'

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

WScript.Echo Now



' Выбираем все директории
' этот селект срабатывает достаточно долго было бы хорошо его ускорить
Set colFiles = objWMIService.ExecQuery _
("Select * from CIM_DataFile where FileName Like '%pas'")

For Each objFile in colFiles
Wscript.Echo objFile.Name
if FindInFile(objFile.Name) then
Wscript.Echo "** ЗДЕСЬ ВСЕ ЧТО УГОДНО ****" & objFile.Name
end if

Next


WScript.Echo Now
Автор: batniki
Дата сообщения: 11.11.2008 19:44
Как вывести строки в файл на %AllUsersProfile%\Рабочий стол?
пишу что-то типа:
echo blabla>>%AllUsersProfile%\Рабочий стол\blabla.txt
файл не появляется
Автор: Elroir
Дата сообщения: 11.11.2008 19:57
batniki

Код: echo blabla>>"%AllUsersProfile%\Рабочий стол\blabla.txt"
Автор: Serg41
Дата сообщения: 13.11.2008 12:43
Добрый день
Подскажите люди добрые
Есть задачка:
нужно удалять файлики в одной папке, и во всех подпапках но не удалять сами подпапки, т.е. оставить только скелет папок и все
Автор: Drunken Master
Дата сообщения: 13.11.2008 13:20
Serg41

Код: cd /d folder_name
del /s /q /f *.*
Автор: Serg41
Дата сообщения: 13.11.2008 14:54

Цитата:
cd /d folder_name
del /s /q /f *.*


классно, спасибо большое
Автор: Ilyha58343
Дата сообщения: 14.11.2008 08:24
Посдкажите пожалуйста, есть файл ChangeVLKey2600.vbs от майкрософта который меняет ключ на винде. Доменного админа нет, так что GP тут не пройдут, но на всех компах я админ (есть группа админов куда я вхожу) так вот, пытаюсь psexec выполнить скрипт таким образом
psexec.exe \\computername -u domen\user -p password cmd.exe /c \\server\key\lic\ChangeVLKey2600.vbs M8DDB-HDJW8-MG97W-XGX4J-7FYXG, скрипт проходит нормально, но в ответ консольпа стопорится и следующая команда не проходит. Подскажите в чем может быти проблема
Автор: Nagual
Дата сообщения: 14.11.2008 14:13
stydik
что значит выразить в VBS?
чем плох сценарий?
а вообще тут и forfiles не нужен
rar/?|findstr tn
Автор: AndySS
Дата сообщения: 14.11.2008 18:04
Нужна небольшая помощь:

Нужно из командной строки прочекать почтовый ящик, скриптом, батником.... и в соотвествии с содержимым писем произвести некоторые действия - запустить то, или другое приложение.

Посоветуйте мелкую тулзу, ака checkmail, но только не такую, что-бы в трее висела.

Заранее спасибо.
Автор: Elroir
Дата сообщения: 14.11.2008 19:50
AndySS
GetMail - http://pages.interlog.com/~tcharron/getmail.html
Автор: AZJIO
Дата сообщения: 14.11.2008 22:07
1. как правильно скопировать содержимое папки вместе с файлами и каталогами, если батник находится в самой папке.
Этот вариант:
Цитата:
cd..
xcopy "имя_каталога" "D:\имя_каталога\" /Q /H /Y /K /C /E
ненравится тем, что если каталог переименовать, то батник станет нерабочим. Переменная %~dp0 со слешем, не подходит в качестве имени каталога.
Автор: Froz
Дата сообщения: 14.11.2008 22:15
AZJIO,
xcopy "%cd%" "D:\%cd:~3%\" /Q /H /Y /K /C /E
Автор: Elroir
Дата сообщения: 14.11.2008 22:15
AZJIO

Код:
@echo off
setlocal
for /f "tokens=*" %%a in ("%cd%") do set "dirToCopy=%%~nxa"
cd..
xcopy "%dirToCopy%" "d:\%dirToCopy%\" /Q /H /Y /K /C /E
Автор: Froz
Дата сообщения: 14.11.2008 22:48
Elroir

Всё правильно.

А в xcopy нет параметра Q без слеша.
Автор: Elroir
Дата сообщения: 14.11.2008 23:39
Froz

Цитата:
Всё правильно.

Ну вот представь себе, что полный путь к директории, которую надо скопировать такой - c:\dir1\dir2\dir3\dir4\dir5. В твоем варианте, мы копируем директорию dir5 не в d:\dir5, а в d:\dir1\dir2\dir3\dir4\dir5. Это правильно?


Цитата:
А в xcopy нет параметра Q без слеша.

Да, конечно. Это я скопировал ключи из поста AZJIO и пропустил первый символ.
Сейчас исправлю.
Автор: Froz
Дата сообщения: 15.11.2008 00:39
Elroir


Цитата:
копируем директорию dir5 не в d:\dir5, а в d:\dir1\dir2\dir3\dir4\dir5. Это правильно?


А что ж неправильно? Это рабочий вариант. Копируем полную структуру каталогов =) Не факт, что это единственный вариант, но он точно не неправильный.
Автор: Elroir
Дата сообщения: 15.11.2008 00:50
Froz

Цитата:
Не факт, что это единственный вариант, но он точно не неправильный.

Ты ведь отвечал на конкретный вопрос, а не рассматривал абстрактные варианты.
AZJIO совершенно четко указал, что ему надо скопировать директорию на диск D: (xcopy "имя_каталога" "D:\имя_каталога\"), а не создавать на нем весь путь до этой директории.
Автор: AZJIO
Дата сообщения: 15.11.2008 01:40
Elroir
Froz
Спасибо. Кстати, вариант Froz мне тоже подходит, так как каталог в который будет скопировано содержимое можно указать явно. Оба варианта на вооружение. Из этого сделал вывод, что %cd% - это путь к каталогу из которого запущен батник, а %cd:~3% - тот же путь с удалением трёх символов в начале?
Автор: Elroir
Дата сообщения: 15.11.2008 01:55
AZJIO

Цитата:
%cd% - это путь к каталогу из которого запущен батник

%cd% - это путь к текущему каталогу

Цитата:
%cd:~3% - тот же путь с удалением трёх символов в начале?

Да. В общем случае, %var:~n% - это переменная var, начиная с n-ого символа.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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