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

TMR*_*MRW 11 windows batch command-line batch-file

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

[batchFilePath] > [logFilePath] 2>&1
Run Code Online (Sandbox Code Playgroud)

或者这样用于标准输出:

C:\MyBatchFile.bat > output.txt
Run Code Online (Sandbox Code Playgroud)

但是有没有办法在不指定批处理文件本身的位置的情况下做到这一点?

例如,假设我运行(只需双击执行)C:\MyFolder\MyBatch.cmd,在退出批处理文件(或完成)后,我可以在 C:\MyFolder\MyBatch.txt 中找到输出

如果是这样,我需要在批处理文件本身中包含哪些代码?

Vla*_*čík 12

将您的命令括在圆括号中。MyBatchFile.bat

@echo off
REM setlocal enabledelayedexpansion

(
  echo line one
  echo line two
  echo line three
) > "%~dpn0.txt"
Run Code Online (Sandbox Code Playgroud)

括号内的变量在(遇到时立即计算。使用enabledelayedexpansion延迟评价。


Lev*_*ans 6

我能想到的唯一解决方案是>> output.txt在每个输出批处理文件的命令的末尾添加。它将在文件的末尾添加文件的输出output.txt

或者创建第二个批处理文件,内容将是.\MyBatchFile.bat > output.txt.