批处理脚本将文件夹中的所有文件列出到文本文件而不重复

时间:2015-12-08 18:32:08

标签: batch-file directory append

我正在尝试编写一个简单的批处理脚本来重命名,移动和存储程序的崩溃日志文件。日志文件使用日期戳和时间戳命名,因此最终结果是包含许多具有不同日期/时间戳的日志文件的文件夹。我想在列表中列出该文件夹的内容。我能够做到以下几点:

$(window).load(changeWidth());
$(window).resize(function() {
  changeWidth();
  alert('hola');
});

问题在于,每次创建新日志文件时,它都会列出文件夹中的文件。例如,我在文件夹中有以下日志文​​件:

dir /b >> list.txt

并且在程序崩溃后创建了一个新的日志文件log1 log2 log3 ,当脚本运行时,列表显示以下内容:

log4

有没有办法只将新的日志文件附加到我的列表中?

2 个答案:

答案 0 :(得分:4)

您使用双>>进行追加但你可以简单地使用一个>覆盖文件。如果您没有尝试排除结果列表中的任何文件,这可能是最简单的方法。

答案 1 :(得分:1)

我同意@Daniel和@Eric的说法,我无法想到一个场景,你不能只使用>覆盖所有现有日志的list.txt;重定向......

如果由于某种原因你需要,你可以这样做:

@echo off
if not exist list.txt type nul>list.txt

for /f "tokens=*" %%a in ('dir /b') do call :findDuplicate "%%a"
goto:eof

:findDuplicate
type list.txt | find %1>nul
if %ERRORLEVEL% EQU 0 (
   :: file already in list.txt, so don't append
   goto:eof
   ) else (
   :: file wasn't found, append to list.txt
   echo %~1 >> list.txt
   )
goto:eof