批处理 – 有没有办法批量同步锁定txt文件?

批处理 – 有没有办法批量同步锁定txt文件?,第1张

概述我需要创建一个批处理文件,使用tracert命令跟踪一些ip,并将跟踪写入txt文件.我希望它快,所以我想为每个跟踪启动一个新命令,使所有跟踪请求立即启动. 有我的ping.bat: @echo offset saveUnrechableLocation=..\pingUnreachableInfo\pingUnrechableInfoDB.txtset IpListLocation=..\i 我需要创建一个批处理文件,使用tracert命令跟踪一些ip,并将跟踪写入txt文件.我希望它快,所以我想为每个跟踪启动一个新命令,使所有跟踪请求立即启动.

有我的Ping.bat:

@echo offset saveUnrechableLocation=..\PingUnreachableInfo\PingUnrechableInfoDB.txtset IpListLocation=..\ipInfo\all_DB_ip.txtset reachableLocation=..\PingRechableInfo\RechableIp\PingRechableInfoDB.txtset trace=..\PingRechableInfo\tracert\tracertDB.txtset numberOfPings=1@echo Pinging DB > %saveUnrechableLocation%copy /y Nul %reachableLocation% > Nulcopy /y Nul %trace% > Nulfor /F "tokens=*" %%A in (%IpListLocation%) do (    Ping -n %numberOfPings% %%A | find "TTL=" >nul     if errorlevel %numberOfPings% (        @echo %%A not rechable >> %saveUnrechableLocation%    )     if not errorlevel %numberOfPings% (    @echo %%A >> %reachableLocation%    start trace.bat %trace% %%A    ))

和trace.bat看起来像这样:

@echo offset saveLocation=%~1set ip=%~2tracert %ip% >> %saveLocation%exit

问题是,当我尝试使用它时,我遇到了这个问题:

the process cannot access the file because it is being used by another process

我该怎么做才能解决这个问题?谢谢!

解决方法 windows重定向不允许多个进程同时打开相同的文件以进行写访问.写 *** 作必须序列化.这可以通过批处理来完成,如 https://stackoverflow.com/a/9344547/1012053所示.但是,我不认为该解决方案对您的情况有帮助.

每个tracert进程都需要相当长的时间,并且必须在整个时间内重定向输出.但是您希望同时运行多个进程,所有输出都重定向到同一个文件.即使你要使它工作,输出也是交错的,你将无法弄清楚这一切意味着什么.

我建议将每个tracert输出重定向到一个唯一的文件.您可以将ip地址合并到输出文件名中,您可以使用我展示的技术在每个过程完成后合并文件.

请注意,无需传递输出位置.每个子进程都可以访问跟踪变量,因此可以轻松地重定向到正确的位置.

Ping.bat更改的大纲

...set trace=..\PingRechableInfo\tracert\tracertDB...start trace.bat %%A...

修改了trace.bat

@echo offtracert %1 >%trace%_%1.txt  %= Redirect TRACERT to unique temp file =%:merge2>nul (  %= HIDe error messages insIDe the outer parentheses =%  >>%trace%.txt (  %= Attempt stdout redirection - Fails if already locked =%    type %trace%_%1.txt  %= Write the temp file to the merge file =%    (call )  %= Clear any error that TYPE may have generated =%  )) || goto :merge  %= Loop back and try again if stdout redirection Failed =%del %trace%_%1.txt  %= Delete the temporary file =%exit

没有评论的缩短形式可能如下所示:

@echo offtracert %1 >%trace%_%1.txt:merge2>nul (>>%trace%.txt (type %trace%_%1.txt&(call )))||goto :mergedel %trace%_%1.txtexit
总结

以上是内存溢出为你收集整理的批处理 – 有没有办法批量同步锁定txt文件?全部内容,希望文章能够帮你解决批处理 – 有没有办法批量同步锁定txt文件?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1086944.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存