2016-12-06 65 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