我知道我可以通过这种方式获取输出(捕获标准和错误):
[batchFilePath] > [logFilePath] 2>&1
或者这样进行标准输出:
C:\MyBatchFile.bat > output.txt
但是有没有办法在不指定批处理文件本身的位置的情况下做到这一点?
例如,假设我运行(只需双击执行)C:\MyFolder\MyBatch.cmd,退出批处理文件(或完成)后,我可以在 C:\MyFolder\MyBatch.txt 中找到输出
如果是的话我需要在批处理文件本身中包含什么代码?
答案1
我能想到的唯一解决方案是>> output.txt
在每个命令的末尾添加批处理文件的输出。它会将文件的输出添加到output.txt
或者创建第二个批处理文件,其内容为.\MyBatchFile.bat > output.txt
。
答案2
将命令括在圆括号中。MyBatchFile.bat
:
@echo off
REM setlocal enabledelayedexpansion
(
echo line one
echo line two
echo line three
) > "%~dpn0.txt"
(
遇到时,括号内的变量将立即求值。用于enabledelayedexpansion
延迟求值。