Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
60 / 22 / 9
Регистрация: 24.10.2009
Сообщений: 200

Создание файла с определенным именем и текстом

06.02.2014, 14:54. Показов 4275. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть несколько машин для которых мне нужно сделать батники. Имена берутся из блокнота.
Нужно прочитать файл пример, найти в нем слово example. Изменить на имя 1 машины из блокнота. Далее сохранить получившийся файл с именем этой машины. И так далее пройтись по всему списку машин. Сколько машин в списке столько и файлов. Помогите с реализацией.

вот код копирования на все машины из списка.
Bash
1
2
3
4
5
6
set listfile=host.txt
for /f "tokens=1" %%i in (%listfile%) do call :procedure %%i
:procedure
xcopy iperf "\\%1\D\iperf" /y /q /I /E
exit /b
pause
а вот на поиск и замену строки
Bash
1
2
3
4
5
6
7
8
for /f "tokens=*" %%a in ('more^<Example.bat') do  call :_replace %%a
goto eof
:_replace
set i=%*
set i=%i:HI=HEY%
echo %i%>>Example1.bat
goto eof
:eof
как их объединить в 1 код?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.02.2014, 14:54
Ответы с готовыми решениями:

Автоматическое создание переменной с определённым именем в цикле
Например, нужно чтобы с каждым шагом цикла, создавалась переменная a1, a2, a3 и так далее

Сохранение файла с определенным именем
Хочу чтобы файл сохранялся с именем &quot;id&quot; и при этом сохранял свое расширение &lt;?php $title = $_POST; $prewiew = $_POST; ...

Написание бат файла с определенным текстом и выбором
Всем привет. Нужно написать батник для создания тхт фаайла с определенным текстом. К примеру: Если ты вводишь в кмд &quot;Привет&quot;,...

11
101 / 95 / 8
Регистрация: 07.08.2013
Сообщений: 299
06.02.2014, 15:08
Вы хотите сказать, что по отдельности эти два кода работают?

Что произойдет после того как цикл в первом коде закончится?
И что такое iperf?

Цитата Сообщение от overlord754 Посмотреть сообщение
set i=%i:HI=HEY%
А что делает подобная конструкция?
0
60 / 22 / 9
Регистрация: 24.10.2009
Сообщений: 200
06.02.2014, 15:16  [ТС]
Точнее он копировать ничего не должен. Просто собрать мне нужные файлы в отдельной папке.

Добавлено через 2 минуты
по отдельности в других файлах они работают. Я их упростил. Iperf не имеет значения. На его месте должен быть скрипт который ищет и заменяет слово.
set i=%i:HI=HEY% этак конструкция ищет в Example.bat слово HI и меняет его на HEY. Измененный результат сохраняется в Example1.bat

Добавлено через 2 минуты
Borodа, Мне нужно организовать цикл в цикле. Могу если это важно скинуть полный код в том виде в котором он у меня сейчас.
0
101 / 95 / 8
Регистрация: 07.08.2013
Сообщений: 299
06.02.2014, 15:21
Код не нужен. Нужно нормальное описание ТЗ.

Как я понял:
1. Есть файл: hosts.txt такого вида:
host1
host2
host3
...
2. Есть какой-то файл с текстом. Например:
Example Domain. This domain is established to be used for illustrative examples in documents. You may use this domain in examples without prior coordination ...
Из него нужно сделать файл:
host1 Domain. This domain is established to be used for illustrative examples in documents. You may use this host1 in examples without prior coordination ...
и сохранить в файл с именем host1.txt. Затем сделать файл
host2 Domain. This domain is established to be used for illustrative examples in documents. You may use this host2 in examples without prior coordination ...
и сохранить в файл с именем host2.txt.

Так?
0
60 / 22 / 9
Регистрация: 24.10.2009
Сообщений: 200
06.02.2014, 15:41  [ТС]
Borodа, Вот что у меня
host.txt
windows
mac
mash
bat
файл пример
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
:start
SetLocal
set /p "n=Vdedite kol-vo potokov(0-100): "
if %n% gtr 100 (echo error max=100
        goto start)
