[英]Batch File to check Folder continuously for new CSV files , renaming them one after another and start Firefox with current File
批处理文件应连续扫描某个文件夹中是否有新的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也不应一次启动多个窗口/实例。
我希望你能帮助我。
问候,
开普勒
它应该按照您指示的顺序执行操作,并按照日期顺序遍历目录,并将* 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.