Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Чтение строки из файла в переменную (http://forum.oszone.net/showthread.php?t=130252)

Николя 29-01-2009 11:15 1023260

Чтение строки из файла в переменную
 
Здравствуйте. Т.к. в написании bat файлов нет опыта, необходима помощь. В определенном каталоге по условию появляется текстовый файл Flag.txt. В файле есть только одна строка - это путь до каталога картинок, формата bmp. Нужно в имеющийся рабочий bat файл, который выполняет некоторые действия, добавить строки, которые бы проверяли наличие файла Flag.txt, читали бы содержимое строки пути и копировали бы все картинки из каталога картинок в определеный каталог.
В батнике есть уже:
if exist Out\123.xml xcopy Out\123.xml \\User\In\ /y
Эта строка, при наличии файла, копирует его в каталог по сети. И после нужно добавить что-то типа
:сначала, видимо, определить путь, откуда копировать файлы (это строка в файле Flag.txt), и
if exist Out\Flag.txt xcopy <Здесь нужен путь, который определили>\*.bmp \\User\Image\ /y
Заранее спасибо!

Petya V4sechkin 29-01-2009 11:34 1023270

Цитата:

Цитата Николя
:сначала, видимо, определить путь, откуда копировать файлы (это строка в файле Flag.txt), и
if exist Out\Flag.txt xcopy <Здесь нужен путь, который определили>\*.bmp \\User\Image\ /y

Код:

If Exist Out\Flag.txt (
  For /F "Delims=" %%I In (Out\Flag.txt) Do Set BmpPath=%%~I
  Xcopy "%BmpPath%\*.bmp" \\User\Image\ /y
)


Николя 29-01-2009 14:20 1023444

Извините, сразу не мог отвечать - не было связи...
Для пробы я сделал простой батник, его содержимое
Echo off
If Exist Out\Flag.txt (
For /F "Delims=" %%I In (Out\Flag.txt) Do Set BmpPath=%%~I
Xcopy "%BmpPath%\*.bmp" F:\Image\ /y
)
В файле Flag.txt одна строка C:\Image
в этом каталоге есть файлы bmp. На диске F тоже есть каталог Image, куда пробую скопировать файлы.
При запуска батника на экран выводит
Не найден файл: *.bmp
Скопировано файлов: 0
А можно ли как-то посмотреть - что же получает в переменную BmpPath ?

Petya V4sechkin 29-01-2009 14:28 1023454

Николя, прошу прощения, так работает:
Код:

@Echo off
SetLocal EnableExtensions EnableDelayedExpansion

If Exist Out\Flag.txt (
  For /F "Delims=" %%I In (Out\Flag.txt) Do Set BmpPath=%%~I
  Xcopy "!BmpPath!\*.bmp" F:\Image\ /y
)

EnableDelayedExpansion - связывание времени выполнения нужно, чтобы значение переменной BmpPath не терялось.

Николя 29-01-2009 14:42 1023468

Да, спасибо огромное, так работает!
Поясните, если не трудно... А эт добавленная строка не повлияет на выполнение других команд, которые есть у меня в рабочем батнике? Там у меня есть другое копирование, запуск приложения... В принципе, ничего сложного там нет, но в реале проверить не могу.
И она должна быть именно в начале файла или же перед строкой выполнения этого копирования?

Petya V4sechkin 29-01-2009 15:13 1023497

Цитата:

Цитата Николя
А эт добавленная строка не повлияет на выполнение других команд, которые есть у меня в рабочем батнике?

EnableDelayedExpansion может влиять, если в именах файлов и папок есть спецсимволы типа "!" (восклицательного знака).

Цитата:

Цитата Николя
И она должна быть именно в начале файла или же перед строкой выполнения этого копирования?

Обычно в начале файла, хотя можно и перед циклом.

Николя 29-01-2009 15:15 1023500

Спасибо еще раз! Очень помогли. Уважаю специалистов.

sushnyak 20-03-2009 17:24 1069489

@echo on
cd /d %ALLUSERSPROFILE%
cd ..
dir /b >%temp%\users.temp

Получается список учеток:
допустим 3
All Users - (ALLUSERSPROFILE)
Администратор - (USERPROFILE)
Петя
Первые 2 можно опреледить как системные переменные ИНТЕРЕСУЕТ ПУТЬ К ТРЕТЬЕЙ учетке или сколько их там может быть
затем необходимо по очереди подставить путь учетки как переменную в cmd, скажем для
копирования данных из учетки в иное место, вроде этого
XCOPY /S /E /Y "%USERPROFILE%\Рабочий стол" "D:\_Recover\Documents and Settings\%USERNAME%\Рабочий стол\"

по окончанию копирования, подставить другое значение (Путь) и продолжить

Иными словами, как определить как системную переменную путь к папке профиля не активного юзера.

Petya V4sechkin 20-03-2009 18:16 1069532

sushnyak, примерно так:
Код:

@Echo Off
SetLocal EnableExtensions

CD /D "%AllUsersProfile%"
CD ..
For /F "Delims=" %%I In ('Dir /B /AD-S-H ^| FindStr /V /B /I /C:"All Users"') Do (
  MD "D:\_Recover\Documents and Settings\%%I\Рабочий стол"
  XCopy "%%I\Рабочий стол" "D:\_Recover\Documents and Settings\%%I\Рабочий стол" /E /H /Y
)


sushnyak 20-03-2009 18:51 1069587

Petya V4sechkin,

Хорошо, пользователей находит, каталог создает,
а как быть если заданий на копирование много больше,

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


XCOPY /S /E /Y "%USERPROFILE%\Рабочий стол" "D:\_Recover\Documents and Settings\%USERNAME%\Рабочий стол\"
XCOPY /S /E /Y "%USERPROFILE%\Мои документы" "D:\_Recover\Documents and Settings\%USERNAME%\Мои документы\"
XCOPY /S /E /Y "%USERPROFILE%\Избранное" "D:\_Recover\Documents and Settings\%USERNAME%\Избранное\"
XCOPY /S /Y "%USERPROFILE%\Local Settings\Application Data\Microsoft\*.bmp" "D:\_Recover\Documents and Settings\%USERNAME%\Local Settings\Application Data\Microsoft\"
XCOPY /S /Y "%APPDATA%\Adobe" "D:\_Recover\Documents and Settings\%USERNAME%\Application Data\Adobe\"
XCOPY /S /Y "%APPDATA%\Canopus\EDIUS" "D:\_Recover\Documents and Settings\%USERNAME%\Application Data\Canopus\EDIUS\"
XCOPY /S /Y "%APPDATA%\Canopus\ProCoder 2\User Presets\*.cpf" "D:\_Recover\Documents and Settings\%USERNAME%\Application Data\Canopus\ProCoder 2\User Presets\"
XCOPY /S /Y "%APPDATA%\Sony" "D:\_Recover\Documents and Settings\%USERNAME%\Application Data\Sony\"
XCOPY /S /Y "%APPDATA%\Opera" "D:\_Recover\Documents and Settings\%USERNAME%\Application Data\Opera\"
XCOPY /S /Y "%APPDATA%\Mozilla" "D:\_Recover\Documents and Settings\%USERNAME%\Application Data\Mozilla\"
XCOPY /S /Y "%APPDATA%\utorrent" "D:\_Recover\Documents and Settings\%USERNAME%\Application Data\utorrent\"
XCOPY /S /Y "%APPDATA%\BSplayer PRO" "D:\_Recover\Documents and Settings\%USERNAME%\Application Data\BSplayer PRO\"
XCOPY /S /Y "%APPDATA%\Gracebyte Software" "D:\_Recover\Documents and Settings\%USERNAME%\Application Data\Gracebyte Software\"
XCOPY /S /Y "%APPDATA%\VyPRESS" "D:\_Recover\Documents and Settings\%USERNAME%\Application Data\VyPRESS\"
XCOPY /S /Y "%APPDATA%\Radmin" "D:\_Recover\Documents and Settings\%USERNAME%\Application Data\Radmin\"
XCOPY /S /Y "%APPDATA%\AutoPowerOn" "D:\_Recover\Documents and Settings\%USERNAME%\Application Data\AutoPowerOn\"
XCOPY /S /Y "%APPDATA%\Download Master" "D:\_Recover\Documents and Settings\%USERNAME%\Application Data\Download Master\"

Это только то что есть на сейчас, в будущем список увеличится, как тут быть ?

Petya V4sechkin 20-03-2009 18:54 1069590

sushnyak, в цикл вставляйте (образец я вам показал).

Wens 03-04-2009 16:32 1083191

Здравствуйте. Пожалуйста помогите решить задачу, пытаюсь уже второй день и ни получается. Есть тексовый документ (1.txt), в нем около 200 строк текста, некоторые строки пустые, в некоторых спецсимволы. Необходимо создать New.txt и перенести в него из 1.txt первые 50 строк. Необходим перенос именно строк, а не просто текста, т.е. точная копия первых 50 строк из 1.txt . Пытался командой more - переносится не содиржимое экрана cmd, а содиржимое буфера, команда +150 не сработает даже если выставить обратный порядок, т.к. общее кол-во строк значение переменное, первые 50 строк всегда первые, новые появляются снизу, знака минус не предусмотрено, fiind и sort тоже никак.

Petya V4sechkin 03-04-2009 18:33 1083290

Wens, VBS устроит?
Код:

Dim FSO, FIn, FOut, Cnt
Set FSO = CreateObject("Scripting.FileSystemObject")

Set FIn = FSO.OpenTextFile("1.txt", 1)
Set FOut = FSO.CreateTextFile("New.txt", True)

Cnt = 0
Do While Not FIn.AtEndOfStream And Cnt < 50
  FOut.WriteLine FIn.ReadLine
  Cnt = Cnt + 1
Loop

FOut.Close
FIn.Close


Wens 03-04-2009 20:08 1083371

Спасибо за ответ, только эта операция является частью конструкции батника, попробовал встроить ее в батник и создать vbs из него - неполучается. Если особо не затруднит, нельзя ли найти решение через cmd ? В принципе, я командой more +50 создал второй файл txt , в нем нет как раз первых 50 строк, но не получается вывести разницу, пытаюсь заставить Findstr вывести разницу, тоже не получается.

Petya V4sechkin 03-04-2009 20:14 1083377

Цитата:

Цитата Wens
только эта операция является частью конструкции батника, попробовал встроить ее в батник и создать vbs из него - неполучается.

Делаете скрипт .vbs, запускаете из батника командой:
Код:

CScript /Nologo имя_скрипта.vbs

Wens 03-04-2009 21:41 1083476

Так в том то и дело что мне очень надо иметь один только батник, можно создание и запуск скрипта в процессе работы батника, но у меня не получается перекинуть из батника в скрипт строку Do While Not FIn.AtEndOfStream And Cnt < 50 , все остальные строки долетают как надо, а эта либо не долетает вообще, либо с кавычками, либо приходят кракозяблы, между строками пустых строк как у вас нет, но если вставить недостающую, то работает. Вот ищу решение а иначи уже почти готовый батник придется переделывать в скрипт.

Petya V4sechkin 03-04-2009 22:10 1083506

Цитата:

Цитата Wens
не получается перекинуть из батника в скрипт строку Do While Not FIn.AtEndOfStream And Cnt < 50

Код:

Echo Do While Not FIn.AtEndOfStream And Cnt ^< 50 >>имя_скрипта.vbs
Символ ^ для экранирования спецсимволов.

Wens 03-04-2009 22:37 1083534

Ну как обидно! Уже почти додумался сам, экперементировал с символами % и ^ перед <50. Большущее вам спасибо! Кстати летом пользовался вашим интегратором v.8.8.19 .На дистриб SP2купленный когда то в ларьке, был интегрирован SP3, аддоны WMP11 и IE7 - результат обалденный, система очень, очень стабильна, а вот недавно попытался зделать тоже на оригинальный CD SP2 OEM интегратором v.8.12.12 и сразу глюки! Еще раз спасибо за скрипт.

wander84 22-04-2009 13:07 1100900

Здравствуйте. В написании bat файлов у меня мало опыта, необходима помощь.

Ситуация такая:
Есть комп дома и комп на работе. Дома IP динамический. Хочу заходить на домашний комп через "Подключение к удаленному рабочему столу" и др. - нужна информация об изменении IP домашнего компа.

Задумка такая:
В планировщике заданий(назначенные задания) каждый час указываю выполнять BAT-файл с содержанием:
ipconfig > C:\body.txt
C:\blat.exe C:\body.txt -to почта_куда@слать.ru -subject "IP-adress" -charset windows-1251

т.е. информация ipconfig пишется в body.txt и с помощью утилиты blat передается почтой на ящик "почта_куда@слать.ru".

Но в ipconfig много строк, нужна всего одна - IP - xxx.xxx.xxx.xxx (внешний IP)
Как вытащить нужную строку из txt файла? Чтобы её записать, к примеру в другой txt файл, и его передать на почту. Желательно, чтобы IP был в теме сообщения.

Возможно ли сделать так, чтобы информация об IP-адресе сначала сравнивалась с предыдущей и только в случае её изменения отправлялась на почту?

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

Petya V4sechkin 22-04-2009 13:11 1100907

wander84, проще воспользоваться Dynamic DNS

wander84 22-04-2009 13:20 1100919

Petya V4sechkin , спасибо за столь скорый ответ.
Сейчас посмотрю что такое Dynamic DNS и с чем его кушать))