echo kol-vo potokov=%n%
xcopy /S "D:\iperf\example.txt" "\\rmi\c\Users\vis\destop\log" /y /q /I
D:\iperf\iperf.exe -c example -i 1 -p 5001 -t 10 -P %n%
echo.
echo Exit = q continue = enter
set /p q=
if "%q%"=="q" (exit) else (goto start)
Нужно пройтись по всем машинам из списка. Создать 4 файла с названиями
Bash
1
2
3
4
startClientIperf_windows.bat 
startClientIperf_mac.bat
startClientIperf_mash.bat 
startClientIperf_windows.bat
И текст в них будет отличаться в 2-х строках
Bash
1
2
xcopy /S "D:\iperf\example.txt" "\\rmi\c\Users\vis\destop\log" /y /q /I
D:\iperf\iperf.exe -c example -i 1 -p 5001 -t 10 -P %n%
соответственно поменять example на название текущей машины.

Добавлено через 12 минут
Вроде так должно быть понятнее
0
101 / 95 / 8
Регистрация: 07.08.2013
Сообщений: 299
06.02.2014, 16:33
Цитата Сообщение от overlord754 Посмотреть сообщение
Вроде так должно быть понятнее
Совсем чуть-чуть... а вам обязательно нужно много батников? Просто я смысл затеи не уловлю.

А что если так?

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@echo off
 
setlocal enabledelayedexpansion enableextensions
set n=1
for /F %%i in (hosts.txt) do (
    set hst!n!=%%i
    echo !n! - %%i
    set /a n+=1
)
 
:enterhost
echo Enter host number
set /p n=
if "!hst%n%!"=="" goto :enterhost
 
:start
set /p "n=Vdedite kol-vo potokov(0-100): "
if %n% gtr 100 (echo error max=100
        goto start)
echo kol-vo potokov=%n%
xcopy /S "D:\iperf\!hst%n%!.txt" "\\rmi\c\Users\vis\destop\log" /y /q /I
D:\iperf\iperf.exe -c !hst%n%! -i 1 -p 5001 -t 10 -P %n%
echo.
echo Exit = q continue = enter
set /p q=
if "%q%"=="q" (exit) else (goto start)
1
60 / 22 / 9
Регистрация: 24.10.2009
Сообщений: 200
06.02.2014, 17:23  [ТС]
Borodа, Нужна именно куча батников)
0
 Аватар для YupiRex
189 / 146 / 32
Регистрация: 04.10.2013
Сообщений: 150
07.02.2014, 09:27
Лучший ответ Сообщение было отмечено overlord754 как решение

Решение

ничего не понятно, на то что бы разобраться в ТЗ потратил больше времени чем на код ниже))
в идеале нужно писать что есть и что должно получиться, ни и пожелания как это должно происходить)
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
 
setlocal enabledelayedexpansion enableextensions
for /F %%i in (hosts.txt) do (call :cre %%i)
 
:cre
echo @echo off>startClientIperf_%1.bat
echo :start>>startClientIperf_%1.bat
echo SetLocal>>startClientIperf_%1.bat
echo set /p "n=Vdedite kol-vo potokov(0-100): ">>startClientIperf_%1.bat
echo if %%n%% gtr 100 (echo error max=100>>startClientIperf_%1.bat
echo        goto start)>>startClientIperf_%1.bat
echo echo kol-vo potokov=%%n%%>>startClientIperf_%1.bat
echo xcopy /S "D:\iperf\%1.txt" "\\rmi\c\Users\vis\destop\log" /y /q /I>>startClientIperf_%1.batt
echo D:\iperf\iperf.exe -c %1 -i 1 -p 5001 -t 10 -P %%n%%>>startClientIperf_%1.bat
echo echo.>>startClientIperf_%1.bat
echo echo Exit = q continue = enter>>startClientIperf_%1.bat
echo set /p q=>>startClientIperf_%1.bat
echo if "%%q%%"=="q" (exit) else (goto start)>>startClientIperf_%1.bat
exit /b


