Pracuję z JavaScript iMacro .js
pliki, które są prostymi, niezaszyfrowanymi liniami tekstu podobnego do kodu. Plik zawiera następujący kod:
var i;
for (i = 1; i <= 10; i++)
{
iimSet("loop", i);
iimPlay("ABC.iim");
}
Ta pętla powtarza się 10 razy. Chcę pobrać dane wejściowe od użytkownika w pliku wsadowym, na przykład:
set /p ID="Enter Number: " %=%
i zastąp to 10 liczbą wprowadzoną przez użytkownika, tj %ID%
Znalazłem to pytanie: Jak znaleźć i zastąpić tekst w pliku za pomocą środowiska wiersza polecenia systemu Windows?
Ale z jakiegoś powodu muszę użyć wbudowanych funkcji dostępnych w wierszu poleceń systemu Windows (nic zewnętrznego jak PowerShell itp.).
Coś, czego próbowałem (z powyższych odpowiedzi; nie zadziałało)
cscript replace.vbs "C:\XYZ.js" "i <= 10" "i <= %ID%"
windows
command-line
batch
vbscript
SuperUserMan
źródło
źródło
Odpowiedzi:
Ten plik vbscript, który podasz w swoim pytaniu, działa
Można powiedzieć
set /p yyy=input number:
lub% ID%, jak masz.Poniżej zmieniam i & lt; = 4 na i & lt; =% rrr%
yyy = 44, więc staje się i & lt; = 44
Zrób więc plik bat z dwiema liniami. Jeden z set / p ... i jeden z linią zastąpienia.
Albo tylko jedna linia
(zastąpi tekst var, tekstem trt)
Oto replace.vbs, z którym się łączysz. Widzę, że działa nawet bez wywoływania go za pomocą cscript. (testowany w Win 7)
AKTUALIZACJA-
tutaj jest metoda, która po prostu przepisuje tę dla linii
AKTUALIZACJA 2-
ale jak na znalezienie identyfikatora
Czyni to FIND-
Spogląda na linem, aby go rozdzielić (Tokeny to), używając obraźliwego pliku cmd.exe dla instrukcji. W tym przypadku użyłem spacji jako ogranicznika (choć można to poprawić). Może wtedy znaleźć numer, ale znajdzie numer, po którym następuje średnik. Ostatnia linia zastępuje średnik niczym, tzn. Usuwa zbłąkany średnik.
gdzie piszę zastępuje to używając replace.vbs
AKTUALIZACJA 3
aby dodać kolejną linię po linii ... która miała mnie na chwilę, dopóki nie znalazłem; trzeba uciekać! pliki wsadowe nie są ładne
Plik, z którym chcesz pracować, to a.a
Plik bat, który uruchomisz, to w tym przypadku a2.bat. ale możesz nazwać to, co chcesz
jak widzisz, czyta a.a i zmienia to dodając linię po linii, o której wspomniałeś.
możesz również uruchomić a3.bat, aby zrobić to samo, co a3.bat a3.bat wygląda nieco lepiej, ponieważ zdałem sobie sprawę, że nadal mogę go uruchomić, nie przepuszczając wielu rzeczy, więc a3.bat jest trochę ale mniej brzydkie niż a2.bat, ale robią to samo.
Powinienem zaznaczyć, że plik nietoperza, który dodaje linię, działa nieniszcząco. Tak więc a.a jest nadal taki sam. Jeśli chcesz, aby a.a została zmieniona, możesz to zrobić
C:\blah>a2 >b.b<ENTER>
C:\blah>copy b.b a.a<ENTER>
wyprowadzić wyniki pliku wsadowego do nowego pliku, a następnie skopiować go na a.a.Oto kolejna wersja pliku wsadowego, który również działa .. tym razem, chociaż robię kopię
a3.bat i a2.bat dają ten sam wynik.
i dla kopii użyłem kopii / y, aby nie prosić o zastąpienie pliku.
więc uruchamianie a2> b.b lub a3> b.b oznacza, że wyniki przechodzą do b.b Następnie skopiuj / t b.b a.a i zastąpi oryginalny plik a.a
- żeby pokazać, że a2 działa tak samo
-
można to zrobić również za pomocą a3> b.b. Ponieważ dają ten sam wynik.
- teraz widzisz, że a.a zmieniła się, aby dodać dodatkową linię
źródło
Niestety ta odpowiedź nie robi „wyszukiwania”, ale twój plik może być łatwo ponownie napisany w małej liczbie wierszy, więc może być łatwiej przepisać zawartość pliku ...?
To jest plik nietoperza, na przykład
js.bat
źródło
set /p ID="Enter Number: "
) i po prostu ponownie zapisuje plik javascript OP, ale wstawia liczbę pętli ze zmiennej wsadowej do definicji pętli i wyświetla resztę pliku do pliku o nazwie javascript.js - nie wiem, jak inaczej to wyjaśnić. .: S