Виведення результатів кожної команди в окремий файл


2

У мене є такий сценарій, який виконує окремий крок один за одним:

@echo off
set /p guid=Please enter GUID:
start /wait Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test map %guid%
start /wait Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test compare %guid%
start /wait Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test analyse %guid%
start /wait Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test update %guid%
pause 

Я хотів би записати висновок кожного з цих кроків у свій власний текстовий файл, бажано з ім'ям, яке відповідає виконуваному процесу, щоб були створені наступні файли журналу:

map.txt
compare.txt
analyse.txt
update.txt

що ще було б краще, якби у файлах була передбачена дата та час:

2015-09-22 10:23:47.048_map.txt
2015-09-22 10:23:47.048_compare.txt
2015-09-22 10:23:47.048_analyse.txt
2015-09-22 10:23:47.048_update.txt

2
@ joejoe31b Питання щодо пакетних файлів та програмування командного рядка тут на тему.
DavidPostill

Вам потрібно почати вчитися для себе. - перенаправлення - Оператори перенаправлення.
DavidPostill

@DavidPostill О, добре. Вибачте за непорозуміння.
joeeey

Відповіді:


4

Я здогадуюсь, що ви це вже з’ясували. Для інших, у кого може виникнути подібне запитання, ось відповідь:

@echo off
set filePrefix=C:\%Date:~10,4%-%Date:~4,2%-%Date:~7,2%%time%_
set /p guid=Please enter GUID:
start /wait Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test map %guid% > %filePrefix%map.txt
start /wait Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test compare %guid% > %filePrefix%compare.txt
start /wait Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test analyse %guid% > %filePrefix%analyse.txt
start /wait Drop\Debug\Ylp.Web.CmsImportWebJob.exe /test update %guid% > %filePrefix%update.txt
pause

Зауважте, що% date% та% time% можуть бути відформатовані по-різному в різних регіонах -% date% може або не може включати день тижня, і, можливо, може бути dd / mm замість mm / dd; % час% може бути hh: mm: ss або щось інше (наприклад, hh-mm-ss), можливо, з дробовими секундами (десяткова крапка) - тому це може знадобитися коригувати. Зсуви у% date% (10, 4 та 7), можливо, потребуватимуть коригування для визначення року, місяця та дня. Якщо% time% містить колонки, вам потрібно видалити / замінити їх назви файлів Windows, і година може мати провідний простір (замість нуля) між 1:00 та 9:59 ранку.


2
Зверніть увагу , що %date%і %time%може бути відформатований по різному в різних локалей - %date%може або не може включати в себе день тижня, і , можливо , може бути дд / мм замість дд / мм; %time%може бути hh: mm: ss або щось інше (наприклад, hh-mm -s), можливо, з дробовими секундами (десяткова крапка) - тому це може знадобитися коригувати. Зсуви %date%(10, 4 та 7), можливо, потрібно буде скоригувати, щоб визначати рік, місяць та день. Якщо %time%містяться колони, потрібно видалити / замінити їх на імена файлів Windows, і година може мати провідний простір (замість нуля) між 1:00 та 9:59 ранку.
Скотт

Існує багато дискусій в Супер Користувач питання дати Формат часу і в пакетному сценарії Windows , з питань мовного стандарту, з кількома можливими рішеннями.
DavidPostill

Дякую, за додаткову інформацію Скотта. Забув це згадати.
krowe

@krowe це рішення не працює, воно не створює файлів!
Xerxes

1
@Xerxes: (1) Чи відображається вихід з команд де- небудь (наприклад, на екрані чи в іншому файлі)? (2) Якщо ні, то ви впевнені, що ваша програма має вихід? (Якщо ви не використовуєте його немає > filename, ви отримаєте висновок на екран?) (3) А може , що вихід буде перенаправлений? Спробуйте виконати команди з простими іменами, наприклад, > map.txt, > compare.txtі т.д., і переконайтеся , що це працює. (4) Ви можете отримати деяке розуміння того, що робить ваш сценарій, коментуючи echo offкоманду. (5) Чи потрібно використовувати start /wait? Що станеться, якщо просто запустити програму?
Скотт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.