Windows 批处理文件以连续检查文件夹中的新CSV文件,逐个重命名这些文件,并使用当前文件启动Firefox

Windows 批处理文件以连续检查文件夹中的新CSV文件,逐个重命名这些文件,并使用当前文件启动Firefox,windows,batch-file,csv,Windows,Batch File,Csv,批处理文件应连续扫描某个文件夹以查找新的csv文件,并且每当在文件夹中放置新的csv文件时,csv文件应重命名为特定的文件名,因为firefox扩展名将读取该文件 我已经为此编写了一个批处理文件,但我认为解决方案并不完美。 这是我的尝试: 我从批处理文件InitRun.bat开始: @echo off for /L %%i in (1,1,86400) do ( call FFRun1.bat timeout /T 1 ) FFRun1.bat如下所示: @echo off FOR %%

批处理文件应连续扫描某个文件夹以查找新的csv文件,并且每当在文件夹中放置新的csv文件时,csv文件应重命名为特定的文件名,因为firefox扩展名将读取该文件

我已经为此编写了一个批处理文件,但我认为解决方案并不完美。 这是我的尝试:

我从批处理文件InitRun.bat开始:

@echo off

for /L %%i in (1,1,86400) do (
call FFRun1.bat
timeout /T 1
) 
FFRun1.bat如下所示:

@echo off

FOR %%f in (*Data.csv) do ( 
echo %%f
set FILE=%%f
call :copy
)
goto end

:copy
copy /y %FILE% merged.csv
del %FILE%
call :RunFF

:RunFF
type merged.csv
pushd "C:\Program Files (x86)\Mozilla Firefox\"
start /wait firefox.exe
popd 

:end
exit /b
如果在文件夹中同时放置两个或多个csv文件,则我的解决方案只能处理一个csv,而merged.csv仅包含最后处理的csv。此外,Firefox打开多个窗口,但也仅适用于复制到merged.csv的最后一个csv

每个新的csv文件都有文件名*Data.csv,应重命名为merged.csv。对于每个新的csv文件,firefox应在新选项卡中启动并处理当前merged.csv。 csv文件不应一次全部重命名,而应逐个重命名。此外,Firefox不应一次启动多个窗口/实例

我希望你能帮助我

问候,


开普勒(Kepler)

它应该按照您指示的方式,按日期顺序在目录上迭代,并将*data.csv转换为合并csv,以供以后处理(firefox使用记事本进行了更改,以便测试,根据需要进行调整)。它还将检查.csv文件是否正在使用,并等待文件可用。如果某个文件无法处理(正在使用),则在锁定的文件可用(按生成顺序处理文件)之前,将无法访问以后的文件

@echo off
    setlocal enableextensions

    set "folder=d:\temp"
    set "files=*data.csv"

    pushd "%folder%"
    for /l %%a in (0 0 1) do (
        if exist "%files%" (
            echo files found
            set "done="
            for /f "tokens=*" %%d in ('dir /b /od "%files%"') do if not defined done (
                call :replace "merged.csv" "%%d"
                if not errorlevel 1 (
                    start "" /wait notepad "merged.csv"
                ) else (
                    set "done=1"
                )
            )
        ) else (
            echo no files to process
        )
        timeout.exe /t 2 >nul 
    )

    endlocal
    exit /b

:replace target source
    if exist "%~1" del /f /q "%~1" >nul 2>nul
    if errorlevel 1 (
        echo file "%~1" is in use
        exit /b 1
    )
    ren "%~2" "%~1" >nul 2>nul
    if errorlevel 1 (
        echo file "%~2" is in use
        exit /b 1
    )
    exit /b 0