Как определить пакетный скрипт, где находится другой скрипт?
У меня есть скрипт, который я могу запустить в командной строке, чтобы получить версию программного обеспечения. Отлично работает в командной строке. Я набираю это в getversion "<full path>"
и это дает мне именно то, что мне нужно.
Теперь уловка в том, что у меня должен быть файл getversion.bat и файл vbscript в каталоге, в котором я работаю для командной строки. Это, вероятно, глупый вопрос, но если я хочу добавить это в пакетный скрипт, где версия задается как переменная, как мне это сделать?
Прямо сейчас у меня это было похоже на это
@echo off
set version=getversion "<full path>"
echo %version%
pause>nul
Кажется, проблема в том, что командный файл не знает, где найти getversion.bat или vbscript, на который ссылается этот скрипт. Как я могу указать командный файл, где они находятся?
1 ответ
Один из способов сделать это - направить вывод вашей функции в файл, а затем прочитать этот вывод обратно в локальную переменную, используя SET /P
команда. Это должно сделать это:
SET TempFile="%Temp%\%RANDOM%.txt"
REM Direct output to a temp file.
CALL getversion "<full path>">%TempFile%
REM Read the output written to the temp file into a local variable.
SET /P Version=<%TempFile%
ECHO %Version%
REM Cleanup.
IF EXIST %TempFile% DEL %TempFile%
Поочередно (и, таким образом, намного "чище"), вы можете использовать FOR
Команда для запуска вашей функции и сохранения вывода в локальной переменной:
FOR /F "usebackq tokens=* delims=" %%A IN (`CALL getversion "<full path>"`) DO SET Version=%%A
ECHO %Version%