Batch file 批处理错误-“;无法访问此进程,因为另一进程正在使用该文件;

Batch file 批处理错误-“;无法访问此进程,因为另一进程正在使用该文件;,batch-file,Batch File,在ping主机文件名列表后,我试图运行一个文件以获取IP 当我尝试运行它时,我得到一个错误:“由于文件正被另一个进程使用,因此无法访问此进程” 我能做些什么来修复它 @ECHO OFF COLOR 1f :HEADER CLS ECHO ------------------------------------------------------------------------------- ECHO AUTHOR: Levon Becker ECHO T

在ping主机文件名列表后,我试图运行一个文件以获取IP

当我尝试运行它时,我得到一个错误:“由于文件正被另一个进程使用,因此无法访问此进程”

我能做些什么来修复它

@ECHO OFF
COLOR 1f

:HEADER
CLS
ECHO    -------------------------------------------------------------------------------
ECHO    AUTHOR:         Levon Becker 
ECHO    TITLE:          Ping-List
ECHO    LAST CHANGE:    04/08/2010
ECHO    VERSION:        1.002
ECHO    LINK:           http://wiki.bonusbits.com/main/BatchScripts:Ping_List
ECHO    ------------------------------------------------------------------------------- 
ECHO.
PAUSE

:NOTES
REM     +The text file with your list of hostnames should be named hostlist.txt
REM     +The hostnames can be seperated by a comma or carriage return
REM     +The output file will be a text file named PingResults.txt
REM     +The output file is setup to be comma delimited for easy import to Excel
REM     +Changed output file to be csv

REM Delete the output file if it exists from a previous run.
IF EXIST "PingResults.txt" del /q PingResults.txt

REM Delete the temp file.
IF EXIST "pinglog" del /q pinglog

REM Description Header for top row in Excel 
ECHO Hostname,IP from Ping,Ping Status,Data of Ping,Time of Ping > PingResults.csv

REM Pull hostnames from text file until the end of the text file list
for /f "tokens=* delims=," %%I in (hostlist.txt) do call :sub1 %%I
goto :eof

:sub1

REM Display in the command window which hostname is being processed so we know
REM something is happening.
ECHO    %1

REM Ping the current hostname set as %1 and redirect the output to pinglog file.
ping -a -n 1 -w 500 %1 > pinglog

PAUSE

SET status=UNKNOWN

find /i "unknown host" < pinglog > nul
if not errorlevel 1 set status=UNKNOWN HOST

find /i "could not find host" < pinglog > nul
if not errorlevel 1 set status=HOST NOT FOUND

find /i "reply" < pinglog > nul
if not errorlevel 1 set status=UP

find /i "expired in transit" < pinglog > nul
if not errorlevel 1 set status=EXPIRED IN TRANSIT

find /i "Request timed out" < pinglog > nul
if not errorlevel 1 set status=DOWN

PAUSE

SET PINGIP=NO IP

REM Pull the IP address of the line that has Pinging in it and IP between []
FOR /F "tokens=1,2 delims=[]" %%A IN ('FIND "Pinging" pinglog') DO IF NOT "%%B"=="" SET PINGIP=%%B

REM Append line of gathered information including the hostname from the source.
REM No spaces so it falls into Excel easier
>> PingResults.csv echo %*,%PINGIP%,%status%,%DATE%,%TIME%

REM Delete the temp file.
IF EXIST "pinglog" del /q pinglog
PAUSE

goto :eof

COLOR 1a
CLS
ECHO.
ECHO    *********************************************
ECHO    *********************************************
ECHO    **                                         **
ECHO    **           PROCESS COMPLETED!            **
ECHO    **                                         **
ECHO    ** The Output Filename is PingResults.txt  **
ECHO    **                                         **
ECHO    *********************************************
ECHO    *********************************************
ECHO.
ECHO.
PAUSE

:END
exit
@ECHO关闭
颜色1f
:标题
CLS
回音-------------------------------------------------------------------------------
ECHO作者:Levon Becker
回音标题:Ping列表
回声上次更改:2010年8月4日
回声版本:1.002
回音链接:http://wiki.bonusbits.com/main/BatchScripts:Ping_List
回声------------------------------------------
回声。
暂停
:附注
REM+包含主机名列表的文本文件应命名为hostlist.txt
REM+主机名可以用逗号或回车符分隔
REM+输出文件将是一个名为PingResults.txt的文本文件
REM+输出文件设置为逗号分隔,便于导入Excel
REM+将输出文件更改为csv
REM删除上次运行时存在的输出文件。
如果存在“PingResults.txt”del/q PingResults.txt
REM删除临时文件。
如果存在“pinglog”del/q pinglog
Excel中顶行的REM描述标题
回显主机名、来自Ping的IP、Ping状态、Ping数据、Ping时间>PingResults.csv
REM从文本文件中提取主机名,直到文本文件列表结束
对于(hostlist.txt)中的/f“tokens=*delims=,”%%I,请调用:sub1%%I
后藤:eof
:sub1
REM在命令窗口中显示正在处理的主机名,以便我们知道
有事发生了。
回显%1
REM Ping将当前主机名设置为%1,并将输出重定向到pinglog文件。
ping-a-n1-w500%1>pinglog
暂停
设置状态=未知
查找/i“未知主机”nul
如果不是错误级别1,则设置状态=未知主机
查找/i“找不到主机”nul
如果没有错误级别1设置状态=找不到主机
查找/i“回复”nul
如果不是错误级别1设置状态=启动
查找/i“在传输中过期”nul
如果不是错误级别1,则设置状态=运输中过期
查找/i“请求超时”nul
如果不是错误级别1,则设置状态=下降
暂停
设置PINGIP=无IP
REM拉取包含ping的线路的IP地址,IP在[]之间
对于/F“tokens=1,2 delims=[]”中的%%A('FIND“Pinging”pinglog'),如果不是“%%B”==”,请设置PINGIP=%%B
REM追加收集的信息行,包括来自源的主机名。
REM没有空格,因此更容易进入Excel
>>PingResults.csv echo%*,%PINGIP%,%status%,%DATE%,%TIME%
REM删除临时文件。
如果存在“pinglog”del/q pinglog
暂停
后藤:eof
颜色1a
CLS
回声。
回音*********************************************
回音*********************************************
回声****
回声**过程已完成**
回声****
ECHO**输出文件名为PingResults.txt**
回声****
回音*********************************************
回音*********************************************
回声。
回声。
暂停
:结束
出口

我敢打赌,您试图删除/写入的文件已被另一个程序打开。可能是记事本?

我会尝试“绕过echo和“>”之间的长线,我认为逗号“,”可能是个问题。请你缩小错误范围,我看不懂这堵代码墙。