2016-12-06 60 views
0

我想收集具有「_CPU2」數據的文件夾名稱爲collect_data的數據。 我的批處理創建一個目錄,表示文件被複制,但目錄是空的。請給我指出我的錯誤,而我所推薦的改善。FORFILES +批量複製不會收集我需要的數據

if not exist "%~dp0\collected_data" MKDIR collected_data 
SET data_folder="%~dp0%collected_data" 

FORFILES /M *_CPU2* /S /C "cmd /c COPY @file %data_folder% 
+0

是否告訴你有多少文件被複制?你有沒有嘗試在所有行前添加一個'echo'來查看哪些命令被生成? – geisterfurz007

+0

你實際上不需要'if exists'行,只需在'set'命令行後寫'2> nul mkdir「%data_folder%」';如果該目錄已經存在,'2> nul'部分將抑制錯誤消息... – aschipfl

回答

1

也許是因爲你是在遞歸到你會得到更好的建議使用完整路徑的子目錄,而不僅僅是文件名:

PAUSE 
SET "data_folder=%~dp0collected_data" 
IF NOT EXIST "%data_folder%\" MKDIR "%data_folder%" 
FORFILES /M *_CPU2* /S /C "CMD /C COPY @path 0x22%data_folder%0x22" 
PAUSE 
+0

謝謝。你真是太完美了!什麼意思是「0x22」? – sgerodes

+0

它是雙引號的十六進制代碼,它被認爲是forfiles命令行中的一個特殊字符。 – Compo