【发布时间】:2012-02-03 04:57:31
【问题描述】:
如果%DataLoc% 中的文件少于 20 个,我正在尝试使用批处理文件以 30 个块为单位移动文件。我从a prior question 修改了代码。问题出在文件的FMove 部分。无论我在for 行中输入什么内容,都会出现错误。
我希望它具有 %HoldLoc% 值,但由于出现错误而一直在对其进行硬编码。
环境为 Windows 2008 R2 服务器。
我尝试过的变体,以及括号中是否有引号:
FOR %F IN (%HoldLoc%)
FOR %F IN (%%HoldLock%)
FOR %F IN (c:\Play\hold\*.tmp)
我的代码:
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
echo on
set DataMax=20
set DataLoc=C:\Play\Data
Set HoldLoc=C:\Play\Hold
set count=0
FOR /F %%a in ('DIR /B %DataLoc%\*.tmp') do set /A count=count+1
if %count% GEQ %DataMax% (Goto Exit) else (GOTO FMove)
:FMove
Echo Gather Top 30 files
set SrcCount=0
set SrcMax=30
echo %HoldLoc%
FOR %F IN (c:\Play\hold\*.tmp) DO IF !SrcCount! LSS %SrcMax% (
SET /A SrcCount += 1
move /y %F "%DataLoc%"
)
问题是我在输出窗口中得到了这个,为什么看不到C?
C:>set /A count=count+1
C:>if 19 GEQ 20 (Goto Exit ) else (GOTO FMove )
C:>Echo Gather Top 30 files
Gather Top 30 files
C:>set SrcCount=0
C:>set SrcMax=30
C:>echo C:\Play\Hold
C:\Play\Hold
\Play\hold\*.tmp) was unexpected at this time.
C:>FOR \Play\hold\*.tmp) DO IF !SrcCount! LSS 30 (
C:>
【问题讨论】:
标签: batch-file