将批处理脚本输出转储到文本文件中,而无需事先指定批处理文件位置

将批处理脚本输出转储到文本文件中,而无需事先指定批处理文件位置

我知道我可以通过这种方式获取输出(捕获标准和错误):

[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延迟求值。

相关内容