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

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

Автор: GORA2
Дата сообщения: 24.10.2008 10:20

Цитата:
попробуй set dat=!dat:%%1=%%%%1!
Спасибо, работает и даже без 1.
Есть еще одна проблема
Код: for /f "skip=1 tokens=*" %%a in ('type !fname!.reg') do (
set line=%%a
....
Автор: 01MDM
Дата сообщения: 24.10.2008 10:42
GORA2

Код:
for /f "skip=1 tokens=*" %%a in ('type !fname!.reg') do (
set line=%%a
set line=!line:\=\\!
...
Автор: GORA2
Дата сообщения: 24.10.2008 10:53
01MDM
Вы не поняли меня. Двойные слеши я сам потом заменяю на одинарные. Меня волнует именно системные переменные. %SystemRoot% заменилось на C:\WINDOWS, а мне этого не надо!
PS
Немного не правильно указал условия. Переменные раскрываются не в первом цикле (там еще правильная запись), а во втором
Код: for /f "tokens=1* delims==" %%b in ('echo !line!') do (
set val=%%~b
set dat=%%~c
Автор: 01MDM
Дата сообщения: 24.10.2008 11:20
GORA2

Что-то не получается смоделировать ситуацию, возвращается %SystemRoot%:


Код:
@echo off
setlocal enabledelayedexpansion

for /f "tokens=*" %%i in (test.txt) do (
    set line=%%i
    for /f "tokens=*" %%i in ("!line!") do (
        set aaa=%%i
)
)

echo %aaa%
Автор: GORA2
Дата сообщения: 24.10.2008 11:39
01MDM
А ни чего, что у Вас в обоих циклах одна и та же переменная используется!?
А может у меня на нее так Echo ('echo !line!') действует!?
Точно!!! Это именно Echo, убрал его и все стало на свои места. Спасибо.
Автор: Elroir
Дата сообщения: 24.10.2008 11:44
GORA2
Дело тут в команде "echo" ('echo !line!').
Если написать for так, как это сделал 01MDM ( for /f "tokens=*" %%i in ("!line!") do ) - все будет в порядке.

Добавлено:
Автор: avkorets
Дата сообщения: 24.10.2008 15:58
Elroir
спасибо.
ток вот не получается вытащить результат который начинается на ноль так как надо т.е. если получилось 0.123456 тоо нужно вывести .123456
Автор: Elroir
Дата сообщения: 24.10.2008 16:31
avkorets
Очень странно - я проверял.
Запускаю из командной строки :

Код: for /f "tokens=1* delims=0 " %a in ('clcc 1/2') do echo %b
Автор: sL4yer
Дата сообщения: 26.10.2008 23:58
Народ помогите. Надо сравнить например размер файла 1.txt с числом 102400, только число должно задаватся в байтах. Тоесть иными словами если файл 1.txt равен 100 кб тогда выходить из програмы.
Автор: Elroir
Дата сообщения: 27.10.2008 00:10
sL4yer

Код:
for %%a in (1.txt) do if %%~za EQU 102400 goto :EOF
Автор: Shadowland
Дата сообщения: 27.10.2008 04:37
помогите пожалуйста со скриптом :
в папке Svalka есть куча *.rar файлов и их описаний *.rar.txt
в некторых *.rar файлах есть папка "заработок в интернете" или "ЗАРАБАТЫВАЙ с НАМИ!!!" или "+" или "Как заработать в интернете"
или
файлы "GOLD-аккаунт на Depositfiles.doc" и "03.04.08.jpg" или "Прочитайте меня!!!.doc" и "Thumbs.db"
требуется (если они есть) удалить все эти пакпки и файлы из архивов оставив остальное содержимое

заранее спасибо
Автор: Sk09
Дата сообщения: 27.10.2008 08:56
Подскажите пожалуйста! Как то пол года назад мне сдесь помогли с батником, который выполняет следующее действие: при вставке диска в привод он тупо копирует содержимое в определенную папку.
Вот теперь мне понадобилось задать маску копируемых файлов - например *.exe, *123*.* и что то в этом роде. Вобщем надо как то добавить несколько масок, по которым будут выбираться файлы и копироваться в определенную папку. Самое главное что бы это проходило в фоновом режиме - тоесть на не видно было бы что происходит, кроме как мигания индикатора привода. Подскажите что доделать пожалуйста.
Вот тот код:

Код: @echo off
chcp 1251 > nul
Title y
"C:\1\cmdow.exe" "y" /HID
:begin
ping -n 16 -w 1000 localhost > nul
for /f "tokens=*" %%c in ('dir d:\ /b') do (
for /f "tokens=1,2* delims=:" %%e in ("%time%") do (
xcopy d:\ "c:\1\Copy\%date%_%%e.%%f.%%g" /s /e /h /r /i
ping -n 640 -w 1000 localhost > nul
goto :begin
)
)
goto :begin
Автор: ev_robert
Дата сообщения: 27.10.2008 10:12
кто подскажет как завершать командой удаленные сессии всех пользователей?
моно конечно
logoff rdp-tcp#29
но откуда знать кто когда под каким номером будет.
не хочется в батнике писать
logoff rdp-tcp#1
logoff rdp-tcp#2
logoff rdp-tcp#3
.
.
.
.
и так неизвестно до какого.
моно ли как то по именам пользователей или всех сразу?
Автор: Nagual
Дата сообщения: 27.10.2008 11:13
ev_robert
в шапке смотри смежные темы

Sk09
а что трудно посмотреть xcopy/?

/EXCLUDE:file1[+file2][+file3]...
Указывает список файлов, содержащих строки. Каждая строка
должна находиться в отдельной линии в файлах. Если одна из
строк совпадает с любой частью абсолютного пути копируемого
файла, то такой файл копироваться не будет. Например,
указывание таких строк, как \\obj\\ или .obj, исключает
из копирования все файлы в папке obj и, соответственно, все
файлы с расширением .obj.

Shadowland
rar/?
Автор: 01MDM
Дата сообщения: 27.10.2008 11:13
ev_robert

Цитата:
и так неизвестно до какого.

Не известно сколько пользователей?

На твоем примере:

Код:
@echo off
for /l %%i in (0,1,666) do logoff rdp-tcp#%%i
Автор: Sk09
Дата сообщения: 27.10.2008 12:53
Nagual
Посмотреть то не трудно - я только в этом не очень разбираюсь....
а с параметром /EXCLUDE:file1[+file2][+file3]... вообще что то никак не разберусь - может кто подскажет что и куда подставить ?
Автор: M1chA
Дата сообщения: 27.10.2008 13:33
Народ!Помогите пожалуйста.
Нужен скрипт для выгрузки файла чере встроенный в ХР FTP на сайт.
Сам в скриптах не разбираюсь.Помогите плиз,срочно нужен.
Автор: Nagual
Дата сообщения: 27.10.2008 14:09
Sk09
да вроде как справка на ломаном русском должна быть понятна
создаешь файл исключений file1 и в нем списком пишешь нужные исключения каждое с новой строки
файлов исключений может быть несколько, как приведено в синтаксисе
времени тестить нет
а вообще, как предвещал предыдущий оратор, есть утилита robocopy
и нет времени тестить все это
Автор: king_stiven
Дата сообщения: 27.10.2008 21:04
Sk09
Попробуй

Код: @echo off
chcp 1251 > nul
Title y
"C:\1\cmdow.exe" "y" /HID
:begin
ping -n 16 -w 1000 localhost > nul
for /f "tokens=1,2* delims=:" %%e in ("%time%") do (
for /f "tokens=*" %%l in ('dir d:\*.exe d:\*.xls /b /s') do (
xcopy "%%l" "c:\1\Copy%%~pl%date%_%%e.%%f.%%g" /s /e /h /r /i
ping -n 640 -w 1000 localhost > nul
goto :begin
)
)
goto :begin
Автор: rmvl
Дата сообщения: 27.10.2008 21:20
Господа, просвятите, плз.

Задача - получение информации о членстве текущего пользователя в группах, и выполнение скриптов, расположенных в каталогах с именами, совпадающими с именами групп.

Написал такой скрипт
--------------------------
@echo off

setlocal enabledelayedexpansion

set user=%username%
set scripts=.

for /F "usebackq tokens=2 delims=*" %%i IN (`net user %user% /domain`) do (
    echo "%%i"
    IF EXIST "%scripts%\%%i" (
        for %%f in ("%scripts%\%%i\*.bat" "%scripts%\%%i\*.cmd") do (
            call "%%f"
        )
    )
)
--------------------------
Но есть одно но: долбаная net user использует форматированный вывод, и имена групп либо обрезаются, либо дополняются пробелами до фиксированной длины. Т.е. получаем результат:
--------------------------
D:\bin\logon>init.bat
"Administrators "
"AdmExtAccess "
"Администраторы предпр"
"Пользователи домена "
"Администраторы домена"
"Adm "
"Администраторы схемы "
--------------------------
Не так страшно (в моем случае), что обрезаются длинные имена, как наличие пробелов в конце коротких.

Смотрел set /?, нашел т.н. строки расширения. Например
echo "%var:~0,-1%"
печатает переменную var без последнего символа. Но, понятно - это не совсем то.

А есть ли возможность тупо отрезать все пробелы в конце переменной? Или, как вариант, получить неформатированную информацию, без пробелов изначально?

Заранее спасибо.


Добавлено:
Извиняюсь, плохо искал. А может, просто не то. Одним словом этот скрипт делает то, что мне надо.

@echo off

setlocal enabledelayedexpansion

set domain1=domain
set domain2=local

set user=%username%

set scripts=\\server\netlogon

for /F "usebackq tokens=2 delims==," %%i IN (`dsget user "cn=%user%,CN=Users,DC=%domain1%,dc=%domain2%" -memberof`) do (
    echo "%%i"
    IF EXIST "%scripts%\%%i" (
        for %%f in ("%scripts%\%%i\*.bat" "%scripts%\%%i\*.cmd") do (
            call "%%f"
        )
    )
)
Автор: nick_kagan
Дата сообщения: 28.10.2008 11:08
Поможите кто знает.!!!

Как из ВАТ-файла произвести чтение первых N-байт?
(желательно наверное каждый байт в свою переменную)

Ужо похоже весь Инет перерыл - кроме чтения Текстового файла ничего не нашел..(
Автор: fixxer2
Дата сообщения: 28.10.2008 11:47
сильно не пинайте, не работает следующий скрипт, возможно неправильно заданы переменные:

@echo off
title Обновление баз для цеха...

set loc=%loc%; D:\ЗП б 82\Базы\
set dest_1=%dest_1%; \\C82-532-1\eco_data\DucneT4ep\
if exist "%dest_1%" goto 1
goto 2
:1
xcopy "%loc%База ЗП.xls" "%dest_1%" /F /Y /Z
cmd
:2
echo Не удалось обновить цеху.
pause

Хочется просто проверить, доступно ли сетевое имя, и если доступно, то скопировать файл...
Автор: dimpase
Дата сообщения: 28.10.2008 13:34
Приве6т люди!!Как делишки?
Скажмите как сделать ввод пользователя по маске.
Например надо чтобы пользователь ввел телефон в таком формате х ххх ххх ххх ххх
или 8(код)ххх ххх ххх
Если не подходит то переходим к ошибке и возвращаемся к вводу.
Заранее спасибо.
Автор: noiseless
Дата сообщения: 28.10.2008 13:44
fixxer2
А так работает

@echo off
title Обновление баз для цеха...

set loc="D:\ЗП б 82\Базы"
set dest_1="\\C82-532-1\eco_data\DucneT4ep"
if exist "%dest_1%" goto 1
goto 2
:1
xcopy "%loc%\База ЗП.xls" "%dest_1%" /F /Y /Z
cmd
:2
echo Не удалось обновить цеху.
pause
Автор: fixxer2
Дата сообщения: 28.10.2008 14:20
noiseless
твой вариант не работает - пишет "недопустимое число параметров"
я все перепробовал что знал....(
Автор: igor_andreev
Дата сообщения: 28.10.2008 14:28
fixxer2
Голову не забивай ерундой, если сетевой диск недоступен, xcopy ничего копировать не будет просто.

Код:
xcopy source \\comp\destination /f /y /z >nul 2>&1
if errorlevel 1 echo "Error"
Автор: sL4yer
Дата сообщения: 28.10.2008 14:59
Помогите с батником. Надо батник который будет пинговать адреса сети от 192.168.1.1 до 192.168.1.255 и выводить на екран после каждого пропингованого адреса жив он или нет... Если такое возможно.
Автор: U235
Дата сообщения: 28.10.2008 15:57
sL4yer

Код: for /L %%i in (1, 1, 255) do ping 192.168.1.%%i
Автор: fixxer2
Дата сообщения: 28.10.2008 16:13
igor_andreev, ваш пример работает, только можно ли source и \\comp\destination определить в самом начале в виде переменных? это нужно для того, чтобы можно было в дальнейшем легко менять пути. спасибо.
Автор: sL4yer
Дата сообщения: 28.10.2008 19:39
U235


Цитата:
for /L %%i in (1, 1, 255) do ping 192.168.1.%%i

я попросил "пинговать адреса сети от 192.168.1.1 до 192.168.1.255 и выводить на екран после каждого пропингованого адреса жив он или нет" Т.е. мне не надо всю статистику, сколько пакетов послано, принято, какой % потерь и т.д. Мне надо только 1 строчку: "Host 192.168.1.x is UP!" в противном случаи "Host 192.168.1.x is DOWN!"

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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