批处理文件应该连续扫描某个文件夹以获取新的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-File都有文件名* Data.csv,应该重命名为merged.csv,对于每个新的csv文件,firefox应该在新的选项卡中启动并处理当前的merged.csv。 不应该一次性重命名csv-Files,而是一个接一个地重命名。 Firefox也不应该一次启动多个窗口/实例。
我希望你能帮助我。
此致
开普勒
答案 0 :(得分:0)
它应该执行您指示以日期顺序迭代目录并将* data.csv转换为merge csv以供稍后处理(firefox已更改为记事本以进行测试,适应为neede)。此外,它还会检查.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