Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Автоматизация администрирования. Часть 3

Автор: firsteducation
Дата сообщения: 10.08.2011 10:38
Здравствуйте, подскажите, почему данный скрипт не отрабатывает, при автоматеческом запуске из реестра из папки со скриптом копируется только папка, а файлы берутся из "мои документы", что нужно подправить?:

set zz= ;затираем переменную
setlocal enabledelayedexpansion
for %%d in (e) do dir %%d:>nul 2>&1 && set zz=!zz!,%%d ;проверка жёсткий диск или нет
if "%zz:~1,1%"=="e" goto a1 ;если да продолжаем
goto qw
:a1
if exist e:\NFS-Most goto qw ;проверяем есть ли уже папка которую копируем
set DV=E:
set MI=0
WMIC.Exe Path Win32_LogicalDisk Where DriveType="2" get Caption > e1.txt ;ещё одна проверка
for /F "skip=1" %%i IN ('type e1.txt') Do (if /i %%i==%DV% (set MI=1))
if /i %MI% NEQ 1 goto StCopy1
goto qw
:StCopy1
set ff=%~p0
xcopy "%cd%" "%DV:~0,2%%ff:~-11%" /C /E /H /Y /Q ;процесс копирования из папки с активным скриптом
:qw
Автор: chip1984
Дата сообщения: 10.08.2011 17:22
Добрый день, нужна помощь по cmd. Есть файл каталога ldap (*.ldif) который имеет структуру:

dn: cn=Иванов Иван Петрович
title:
givenName: Иванов Иван Петрович
cn: Иванов Иван Петрович
mail: ivanov_ip@m2.zao.ru
sn: Иванов Иван Петрович

dn: cn=Петров Андрей Сергеевич
title:
givenName: Петров Андрей Сергеевич
cn: Петров Андрей Сергеевич
mail: petrov_as@h07.zao.ru
sn: Петров Андрей Сергеевич

..................

известны две переменные
%username% имя пользователя есть в строке mail: petrov_as@h07.zao.ru до @ (petrov_as)
%dnsname% имя почтового сервера есть в строке mail: petrov_as@h07.zao.ru после @ (h07.zao.ru)

зная эти данные нужно вытащить в переменную %name% значение Петров Андрей Сергеевич
Как это реализовать?
Автор: firsteducation
Дата сообщения: 11.08.2011 10:48
Странно, почему молчание? Кто нибудь может подсказать почему скрипт в таком виде копирует не содержимое папки в которой лежи, а из папки мои документы:

set zz= ;затираем переменную
setlocal enabledelayedexpansion
for %%d in (e) do dir %%d:>nul 2>&1 && set zz=!zz!,%%d ;проверка жёсткий диск или нет
if "%zz:~1,1%"=="e" goto a1 ;если да продолжаем
goto qw
:a1
if exist e:\NFS-Most goto qw ;проверяем есть ли уже папка которую копируем
set DV=E:
set MI=0
WMIC.Exe Path Win32_LogicalDisk Where DriveType="2" get Caption > e1.txt ;ещё одна проверка
for /F "skip=1" %%i IN ('type e1.txt') Do (if /i %%i==%DV% (set MI=1))
if /i %MI% NEQ 1 goto StCopy1
goto qw
:StCopy1
set ff=%~p0
xcopy "%cd%" "%DV:~0,2%%ff:~-11%" /C /E /H /Y /Q ;процесс копирования из папки с активным скриптом
:qw

Когда код был несколько иного рода всё работало как надо, вот старый код:

if exist e: goto a1
goto qw
:a1
if exist e:\NFS-Most goto qw
set DV=E:
set MI=0
WMIC.Exe Path Win32_LogicalDisk Where DriveType="2" get Caption > e1.txt
for /F "skip=1" %%i IN ('type e1.txt') Do (if /i %%i==%DV% (set MI=1))
if /i %MI% NEQ 1 goto StCopy1
goto qw
:StCopy1
set ff=%~p0
xcopy "%cd%" "%DV:~0,2%%ff:~-11%" /C /E /H /Y /Q
:qw

запускаю я это дело из реестра при старте системы vbs скриптом start-copy.vbs:

On Error Resume Next
Wscript.Sleep 18000
Dim LaunchDir, FSO, WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
LaunchDir=WScript.ScriptFullName
LD=mid(LaunchDir,1,inStr(LaunchDir,"start-copy.vbs")-1)
WSHShell.Run LD&"game.bat", 0, false

Почему новый скрипт копирует из нужной папки только файл e1.txt, а остальное из папки администратор?
Автор: YNY
Дата сообщения: 12.08.2011 14:00
ВОПРОСЫ ПО CMD и BAT следует задавать в соответствующей ветке!!!
Если ветка не открыта -- пинать соответствующего модератора!!!
Автор: firsteducation
Дата сообщения: 12.08.2011 14:23
YNY
а не можешь подсказать что нужно дописать в этом скрипте:

On Error Resume Next
Wscript.Sleep 18000
Dim LaunchDir, FSO, WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
LaunchDir=WScript.ScriptFullName
LD=mid(LaunchDir,1,inStr(LaunchDir,"start-copy.vbs")-1)
WSHShell.Run LD&"game.bat", 0, false
Автор: YNY
Дата сообщения: 12.08.2011 15:00
firsteducation
если старый скрипт воркает, тот нах те комменты в теле пиши их сверху, используя REM
символы ; и , Используется для разделения параметров команды
команда1 параметр1;параметр2
Автор: firsteducation
Дата сообщения: 13.08.2011 06:07
В новом скрипте есть возможность обойти копирование на картридер!
Автор: YNY
Дата сообщения: 15.08.2011 16:47
firsteducation
Все вот это: for %%d in (e) do dir %%d:>nul 2>&1 && set zz=!zz!,%%d ;проверка жёсткий диск или нет
if "%zz:~1,1%"=="e" goto a1 ;если да продолжаем
-- какой-то бред, т.к. zz=!zz!, а "%zz:~1,1%" ваще возвращает " "!!!
Автор: firsteducation
Дата сообщения: 15.08.2011 21:30
YNY, но тогда почему в cmd этот скрипт на экране показывает вот такую картину:

e==e goto a1
echo work!
типа нажмите клавиши

Я не знаю где исправлять скрипт, вот и задал вопрос, может есть способы.

Добавлено:
Ах да, ты наверное не имеешь на компе хард помеченный буквой диска e: ?
Автор: newfeofan
Дата сообщения: 16.08.2011 13:51
Всем доброго времени суток. Помогите пожалуйста написать скрипт или в какую сторону рыть при его написании. Экспа очень скромная по написанию VBS скриптов. Скрипт должен уметь:
1) Искать во всех профилях папку history.
2) Перемещал папку на файловую шару.
3) На файловой шаре создавал для каждого профиля, где есть history, папку вида:
ComputerName\UserProfile\history и туда копировал соответственно папку.
Автор: YNY
Дата сообщения: 16.08.2011 16:55
newfeofan
лучше юзай перемещаемый профиль -- так быстрей))
Автор: ali1977
Дата сообщения: 19.08.2011 22:23
товарищи помогите найти скрипт или батник который будет удалять в реестре все записи в которых найдутся определенное слово или айпи адрес
например хочу почистить весь реестр чтобы нигде не осталось строк с параметрами где встречается @sgmax@ или определенный айпи адрес
подскажите пжалста где можно посмотреть решение этого вопроса
Автор: YNY
Дата сообщения: 20.08.2011 13:48
ali1977
используй avz
Автор: firsteducation
Дата сообщения: 20.08.2011 21:35
Кто нить может подсказать почему при запуске из реестра vbs скрипта:

Dim LaunchDir, FSO, WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
LaunchDir=WScript.ScriptFullName
LD=mid(LaunchDir,1,inStr(LaunchDir,"test5.vbs")-1)
WSHShell.Run LD&"test4.bat", 0, false

который запускает батник test4.bat:

set zz=
setlocal enabledelayedexpansion
for %%d in (d) do dir %%d:>nul 2>&1 && set zz=!zz!,%%d
if "%zz:~1,1%"=="e" goto tes
goto param
:tes
set ff=%~p0
xcopy "%cd%" "%zz:~1,1%:%ff:~-11%"

копирование происходит всегда из папки мои документы, то есть скрипт срабатывает правильно только при ручном запуске, что переписать?
Автор: ali1977
Дата сообщения: 22.08.2011 08:02
YNY
премного благодарен - даже не подозревал о таких возможностях AVZ
Автор: YNY
Дата сообщения: 22.08.2011 17:39
firsteducation
[more=ПОТОМУ, что вот это ваще никак не воркает]
set zz=
setlocal enabledelayedexpansion
for %%d in (d) do dir %%d:>nul 2>&1 && set zz=!zz!,%%d
if "%zz:~1,1%"=="e" goto tes
goto param
:tes
set ff=%~p0
[/more]
for %%d in (d) do dir %%d:>nul 2>&1 -- не дает никакова результата т.к. стоит nul (если бы вместо nul стояло бы file.txt, то создавался бы файл с результатом работы dir %%d!
set zz=!zz!,%%d -- всегда равен !ZZ!,d и нах тогда for ваще не ясно!!!
Короче ты наворотил полный бред!!!
Автор: firsteducation
Дата сообщения: 22.08.2011 19:33
YNY вот код рабочего батника, потестируй, у меня работает:

@title My programm
@echo .
@echo This program shows you accessibility of the disk for writing,
@echo will simply enter the letter of the disk, which want to check.
@echo .
@echo off
:rew
set zz=
set /P varq="set drive letter: "
cls
set zip=%varq%
setlocal enabledelayedexpansion
for %%d in (%varq%) do dir %%d:>nul 2>&1 && set zz=!zz!,%%d
if "%zz:~1,1%"=="~1,1" goto a2
if "%zz:~1,1%"=="%zip%" goto a1
:a2
@echo .
@echo This program shows you accessibility of the disk for writing,
@echo will simply enter the letter of the disk, which want to check.
@echo .
@echo drive %zip%: is inaccessible!
@echo .
pause
cls
@echo .
@echo This program shows you accessibility of the disk for writing,
@echo will simply enter the letter of the disk, which want to check.
@echo .
goto rew
:a1
@echo .
@echo This program shows you accessibility of the disk for writing,
@echo will simply enter the letter of the disk, which want to check.
@echo .
@echo drive %zip%: is available!
@echo .
pause
cls
@echo .
@echo This program shows you accessibility of the disk for writing,
@echo will simply enter the letter of the disk, which want to check.
@echo .
goto rew
Автор: YNY
Дата сообщения: 23.08.2011 16:58
firsteducation
че-то у меня воркало а потом сломалось((
у тебя в for %%d in (d) стоит диск d, а потом, в условии, проверяется на соответствие к диску e -- условие никогда не верно. Далее у тя стоит переход на param , но метки :param ниже нет -- не выполняется и идет дальше!
Т.О. более правильно твой батник должен выглядеть [more=как-то так]
@echo off
set zz=
setlocal enabledelayedexpansion
for %%d in (d) do dir %%d:>nul 2>&1 && set zz=!zz!,%%d
if "%zz:~1,1%"=="d" goto tes
goto param
:tes
set ff=%~p0
echo "%cd%" "%zz:~1,1%:%ff:~-11%"
rem закомментируй, поставив в начале rem, верхнюю строчку и раскомментируй
rem нижнюю, убрав rem, после того, как убедишься в корректности путей копирования
rem xcopy "%cd%" "%zz:~1,1%:%ff:~-11%"
rem goto end -- завершает работу батника
goto end
:param
endlocal
[/more]
Скрипт должен копировать из папки в которой лежит!
При запуске из реестра, посредством vbs, нуна заменить "%cd%" на "%~dp0"!!!
Автор: firsteducation
Дата сообщения: 23.08.2011 17:58
СПС YNY проверю твой скрипт, надеюсь всё получится, есчё раз благодарствую.


Добавлено:
YNY Проверил твой скрипт, в переменной пустое значение.
Автор: YNY
Дата сообщения: 24.08.2011 15:32
firsteducation
А конкретней ты можешь излагать???
Проверь чтоб небыло лишних пробелов в срочках:
set zz=
SET zz=!zz!,%%d
ff=%~p0
и т.п. т.к. пробелы не видны но реально могут существовать и нарушать работу батника
Автор: firsteducation
Дата сообщения: 24.08.2011 18:51
YNY объясни пжалста свой коммент:


Цитата:
При запуске из реестра, посредством vbs, нуна заменить "%cd%" на "%~dp0"!!!


Возможно в этом крылись накладки

Автор: YNY
Дата сообщения: 25.08.2011 15:27
firsteducation
чего пояснять? как найти первое и заменить вторым???
Автор: firsteducation
Дата сообщения: 26.08.2011 20:54
YNY сэнкс!!! замена на "%~dp0" помогла, скрипт воркает!
Автор: yuramic
Дата сообщения: 27.09.2011 16:10
Подскажите пожалуйста как средствами виндовс повесить скрипт на выполнение при включении или выключении компьютера
Автор: vlary
Дата сообщения: 27.09.2011 16:11
yuramic
Цитата:
Подскажите пожалуйста как средствами виндовс повесить скрипт на выполнение при включении или выключении компьютера
Через диспетчер задач.

Автор: sanb
Дата сообщения: 15.10.2011 18:32
Всем привет!
Как можно автоматизировать запуск программы на втором мониторе в Windows XP?
Заранее благодарен.
Автор: YNY
Дата сообщения: 19.10.2011 15:22

Цитата:
sanb

запусти один раз на втором мониторе приложение и все последующие разы оно должно открываться на 2-м мониторе если рабочий стол расширен!
Автор: sanb
Дата сообщения: 19.10.2011 21:18
YNY
если бы всё так было просто...
приложение "деревянное"
Автор: firsteducation
Дата сообщения: 30.10.2011 17:57
Здрасти! каким образом можно при использовании команды rd в батнике задать удаление исключая некоторые файлы или папки, то-есть чтобы они были в переменной, которая бы проверялась, нужно чтоб указанные в такой переменной файлы и папки остались, то-есть эта переменная содержит список (файлы папки). Заранее спасибо.
Автор: YNY
Дата сообщения: 03.11.2011 12:12
firsteducation
а что топик по батникам опять исчерпался)?

Страницы: 1234567891011

Предыдущая тема: Не Работает сканер по сети HP 3055


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