wander84 22-04-2009 13:53 1100945

Petya V4sechkin , я нашел инфу: принцип Dynamic DNS довольно прост - на своем динамическом хосте устанавливается dyndns-клиент, который периодически "сливает" адрес своего хоста на свой публичный dyndns-сервис, на котором зарегистрирован ваш домен, а этот сервис каждый раз корректирует настройки DNS-зоны в соответствии с изменившимся адресом хоста. Иными словами, сервис осуществляет их периодическую синхронизацию таким образом, чтобы доменное имя всегда соответствовало "гуляющему" IP-адресу вашего хоста.

Только вот у меня нет хоста...
Если всё же возвращаться к нашим BAT-файлам:
Как вытащить нужную строку из txt файла и записать в другой txt файл?
Возможно ли сделать так, чтобы информация об IP-адресе(ipconfig информация,записанная в txt файле) сначала сравнивалась с предыдущей и только в случае её изменения отправлялась на почту?

Petya V4sechkin 22-04-2009 14:03 1100951

Цитата:

Цитата wander84
Только вот у меня нет хоста

Читайте документацию и будет у вас хост.

amel27 23-04-2009 09:37 1101749

wander84, если на интерфейсе публичный адрес (что бывает редко) получить IP можно так:
Код:

@Echo Off

