我有一个调用java程序的批处理文件.
输出将重定向到同一目录中的日志文件.但是,每次运行批处理文件时都会替换日志文件...
我想将旧输出保留在日志文件中,并始终将新输出附加到日志文件中.
在Windows中,无论是在命令行还是批处理文件中,命令"DIR 2> NUL:3>&2"(您可以将任何内容替换为"DIR",即使不是文件或命令)也会产生所有错误然后失踪,除非你在每个命令后写"2> CON:".为什么CMD甚至会这样做?如何在不启动新的CMD流程的情况下恢复正常?"DIR 2> CON:3>&2"仅适用于该命令.
编辑:这也适用于文件."DIR 2> TEXT.TXT 3>&2"之后的任何错误都将附加到文件中.
我看过很多关于创建一个独特文件名的帖子,从天真的%TIME%到合理的(但不足)%RANDOM%.使用wmic os get localdatetime更好,但它仍然可以在多个CPU /核心机器上失败.在多核计算机上运行5+ shell时,以下脚本最终会失败.
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /L %%i IN (0, 1, 1000) DO (
FOR /F "usebackq" %%x IN (`wmic os get localdatetime ^| find "."`) do (set MYDATE=%%x)
ECHO MYDATE is now !MYDATE!
IF EXIST testuniq_!MYDATE!.txt (
ECHO FAILED ON !MYDATE!
GOTO TheEnd
)
COPY NUL >testuniq_!MYDATE!.txt
)
:TheEnd
EXIT /B 0
Run Code Online (Sandbox Code Playgroud)
有没有人有可靠的方法在shell脚本中创建一个唯一的文件名?
我有test.bat文件包含脚本:
copy host_name table_name -p table_name -t "file.csv"
Run Code Online (Sandbox Code Playgroud)
通常当我点击它时,它工作正常。现在,我想使用 vba 从 Excel 运行 test.bat 文件。
strPath = ws1.Range("G2").value & "\" 'Directory to folder with bat
Shell strPath & "\test.bat", vbNormalFocus
Run Code Online (Sandbox Code Playgroud)
出了点问题,因为我只看到快照/剪辑:就像打开和关闭一秒钟一样......