этот файл vbscript, который вы даете в своем вопросе, работает
можно сказать set /p yyy=input number:
или %ID% как у вас.
ниже я <= 4, к I <= %ыыы%
ыыы=44, поэтому она будет у меня <= 44
C:\blah>type a.a
var i;
for (i = 1; i <= 4; i++)
{
iimSet("loop", i);
iimPlay("ABC.iim");
}
C:\blah>set yyy=44
C:\blah>replace a.a "i <= 4" "i <= %yyy%"
C:\blah>type a.a
var i;
for (i = 1; i <= 44; i++)
{
iimSet("loop", i);
iimPlay("ABC.iim");
}
C:\blah>
так что просто сделайте файл bat с двумя строками.
Один комплект /п... и заменить строку.
или только одна строка
C:\blah>set /p ggg= & replace a.a var trt
(заменит текст var на текст trt)
здесь заменять.vbs, с которым вы связаны. Я вижу, что он выполняется даже без вызова его с помощью cscript. (проверено на Win 7)
C:\blah>type replace.vbs
Const ForReading = 1
Const ForWriting = 2
strFileName = Wscript.Arguments(0)
strOldText = Wscript.Arguments(1)
strNewText = Wscript.Arguments(2)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)
strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, strOldText, strNewText)
Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
objFile.Write strNewText 'WriteLine adds extra CR/LF
objFile.Close
C:\blah>
обновление-
вот метод, который просто переписать одну строку
@ECHO OFF
REM run like repla 4 to make i <= 4 e.t.c.
REM C:\blah>repla 4<ENTER>
for /f "tokens=1,*" %%f in (a.a) do @(
IF NOT %%f == for (
echo %%f %%g
) ELSE (
ECHO for ^(int i=0; i ^<= %1; i++^)
)
)
обновление 2-
но что касается поиска id
это найти-
он смотрит на for linem разбивает его (токенизирует), используя оскорбительный вид cmd.exe для заявление. В этом случае я просто использовал пространство как делиметр(хотя это можно было бы улучшить). Затем он может найти номер, но он находит номер, за которым следует точка с запятой. Последняя строка заменяет точку с запятой на nothing, т. е. удаляет лишнюю точку с запятой.
@ECHO OFF
for /f "tokens=1-12" %%f in (a.a) do @(
IF %%f == for set num=%%l
)
echo %num:;=%
где я пишу заменить это с помощью заменить.vbs
C:\blah>type a.a
var i;
for (i = 1; i <= 10; i++)
{
iimSet("loop", i);
iimPlay("ABC.iim");
}
C:\crp>findit
10
C:\blah>replace a.a "i <= 10" "i <= 20"
C:\blah>type a.a
var i;
for (i = 1; i <= 20; i++)
{
iimSet("loop", i);
iimPlay("ABC.iim");
}
C:\blah>findit
20
C:\blah>
обновление 3
, чтобы добавить еще одну строку после строки.. это было меня на мгновение, пока я не нашел ; необходимо бежать! партия файлы не красивые
файл, с которым вы хотите работать-a.a
файл bat, который вы запустите, - a2.bat в этом случае. но вы можете назвать его, что вы хотите
как вы можете видеть, он читает.a и исправляет его, добавляя строку после строки, которую вы упомянули.
вы можете запустить a3.летучая мышь тоже делать то же, что и a3.летучая мышь А3.bat выглядит немного аккуратнее, потому что там я понял, что все еще могу заставить его работать, не выходя на полную мощность, избегая много вещей, поэтому a3.летучая мышь немного, но менее уродливо выглядит, чем a2.летучая мышь, но они делают то же самое.
C:\blah>type a.a
var i;
for (i = 1; i <= 20; i++)
{
iimSet("loop", i);
iimPlay("ABC.iim");
}
C:\blah>type a2.bat
@echo off
for /f "tokens=*" %%f in (a.a) do (
echo %%f
if %%f == iimPlay^(^"ABC.iim^"^)^; echo iimPlay^(^"DEF.iim^"^)^;
)
C:\blah>a2
var i;
for (i = 1; i <= 20; i++)
{
iimSet("loop", i);
iimPlay("ABC.iim");
iimPlay("DEF.iim");
}
C:\blah>
я должен отметить, что bat-файл, который добавляет строку, работает неразрушающим методом. Так.а все тот же. Если бы вы захотели a.а чтобы измениться, можно было сделать C:\blah>a2 >b.b<ENTER>
C:\blah>copy b.b a.a<ENTER>
для вывода результатов пакетного файла в новый файл скопируйте его в a.a.
вот еще одна версия пакетного файла, который также работает.. на этот раз, хотя я копировать
a3.bat и a2.летучая мышь дать тот же результат.
и копия, я копия /г, так что он не попросит перезаписать файл.
так запущено А2 >б.B или А3>б.B означает результат ложиться в постель.Б затем скопировать /т б.б.и он переписывает оригинал.файл
C:\crp>type a3.bat
@echo off
for /f "tokens=*" %%f in (a.a) do (
echo %%f
if "%%f" == "iimPlay("ABC.iim");" echo iimPlay("DEF.iim"^)^;
)
C:\crp>a3
var i;
for (i = 1; i <= 20; i++)
{
iimSet("loop", i);
iimPlay("ABC.iim");
iimPlay("DEF.iim");
}
-
просто чтобы показать, что a2 работает одинаково
C:\crp>a2
var i;
for (i = 1; i <= 20; i++)
{
iimSet("loop", i);
iimPlay("ABC.iim");
iimPlay("DEF.iim");
}
-
это можно было сделать с помощью a3 >b.Би тоже. Так как они дают одинаковый выход.
C:\blah>a2 >b.b
C:\blah>copy /y b.b a.a
1 file(s) copied.
C:\blah>copy b.b a.a <-- you wouldn't do this line. i'm just showing the point of /y
Overwrite a.a? (Yes/No/All):
0 file(s) copied.
C:\blah>copy /y b.b a.a
1 file(s) copied.
C:\blah>
-
теперь вы видите.a был изменен, чтобы включить дополнительную строку
C:\blah>type a.a
var i;
for (i = 1; i <= 20; i++)
{
iimSet("loop", i);
iimPlay("ABC.iim");
iimPlay("DEF.iim");
}
C:\blah>