For /F "Tokens=1 Skip=1 Delims={,} " %%i In ('WMIC NICCONFIG Where IPEnabled^=True Get IPAddress^|FindStr "."') Do Call :ParseIP %%i
@Echo IP Address: %$IPAddress%

EXIT

:ParseIP
 Set $IPAddress=%~1
GoTo :EOF

З.Ы. если TCP/IP интерфейс не один, нужно дополнительно указывать в условии его индекс

wander84 23-04-2009 18:23 1102287

amel27, спасибо. Попробуем!

wander84 24-04-2009 12:40 1102877

amel27, TCP/IP интерфейс не один... Только вот как указывать его?


Код:

Настройка протокола IP для Windows

Подключение по локальной сети 3 - Ethernet адаптер:

        Состояние сети  . . . . . . . . . : сеть отключена

xx - Ethernet адаптер:

        DNS-суффикс этого подключения . . :

        IP-адрес  . . . . . . . . . . . . : x.x.x.x

        Маска подсети . . . . . . . . . . : 255.255.255.0

        Основной шлюз . . . . . . . . . . :

{0C251A4C-8E77-44B1-8B87-B0B2DC6244E4} - PPP адаптер:

        DNS-суффикс этого подключения . . :

        IP-адрес  . . . . . . . . . . . . : 92.36.108.126

        Маска подсети . . . . . . . . . . : 255.255.255.255

        Основной шлюз . . . . . . . . . . : 92.36.108.126

