ProblemJak przekazać parametr do pliku wsadowego zawierającego% bez "zerwania"?
W głównym pliku wsadowym wartości są wyciągane z pliku.txt (i SET
jako wartości zmiennych, w tym plik wsadowy). Każda z tych wartości może zawierać znaki %
.
Są one odczytywane z pliku .txt bez żadnych problemów. Jednak gdy zmienna o wartości zawierającej znak %
jest przekazywana do drugiego pliku wsadowego, drugi plik wsadowy interpretuje dowolne znaki %
jako rozszerzenie zmiennej. . (Uwaga: Nie nie kontrola drugi plik wsadowy)
Przykład
echo %PERCENTVARIABLE%
wyjściowa: I%LOVE%PERCENT%CHARACTERS%
Po przekazaniu do drugiego pliku i echo'ed , będzie (prawdopodobnie) stanie się IPERCENT
, ponieważ interpretuje %LOVE%
i %CHARACTERS%
jako zmienne nieustalone.
Badania
znalazłem składni znaleźć i zastąpić elementy ciągu znaków w pliku wsadowym, jak myślałem, że może potencjalnie zastąpić %
postać z %%
aby go uniknąć. Jednak nie mogę go uruchomić.
Składnia jest -
set string=This is my string to work with.
set string=%string:work=play%
echo %string%
gdzie wyjście byłoby wtedy This is my string to play with.
.
Pytania
- Czy można uciec
%
znaków przy użyciu znaleźć i zastąpić składni w zmiennej? (Jeśli nie, czy jest inny sposób?) - Czy jest to wskazane? (Czy użycie tych znaków wywołujących może spowodować problemy w drugim pliku wsadowym, który (jak wspomniano powyżej) nie miałby nad nim kontroli?)
- Czy istnieje inny sposób rozwiązania tego problemu, jeśli powyższe nie jest możliwe?
Plik może być przetwarzany przez 'db_ham 'przy pomocy' jrepl.bat', jeśli zadanie nadaje się do manipulacji. jrepl używa jscript i może obsługiwać 'trucizny znaków'. – foxidrive
@foxidrive Czy wiesz, jak wpłynęłoby to na użycie wartości zmiennych bezpośrednio w pierwszym skrypcie? Zmienne będą najprawdopodobniej używane w pierwszym skrypcie (mamy kontrolę), a także przekazywane na sekundę (nie pod naszą kontrolą). – Eilidh
Przez "przekazanie do drugiego pliku", masz na myśli wywołanie go za pomocą 'call'? – aschipfl