【发布时间】:2015-04-08 18:07:14
【问题描述】:
在批处理文件中遇到以下问题...
问题:我创建了一个批处理脚本来检查文件夹位置中是否存在文件,如果存在文件,它会将 PC 名称(标记为资产)写入日志文件。但是,在扫描 99 台 PC 后,它会挂起大约 20 秒,然后再扫描几台并挂起。我需要想办法让它顺利运行。
性能表明处理器确实达到峰值。我试过从另一个低优先级的批处理文件中调用它,结果相同。
所有 PC 都命名为“ABC”,后跟 4 个数字。
下面是完整的代码,因为我不知道焦点应该在哪里。如果有更合适的编辑,我很乐意提供帮助。
cls
@echo off
echo Set range of asset tags to scan:
:min
echo:
set /p min="Enter lowest asset number to scan (number only): "
if not defined min goto :min
if %min% lss 1000 (
msg * Asset must be 4 digits
goto :min
)
if %min% gtr 5000 (
msg * Min asset out of range
goto :min
)
:max
echo:
set /p max="Enter highest asset number to scan (number only): "
if not defined max goto :max
if %max% gtr 5000 (
msg * Max asset out of range
goto :max
)
if %max% lss %min% (
msg * Max cannot be lower than min
goto :max
)
set /a max=%max%+1
@echo off
REM Count Logic
set count=%min%
REM sets date/time log stamp to consistent value. If done per line, the seconds change will create multiple files.
set name=Scan_Results_%DATE:~-4%%DATE:~4,2%%DATE:~7,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6 ,2%%TIME:~10,2%
REM creates a date and time stamped log file from location batch file is run
echo Dictation Scan from %Date% %Time% > %name%.txt
@echo off
:loop
@echo off
set /a count=%count%
echo Asset tag being scanned: %count%
@echo off
REM "ABC" to count as string to inject in filepath
set asset=abc%count%
ping -n 1 %asset%.domain.com > NUL
IF ERRORLEVEL 0 (goto :scan) ELSE goto :No
:scan
REM IF LOGIC (If files are detected DO X or else Y [loop until end])
@echo off
for /F %%i in ('dir /b "\\%asset%.domain.com\C$\Program Files\Speech Machines\SubSpace\temp\*.*"') do (
goto :Yes
)
goto :No
:Yes
echo writing asset to log file
echo %asset% >> %name%.txt
set /a count=%count%+1
goto :iteration
:No
set /a count=%count%+1
goto :iteration
:iteration
REM This is the highest asset tag number that you want to scan
if not #%count%#==#%max%# goto loop
goto final
:final
echo %found% >> %name%.txt
@echo SCANNING COMPLETE.
Pause
exit
【问题讨论】:
标签: batch-file cmd