92.36.108.126 вот он мне нужен!
amel27, в остальном - код отличный! спасибо!

amel27 25-04-2009 07:03 1103622

wander84, выполнить в командной строке:
Код:

WMIC NICCONFIG Where IPEnabled=True Get Index,IPAddress
определить индекс адаптера и подправить условие в батнике (пример для "1"):
Код:

@Echo Off

For /F "Tokens=1 Skip=1 Delims={,} " %%i In ('WMIC NICCONFIG Where Index^=1 Get IPAddress^|FindStr "."') Do Call :ParseIP %%i
@Echo IP Address: %$IPAddress%

EXIT

:ParseIP
 Set $IPAddress=%~1
GoTo :EOF


wander84 30-04-2009 18:04 1108139

Понял. Получилось. Использую. amel27, Спасибо!

Теперь такая вот задачка стала передо мной:
Создается файл в определенное время. Его имя создается исходя из IP-адреса(полученого выше):
Код:

echo %$IPAddress%>>C:\%$IPAddress%
Вот он создался-например C:\92.15.67.21
Через промежуток времени(скажем 1 час), необходимо проверить какой сейчас IP и сравнить его с тем что создался ранее (C:\92.15.67.21). И если:
1) эти IP одинаковы(равны), то ничего не делать.
2) эти IP неодинаковы(неравны), то выполнить bat-файл