цикл в цикле:
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in (host.txt) do (call :cre %%a)
exit /b
:cre
for /f "tokens=*" %%a in (123.txt) do (
    set token=%%a
    set token=!token:example=%1!
    echo !token!>>startClientIperf_%1.bat)
exit /b


ЗЫ: нужен host.txt - для считывания имен которые будут подставляться
123.txt - batnik в который будут подставляться имена в место example

пример 123.txt:
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
:start
SetLocal
set /p "n=Vdedite kol-vo potokov(0-100): "
if %n% gtr 100 (echo error max=100
        goto start)
echo kol-vo potokov=%n%
xcopy /S "D:\iperf\example.txt" "\\rmi\c\Users\vis\destop\log" /y /q /I
D:\iperf\iperf.exe -c example -i 1 -p 5001 -t 10 -P %n%
echo.
echo Exit = q continue = enter
set /p q=
if "%q%"=="q" (exit) else (goto start)
2
101 / 95 / 8
Регистрация: 07.08.2013
Сообщений: 299
07.02.2014, 23:44
Цитата Сообщение от YupiRex Посмотреть сообщение
set token=!token:example=%1!
О как... а эта конструкиця подразумевает замену подстроки в строке?

Отвечу сам себе -- да.
Подстановка переменной среды может быть расширена следующим образом:

%PATH:str1=str2%

расширит действие переменной среды PATH, заменяя каждое вхождение "str1" в
расширенном результате на "str2". "str2" может быть пустой строкой для
эффективного удаления вхождений "str1" из расширенного вывода. "str1" может
начинаться со звездочки, и в этом случае это будет соответствовать любому
началу расширенного вывода до первого вхождения оставшейся части "str1".
Не знал. Спасибо.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
08.02.2014, 00:43
Borodа, про это (и не только) пишется здесь:
https://www.cyberforum.ru/post2316786.html
здесь:
https://www.cyberforum.ru/post3685660.html
и конечно здесь:
set /?
1
60 / 22 / 9
Регистрация: 24.10.2009
Сообщений: 200
10.02.2014, 14:03  [ТС]
Dragokas, Borodа, YupiRex, А может кто-нибудь объяснить почему этот код
Bash
1
2
3
4
5
6
7
8
for /f "tokens=*" %%a in ('more^<1.bat') do  call :_replace %%a
goto eof
:_replace
set i=%*
set i=%i:HI=HEY%
echo %i%>>2.bat
goto eof
:eof
убирает % в файле на выходе напрочь
Можно ли этого избежать?

Добавлено через 41 минуту
все уже разобрался) всем спасибо за помощь)
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
10.02.2014, 22:42
Bash
1
2
3
4
5
6
For /f "Usebackq tokens=*" %%a in ("1.bat") do set "i=%%a"& call :_replace
goto :eof
 
:_replace
set "i=%i:HI=HEY%"
echo %i%>>2.bat
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.02.2014, 22:42
Помогаю со студенческими работами здесь

Надстройка для удаления файла с определенным именем при закрытии
Добрый вечер, уважаемые форумчане! Подскажите, пожалуйста. Можно ли сделать такую надстройку, чтобы екселевские файлы с некоторым...

Авто запуск макроса из личной книги при открытии файла с определенным именем
Привет, друзья! у меня есть много макросов в личной книге, как сделать что-бы при запуске файла с названием Книга1 запускался макрос...

Создание txt файла с текстом, полученным из названия файла в папке
Здравствуйте! В папке содержится огромное число файлов (более 300 тыс в каждой папке), которые имеют следующие названия: ...

Создание файла с текстом
Уважаемые форумчене, помогите разобраться с небольшой, но достаточно парадоксальной проблемой! Моя задача состоит в том, чтобы создать...

Создание файла с текстом
Здравствуйте, нужно поместить такой текст в cmd: echo echo del %%0 &gt;&gt; file.cmd &gt;&gt; create.cmd Но при создании create.cmd текст &gt;&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru