帮助如果%DataLoc%中的文件少于20个,则尝试使用代码将文件移动到30个块中。我修改了代码Prior question。问题出在文件的FMove部分。无论我把什么放在线上,都会给我一个错误。 我希望它具有%HoldLoc%值,但是由于出现错误而导致硬编码。Windows批处理文件将文件夹中的X个文件移动到文件夹
环境是Windows 2008 R2服务器。
变化我已经尝试了下面的那些以及括号中的引号和引号。
FOR%F IN(%HoldLoc%) FOR%F IN(%% HOLDLOCK%) FOR%F IN(C:\播放\暂停* .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:>
>
我试过,但它不工作。我更新了文本,因为我需要在路径中包含空格,但试图将其缩小到最简单的位置以查找错误。我相信这是一件简单的事情,但我没有看到它。与此更新环路返回的错误: 组SrcCount = 0 组SrcMax = 30 回波%HoldLoc% FOR %% G IN(C:\数据\ ** TMP)DO IF SrcCount! LSS%SrcMax%( \t SET/A SrcCount + = 1 \t移动/ Y%G “%DataLoc%” \t) 现在是: FOR%F IN(C:\播放\保持\ *。 tmp)DO IF!SrcCount! LSS%SrcMax%( – John 2012-02-03 11:42:47
OK,对不起,这是代码和DID帮助,但我仍然错过了一些东西 FOR/F %% G IN('DIR/B%HoldLoc%\ *。tmp')DO IF!SrcCount!LSS%SrcMax%( \t SET/A SrcCount + = 1 \t移动/ Y%G %% DataLoc% \t) 转到退出 ,但它是不给出的路径的源: C: \ Play \ Ho ld> set SrcMax = 30 C:\ Play \ Ho ld> FOR/F%G IN('DIR/BC:\ play \ H old \ *。tmp')DO IF!SrcCount! LSS 30( SET/A SrcCount + = 1 move/y C:\ play \ D ata ) 系统找不到指定的文件。 C:\ Play \ Ho ld> REM echo!SrcCount!移动/ y DataLoc“ C:\ Play \ Ho ld> goto退出 – John 2012-02-03 11:52:30
@John:1)用''/'%'GIN('DIR/B')将'%HoldLoc%*。 2)在'move'命令所在行:2.1)将'%G'改为'%% G'; 2.2)将'%% G'改为double引号2.3)在'%% DataLoc%'开头删除一个额外的'%'; 2.4)用''DataLoc%''在双引号中括起来,结果命令为:'move/y'%% G“”%DataLoc %“'。 – 2012-02-03 14:51:04