Пока ломаю голову как сделать проверку...

amel27 04-05-2009 08:50 1110202

Цитата:

Цитата wander84
необходимо проверить какой сейчас IP и сравнить его с тем что создался ранее (C:\92.15.67.21). И если:
1) эти IP одинаковы(равны), то ничего не делать.
2) эти IP неодинаковы(неравны), то выполнить bat-файл »

вариант на базе предыдущего:
Код:

@Echo Off

Set $PATH=C:
Set $BATN=C:\Batnik.CMD

For /F "Tokens=1 Skip=1 Delims={,} " %%i In ('WMIC NICCONFIG Where Index^=1 Get IPAddress^|FindStr "."') Do Call :ParseIP %%i
For /F %%i In ('DIR /A:-D/B "%$PATH%\*"^|FindStr /XRC:"[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') Do Set %%i=X

If Not Defined %$IPAddress% Call "%$BATN%"

EXIT

:ParseIP
 Set $IPAddress=%~1
GoTo :EOF


biggiesa 06-05-2009 16:53 1112127

Уважаемые эксперты помогите пожалуйста решить проблему. Есть папка с фаилами, которые надо переслать по е-маилу (отдельный файл посылается отдельным е-маилом) после чего переписать в подпапку, у которой название соответствует дате. Пересылать думал Blatom , пока не могу разобраться как Blatu дать в качестве аргумента имя фаила.

wander84 08-05-2009 17:41 1113850

Цитата:

Цитата amel27
C:\Batnik.CMD »

выполняется в обоих случаях(если IP совпадает с записанным ранее и если IP не совпадает с записанным ранее), а нужно чтобы выполнялся только если IP не совпадает с записанным ранее.

Devils0411 16-05-2009 22:46 1120375

