Возврат значения из пакетных файлов (.bat-файл) в текстовый файл - PullRequest
3 голосов
/ 10 апреля 2009

У меня есть файл .bat, показанный ниже

@echo off 
for /f "delims=" %%a in ('C:\MyProj\Sources\SearchString.vbs') do (
set ScriptOut=%%a)
#echo Script Result = %ScriptOut%
echo %ScriptOut% >C:\ThreePartition\Sources\myfile.txt

Я хочу, чтобы моя выходная переменная ScriptOut была сохранена в текстовом файле. Может кто-нибудь предложить какой-либо метод, который будет добавлен в мой существующий пакетный файл.

Спасибо Мэдди

Ответы [ 2 ]

2 голосов
/ 10 апреля 2009

Цикл for, который у вас есть, выполняет этот скрипт и запускается для каждой строки, которую возвращает скрипт. В основном это означает, что ваша переменная окружения %ScriptOut% содержит только последнюю строку вывода (так как она перезаписывается каждый раз, когда цикл обрабатывает другую строку). Так что если ваш скрипт возвращает

a
b
c

, тогда %ScriptOut% будет содержать только c. Если последняя строка пуста или содержит только пробелы, iot эффективно удалит %ScriptOut%, поэтому при выполнении

echo %ScriptOut%

вы получите только ECHO is on., поскольку после подстановки переменной все, что осталось, это echo. Вы можете использовать

эхо.% ScriptOut%

, в этом случае вы получите пустую строку (что будет %ScriptOut% в этой точке.

Если вы хотите напечатать каждую строку, которую скрипт возвращает в файл, вы можете сделать это намного проще, просто выполнив

cscript C:\MyProj\Sources\SearchString.vbs > C:\ThreePartition\Sources\myfile.txt

или используйте >> для перенаправления, если вы хотите, чтобы вывод был добавлен в файл, как Станислав Князев указал .

Если вы просто хотите сохранить последнюю непустую строку, то может сработать следующее:

for /f "delims=" %%a in ('C:\MyProj\Sources\SearchString.vbs') do (
  if not "%%a"=="" set ScriptOut=%%a
)

, который будет устанавливать %ScriptOut% только в случае, если переменная цикла не пуста.

2 голосов
/ 10 апреля 2009

Правильно ли я понимаю, что ваш файл перезаписывается, и вы хотите, чтобы он был добавлен? Если это так, попробуйте это:

echo %ScriptOut% >> C:\ThreePartition\Sources\myfile.txt

(обратите внимание на двойное ">>")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...