批处理文件以连续检查文件夹中的新CSV文件,一个接一个地重命名它们,并使用当前文件启动Firefox



批处理文件应连续扫描某个文件夹以查找新的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应该在一个新的选项卡中启动并处理当前的merge.csv。csv文件不应一次全部重命名,而应一个接一个地重命名。此外,Firefox不应同时启动多个窗口/实例。

我希望你能帮助我。

问候,

开普勒

它应该按照您的指示,按日期顺序迭代目录,并将*data.csv转换为merge 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

相关内容

最新更新