批处理文件应连续扫描某个文件夹以查找新的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