Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何将命令行输出写入文件(例如文件名),但如果命令行输出已经存在,则使用附加的名称(例如文件名(1))创建并写入文件?_Windows_Batch File_Command Line - Fatal编程技术网

Windows 如何将命令行输出写入文件(例如文件名),但如果命令行输出已经存在,则使用附加的名称(例如文件名(1))创建并写入文件?

Windows 如何将命令行输出写入文件(例如文件名),但如果命令行输出已经存在,则使用附加的名称(例如文件名(1))创建并写入文件?,windows,batch-file,command-line,Windows,Batch File,Command Line,我正在从Windows命令行运行一个程序(使用批处理脚本),并将输出写入一个文件。像这样: example.exe>filename.csv 如果filename.csv已存在,则会用新输出覆盖该文件。理想情况下,我想要的是,如果文件已经存在,则将输出保存到修改后的文件名,例如filename(1).csv 可以从命令行执行此操作吗?将下面的程序保存为GetOutput.bat: @echo off rem GetOutput.bat program destFile set "destName

我正在从Windows命令行运行一个程序(使用批处理脚本),并将输出写入一个文件。像这样:

example.exe>filename.csv

如果filename.csv已存在,则会用新输出覆盖该文件。理想情况下,我想要的是,如果文件已经存在,则将输出保存到修改后的文件名,例如filename(1).csv


可以从命令行执行此操作吗?

将下面的程序保存为GetOutput.bat:

@echo off
rem GetOutput.bat program destFile
set "destName=%~N2"
set i=0
:nextName
   if not exist "%destName%%~X2" goto runProg
   set /A i+=1
   set "destName=%~N2 (%i%)"
   goto nextName
:runProg
%1 > "%destName%%~X2"
例如:

GetOutput.bat example.exe filename.csv

你没说什么操作系统。嗨,谢谢,我的坏。使用Windows,已添加到post中。