幫助如果%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