Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Размножить bat

Ответить
Настройки темы
CMD/BAT - [решено] Размножить bat

Ветеран


Сообщения: 531
Благодарности: 4

Профиль | Отправить PM | Цитировать


Здравствуйте, есть код

Код: Выделить весь код
for /f "delims=" %%i in (categories.txt) do (



echo setlocal %%i >>"%%i.bat"
echo setlocal enableextensions %%i >>"%%i.bat"


)
Он создает нужный текст, подставляет переменные из текстового файла и создает файлы с именами, перечисленными в текстовом файле..
Вопрос.. а можно ли как - то вместить вторую переменную? Я хочу ее вставить в текст, она также должна заменяться на то, что в другом txt файле..


Примерно вот так (конечно это работать не будет):

Код: Выделить весь код
for /f "delims=" %%i in (categories.txt), %%k (names.txt) do (



echo setlocal %%i >>"%%i.bat"
echo setlocal enableextensions %%k >>"%%i.bat"


)

Отправлено: 01:29, 10-07-2019

 

Ветеран


Сообщения: 531
Благодарности: 4

Профиль | Отправить PM | Цитировать


Спасибо, сейчас все, как хотел работает, изменил немного, имена берутся из categories, а расширение всегда ".bat". Вроде ничего не испортил... скрипт, который размножил, попробовал запустить, тоже работает.

Скрытый текст
Код: Выделить весь код
INcategories = "C:\Users\Alexander\work\GENERATOR\categories.txt"
INnames = "C:\Users\Alexander\work\GENERATOR\names.txt"
INfish = "C:\Users\Alexander\work\GENERATOR\in.txt"
OutDir = "C:\Users\Alexander\work\GENERATOR"

key1 = "^names^"
key2 = "^categories^"

Set FSO = CreateObject("Scripting.FileSystemObject")

Masscat = Split(ReadFile(INcategories, FSO), vbCrLf)
Massnam = Split(ReadFile(INnames, FSO), vbCrLf)
N1 = LBound(Masscat)
NN = UBound(Masscat)
If NN <> UBound(Massnam) Then
    MsgBox "Files" + vbCrLf + vbCrLf + INcategories + vbCrLf + INnames + vbCrLf + vbCrLf + "contain a different number of lines"
    WScript.Quit 1
End If

fish = ReadFile(INfish, FSO)
Ext = FSO.GetExtensionName(INfish)

On Error Resume Next

For i = N1 To NN
    If Len(Trim(Massnam(i))) <> 0 Then
        Err.Number = 0
        Set Fout = FSO.OpenTextFile(OutDir + "\" + Masscat(i) + ".bat", 2, True)
        If Err.Number <> 0 Then
            MsgBox "Error open file " + vbCrLf + vbCrLf + OutDir + "\" + Massnam(i) + "." + Ext + vbCrLf + vbCrLf + "Err.Number " + CStr(Err.Number) + vbCrLf + Err.Description
            Fout.Close
        Else
            Fout.Write Replace(Replace(fish, key1, Massnam(i)), key2, Masscat(i))
            Fout.Close
        End If
    End If
Next
On Error GoTo 0
' ================================

Function ReadFile(filename, FO)
    On Error Resume Next
    Set Fin = FO.OpenTextFile(filename, 1, False)
    If Err.Number <> 0 Then
        MsgBox "Error open file " + vbCrLf + vbCrLf + filename + vbCrLf + vbCrLf + "Err.Number " + CStr(Err.Number) + vbCrLf + Err.Description
        WScript.Quit 1
    End If
    ReadFile = Fin.ReadAll
    Fin.Close
    On Error GoTo 0
End Function

Отправлено: 16:53, 11-07-2019 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Alexander_88, Моя знакомая говАривала: я с Вас валяюсь!
Цитата Alexander_88:
расширение всегда ".bat". »
Тогда и INfish = "C:\Users\Alexander\work\GENERATOR\in.txtbat"
Не знаю, что за батник, но
Цитата megaloman:
Если Вы хотите размножать текст батника, меняя в коде какие-то слова - это тупиковый для СMD путь. В этом случае я предложил вам оформить батник в виде процедуры (причём это можно сделать и в отдельном файле, и нужные данные передавать в вызываемом батнике в параметрах) »
Я Вам делал эту задачу, и батник у меня прекрасно размножался - только не надо в коде что-то менять, передавайте в него параметры.
Цитата Alexander_88:
Вроде ничего не испортил... скрипт, который размножил, попробовал запустить, тоже работает. »
Цитата Alexander_88:
Цитата:
Запустим start.bat.
А зачем это делать? Для чего? »
- а для того же - скрипт, который размножил, попробовал запустить, тоже работает.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 11-07-2019 в 17:29.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:19, 11-07-2019 | #12


Ветеран


Сообщения: 531
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Тогда и INfish = "C:\Users\Alexander\work\GENERATOR\in.txtbat" »
in.txt давно у меня, в него часто записывается нужный текст и не один скрипт с этим файлом работает, его имя и расширение нельзя менять, я в него просто текст батника вставляю, а скрипт уже размножает с именами *.bat

Отправлено: 19:11, 11-07-2019 | #13



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Размножить bat

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Размножить каждую строку в txt файле n количество раз Alexander_88 Скриптовые языки администрирования Windows 16 10-07-2019 19:09
CMD/BAT - [решено] размножить файл muslimdogger Скриптовые языки администрирования Windows 5 21-08-2015 15:14
CMD/BAT - Bat, который создаёт другой bat с командами на изменение текста mazahaka2000@vk Скриптовые языки администрирования Windows 2 13-06-2015 04:52
CMD/BAT - [решено] Размножить текст Alexander_88 Скриптовые языки администрирования Windows 8 19-08-2014 10:44
CMD/BAT - Как настроить последовательный запуск bat-файлов в другом bat. codi28 Скриптовые языки администрирования Windows 12 27-11-2013 18:30




 
Переход