Проблема такого рода. Есть папка "C:\Recovery" с более чем 20000 .txt файлов. В одном из этих файлов есть строка "Progressive" Нужно создать батник, который при нахождении этой строки, или указывал название файла, содержащего эту строку, или копировал его (Скажем на диск D)

Petya V4sechkin 17-05-2009 08:25 1120480

Цитата:

Цитата Devils0411
который при нахождении этой строки, или указывал название файла

Код:

Findstr /L /I /M /C:"Progressive" C:\Recovery\*.txt
Цитата:

Цитата Devils0411
или копировал его (Скажем на диск D)

Код:

@Echo Off
For /F "Delims=" %%I In ('Findstr /L /I /M /C:"Progressive" C:\Recovery\*.txt') Do (
  Echo %%~nxI
  Copy "%%~I" D:\ >nul
)


Devils0411 17-05-2009 11:21 1120554

Цитата:

Цитата Petya V4sechkin
@Echo Off
For /F "Delims=" %%I In ('Findstr /L /I /M /C:"Progressive" C:\Recovery\*.txt') Do (
Echo %%~nxI
Copy "%%~I" D:\ >nul »

Создает почти 1000 процессов cmd.exe

Petya V4sechkin 17-05-2009 14:35 1120678

Цитата:

Цитата Devils0411
Создает почти 1000 процессов cmd.exe

Странно, не должно такого быть.
Можно и по другому цикл сформировать, но это в 10 раз медленнее:
Код:

@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion

For /F "Delims=" %%I In ('Dir /A-D /B C:\Recovery\*.txt') Do (
  Findstr /L /I /M /C:"Progressive" "C:\Recovery\%%I" >nul
  If !ErrorLevel!==0 (
    Echo %%I
    Copy "C:\Recovery\%%I" D:\ >nul
  )
)


ntro142343245 10-06-2009 20:00 1140370

Добрый день помгите вот с такой задачкой!
Собственно, возможно ли при помощи батинка заменять строки в файлах. aka Ctrl+H в любом блокноте.

Сразу же пример.

есть на C:\ файл dir.txt следущего содержания:
Код:

c:\Docume~1\Admin\Cookies\кукис[1].txt
c:\Docume~1\Admin\Cookies\кукис[2].txt
c:\Docume~1\Admin\Cookies\кукис[3].txt
c:\Docume~1\Admin\Cookies\кукис[4].txt
c:\Docume~1\Admin\Cookies\кукис[5].txt

нужно просто перед каждой строчкой поставить send:
Код:

send c:\Docume~1\Admin\Cookies\кукис[1].txt
send c:\Docume~1\Admin\Cookies\кукис[2].txt
send c:\Docume~1\Admin\Cookies\кукис[3].txt
send c:\Docume~1\Admin\Cookies\кукис[4].txt
send c:\Docume~1\Admin\Cookies\кукис[5].txt

если это невыполнимо при помощи бат, то может каким нить другим способом?
ну может при помощи js или vbs?

Petya V4sechkin 10-06-2009 20:31 1140389

ntro142343245, результат в C:\dir2.txt
Код:

@Echo Off
Del /F /Q C:\dir2.txt 2>nul
For /F "Delims=" %%I In (C:\dir.txt) Do Echo send %%I>>C:\dir2.txt


Maza Faka 11-06-2009 07:25 1140705

Цитата:

Цитата ntro142343245
при помощи батинка заменять строки в файлах »

Быстрее, эффективней и без проблем со спец. символами, если использовать SED.EXE :)
Код:

Sed "s/.*/send &/g" <dir.txt > result.txt

yumi 28-07-2009 16:06 1179857

Такой вопрос. С помощью
Код:

REG EXPORT HKLM\SYSTEM\ControlSet001\Control\Network\ NetworkList.reg /nt4
findstr  "^.Name.=" NetworkList.reg > 1.txt

получаю текстовый файл с именами существующих имен сетевых интерфейсов.
Код:

"Name"="Подключение по локальной сети"
"Name"="1394-соединение"
"Name"="Подключение по локальной сети 2"
"Name"="Подключение по локальной сети 3"
"Name"="Беспроводное сетевое соединение"

Как прочитать и перенаправить каждое имя в свою переменную, причем желательно в виде
Код:

Подключение по локальной сети
1394-соединение
Подключение по локальной сети 2
Подключение по локальной сети 3
Беспроводное сетевое соединение

т.е. без всяких лишних символов. Также следует учесть, что сетевых интерфейсов не обязательно будет пять как в данном примере.
Будет использоваться для отключения/включения сети в
Код:

netsh routing ip set interface name="переменная с именем сети" state=disable
Хотя, наверное, в данном случае переменная должна быть одна для организации цикла отключения всех сетевых интерфейсов.
Подскажите пожалуйста.

Petya V4sechkin 28-07-2009 16:26 1179879

Цитата:

Цитата yumi
REG EXPORT HKLM\SYSTEM\ControlSet001\Control\Network\ NetworkList.reg /nt4
findstr "^.Name.=" NetworkList.reg > 1.txt

Оно вообще-то выводит не только существующие, но и все прошлые (фантомные) подключения.

Цитата:

Цитата yumi
Хотя, наверное, в данном случае переменная должна быть одна для организации цикла отключения всех сетевых интерфейсов.

Если позволите предложить альтернативу, можно с помощью CNic.exe
Код:

@Echo Off
SetLocal EnableExtensions

For /F "Skip=4 Tokens=1 Delims= " %%I In ('CNic.exe -l') Do (
  CNic.exe n:%%I -d
)


amel27 28-07-2009 16:37 1179887

...и тем не менее ;)
Цитата:

Цитата yumi
прочитать и перенаправить каждое имя в свою переменную »

Код:

@Echo Off
SetLocal EnableDelayedExpansion

Set $KEY=HKLM\SYSTEM\ControlSet001\Control\Network

CHCP 1251 >Nul
For /F "Tokens=2* Delims=        " %%i In ('REG QUERY %$KEY% /s^|Find " Name"') Do (
  Set /A $I+=1
  Set $N!$I!=%%j
)

CHCP 866 >Nul
Set $N


amel27 29-07-2009 04:13 1180284

Цитата:

Цитата yumi
netsh routing ip set interface name="переменная с именем сети" state=disable

вариант без чтения реестра - через WMI:
Код:

@Echo Off

For /F "Tokens=1* UseBackQ Delims==" %%i In (
  `WMIC NIC Where 'NetConnectionID LIKE "%%"' Get NetConnectionID /Value`
) Do (
  For /F "Delims=" %%a In ('Echo.%%j') Do (
      NETSH Interface Set Interface "%%a" DISABLED
  )
)

Увы, на XP это работать не будет: http://support.microsoft.com/kb/262265/en-us :(

Wens 17-01-2010 19:42 1322888

Здравствуйте. Нужна помощь по созданию батника или скрипта. Задача очень простая, но к сожалению многое позабывал, а времени не хватает. Найти за 2 часа готовое тоже не удалось. Мне бы хотелось создать батник для редактирования текстовых файлов находящихся в разных папках текущего каталога. Конкретно, есть папка и вней куча папок, в каждой из которых есть *txt . Нужно, чтобы батник заменил в во всех этих *txt некоторые символы на другие, с учетом кодировки, т.е. чтобы шрифт был смешанный (Русско-Английский). Вот нашел на рубоарде такое полурешение:
@echo off
chcp 1251

for /f "tokens=*" %%a in ('more^<1.txt') do call :_replace %%a
goto eof

:_replace
set i=%*
echo %i%
set i=%i:о=R%
set i=%i:мама=мать%
set i=%i:доча=сын%
echo %i%>>new.txt
goto eof

:eof

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


Время: 18:26.

Время: 18:26.
© OSzone.net 2001-