gpt4 book ai didi

windows - 从批处理文件中重定向输出

转载 作者:可可西里 更新时间:2023-11-01 11:53:49 26 4
gpt4 key购买 nike

我正在创建一个批处理文件,其中包含一些简单的命令以从系统收集信息。批处理文件包含获取时间、IP信息、用户等的命令。

我将所有命令组合在一个批处理文件中,然后运行,但我希望批处理文件在运行时将结果输出到文本文件(日志)。有没有我可以添加到批处理中的命令?

请记住,我不想从 cmd 运行批处理,然后重定向输出;如果可能的话,我想从批处理内部重定向输出。

最佳答案

简单天真的方法很慢,因为它多次打开文件指针并将文件指针定位到文件结尾。

@echo off
command1 >output.txt
command2 >>output.txt
...
commandN >>output.txt

更好的方法 - 更容易编写,速度更快,因为文件只打开和定位一次。

@echo off
>output.txt (
command1
command2
...
commandN
)

另一种只打开和定位文件一次的又好又快的方法

@echo off
call :sub >output.txt
exit /b

:sub
command1
command2
...
commandN

编辑 2020-04-17

您可能时不时地想要重复写入两个或多个文件。您可能还想在屏幕上显示不同的消息。通过重定向到带括号的 block 或子例程之外的未定义句柄,然后使用 & 符号引用已打开的文件,仍然可以有效地执行此操作。

call :sub 9>File1.txt 8>File2.txt
exit /b

:sub
echo Screen message 1
>&9 echo File 1 message 1
>&8 echo File 2 message 1
echo Screen message 2
>&9 echo File 1 message 2
>&8 echo File 2 message 2
exit /b

我选择以相反的顺序使用句柄 9 和 8,因为这样更有可能避免由于 Microsoft redirection implementation design flaw 而导致的潜在永久重定向在同一命令上执行多个重定向时。这是极不可能的,但如果您足够努力,即使是这种方法也可能会暴露错误。如果您进行重定向,则可以保证避免该问题。

3>File1.txt ( 4>File2.txt call :sub)
exit /b

:sub
etc.

关于windows - 从批处理文件中重定向输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20484151/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com